User Tools

Site Tools


технология_terraform

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
технология_terraform [2026/09/26 10:41]
val [terraform-provider-virtualbox]
технология_terraform [2026/09/28 10:33] (current)
val [terraform-provider-virtualbox]
Line 13: Line 13:
   * [[https://​stackoverflow.com/​questions/​69860280/​how-to-properly-reset-terraform-default-tfstate|How to properly reset Terraform default tfstate?]]   * [[https://​stackoverflow.com/​questions/​69860280/​how-to-properly-reset-terraform-default-tfstate|How to properly reset Terraform default tfstate?]]
  
 +  * Вебинар:​ [[On-premise Terraform|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]]
 ===== Установка ===== ===== Установка =====
  
Line 32: Line 33:
   * https://​mirror.selectel.ru/​3rd-party/​hashicorp-releases/​terraform/​1.9.2/​terraform_1.9.2_windows_amd64.zip   * https://​mirror.selectel.ru/​3rd-party/​hashicorp-releases/​terraform/​1.9.2/​terraform_1.9.2_windows_amd64.zip
  
 +  * [[Материалы по Windows#​Установить PATH]]
 +<​code>​
 +PS C:​\Users\Administrator>​ $Env:​PATH ​
 +...;​C:​\terraform\;​...
 +</​code>​
 ===== terraform-provider-libvirt ===== ===== terraform-provider-libvirt =====
  
Line 375: Line 381:
  
   * https://​github.com/​terra-farm/​terraform-provider-virtualbox   * https://​github.com/​terra-farm/​terraform-provider-virtualbox
 +
 +  * [[Материалы по Windows#​Установить PATH]]
 +<​code>​
 +PS C:​\Users\Administrator\nodes>​ $Env:PATH
 +...;​C:​\Program Files\Oracle\VirtualBox;​...
 +
 +PS C:​\Users\Administrator\nodes>​ $env:​TF_LOG="​DEBUG"​
 +
 +PS C:​\Users\Administrator\nodes>​ notepad providers.tf
 +</​code><​code>​
 +terraform {
 +  required_providers {
 +    virtualbox = {
 +      source ​ = "​terra-farm/​virtualbox"​
 +      version = "​0.2.2-alpha.1"​
 +    }
 +  }
 +}
 +
 +provider "​virtualbox"​ {
 +}
 +</​code><​code>​
 +PS C:​\Users\Administrator\nodes>​ mkdir terraform.d\plugins\registry.terraform.io\terra-farm\virtualbox\0.2.2-alpha.1\windows_amd64\
 +</​code>​
   * https://​github.com/​terra-farm/​terraform-provider-virtualbox/​releases/​download/​v0.2.2-alpha.1/​terraform-provider-virtualbox_0.2.2-alpha.1_windows_amd64.zip   * https://​github.com/​terra-farm/​terraform-provider-virtualbox/​releases/​download/​v0.2.2-alpha.1/​terraform-provider-virtualbox_0.2.2-alpha.1_windows_amd64.zip
 +  * [[#​Управление проектом]]
 +<​code>​
 +PS C:​\Users\Administrator\nodes>​ notepad main.tf
 +</​code><​code>​
 +resource "​virtualbox_vm"​ "​node"​ {
 +  count     = 3
 +  name      = format("​node-%02d",​ count.index + 1)
 +  image     = "​https://​val.bmstu.ru/​unix/​HashiCorp/​debian12-generic.box"​
 +  cpus      = 2
 +  memory ​   = "4096 mib"
  
 +  network_adapter {
 +    type           = "​hostonly"​
 +    host_interface = "​VirtualBox Host-Only Ethernet Adapter"​
 +  }
 +
 +  provisioner "​file"​ {
 +    source ​     = "​${path.module}/​pre_network.sh"​
 +    destination = "/​home/​vagrant/​pre_network.sh"​
 +
 +    connection {
 +      type     = "​ssh"​
 +      user     = "​vagrant"​
 +      password = "​vagrant"​
 +      host     = self.network_adapter.0.ipv4_address
 +    }
 +  }
 +  provisioner "​remote-exec"​ {
 +
 +    #script = "​${path.module}/​pre_network.sh"​
 +
 +    inline = [
 +      "chmod +x /​home/​vagrant/​pre_network.sh",​
 +      "/​home/​vagrant/​pre_network.sh ${count.index + 1}"
 +    ]
 +
 +    connection {
 +      type     = "​ssh"​
 +      user     = "​vagrant"​
 +      password = "​vagrant"​
 +      host     = self.network_adapter.0.ipv4_address
 +    }
 +  }
 +}
 +</​code><​code>​
 +PS C:​\Users\Administrator\nodes>​ notepad outputs.tf
 +</​code><​code>​
 +#output "​IPAddr"​ {
 +#  value = element(virtualbox_vm.node.*.network_adapter.0.ipv4_address,​ 1)
 +#}
 +#output "​IPAddr_2"​ {
 +#  value = element(virtualbox_vm.node.*.network_adapter.0.ipv4_address,​ 2)
 +#}
 +output "​node_ips"​ {
 +  value       = [for vm in virtualbox_vm.node : vm.network_adapter.0.ipv4_address]
 +  description = "IP for VM"
 +}
 +</​code>​
 +  * [[#​Управление проектом]]
 <​code>​ <​code>​
-PS C:​\Users\Administrator\terraform> mkdir terraform.d\plugins\registry.terraform.io\terra-farm\virtualbox\0.2.2-alpha.1\windows_amd64\+PS C:​\Users\Administrator\nodes> start notepad++ pre_network.sh 
 +</​code>​ 
 +  * Правка->​Формат Конца Строк-> Преобразовать в Unix (LF) 
 +<​code>​ 
 +#!/bin/bash
  
-PS C:​\Users\Administrator\terraform> ​$env:TF_LOG="DEBUG"+#!!! CHANGE IT !!! 
 +X=13 
 + 
 +N=$1 
 + 
 +echo '​vagrant:strongpassword'​ | sudo /​usr/​sbin/​chpasswd 
 + 
 +sudo hostnamectl hostname node$N.corp$X.un 
 + 
 +sudo tee /​etc/​network/​interfaces <<​EOF 
 +auto lo 
 +iface lo inet loopback 
 + 
 +auto eth0 
 +iface eth0 inet static 
 +    address 192.168.$X.20$N 
 +    netmask 255.255.255.0 
 + gateway 192.168.$X.1 
 +EOF 
 + 
 +sudo rm -f /​etc/​resolv.conf && sudo tee /​etc/​resolv.conf <<​EOF 
 +search corp$X.un 
 +nameserver 192.168.$X.10 
 +EOF 
 + 
 +sudo tee /etc/hosts <<​EOF 
 +127.0.0.1 ​              ​localhost 
 +192.168.$X.20$N node$N.corp$X.un node$N 
 +EOF 
 + 
 +sudo timedatectl set-timezone Europe/​Moscow 
 + 
 +echo "​net.ipv4.ip_forward=1" ​| sudo tee /​etc/​sysctl.d/​20-my-forward.conf 
 + 
 +(echo '"\e[A": history-search-backward';​ echo '"​\e[B":​ history-search-forward'​) | sudo tee -a /​etc/​inputrc 
 + 
 +sudo shutdown -r +1
 </​code>​ </​code>​
  
 +  * [[#​Управление проектом]]
 ===== Провайдеры Selectel и OpenStack ===== ===== Провайдеры Selectel и OpenStack =====
  
технология_terraform.1790408468.txt.gz · Last modified: 2026/09/26 10:41 by val