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:47]
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
-  * 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 
  
 +  * [[Материалы по Windows#​Установить PATH]]
 <​code>​ <​code>​
-PS C:​\Users\Administrator\nodes>​ $Env:PATH ...;​C:​\Program Files\Oracle\VirtualBox;​...+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\ 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
 +  * [[#​Управление проектом]]
 +<​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"
  
-PS C:​\Users\Administrator\nodes> ​$env:TF_LOG="DEBUG"+  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\nodes>​ start notepad++ pre_network.sh
 +</​code>​
 +  * Правка->​Формат Конца Строк->​ Преобразовать в Unix (LF)
 +<​code>​
 +#!/bin/bash
  
 +#!!! 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>​
 +
 +  * [[#​Управление проектом]]
 ===== Провайдеры Selectel и OpenStack ===== ===== Провайдеры Selectel и OpenStack =====
  
технология_terraform.1790408845.txt.gz · Last modified: 2026/09/26 10:47 by val