terraform_libvirt
Differences
This shows you the differences between two versions of the page.
| terraform_libvirt [2025/07/26 17:09] – - Imported by DokuWiki Advanced Plugin wikiadm | terraform_libvirt [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Terraform KVM ====== | ||
| - | ===== Install Terraform ===== | ||
| - | <file bash> | ||
| - | $ wget https:// | ||
| - | $ sudo unzip terraform_1.3.2_linux_amd64.zip -d / | ||
| - | </ | ||
| - | ===== Install provider ===== | ||
| - | <file bash> | ||
| - | $ mkdir ~/ | ||
| - | $ wget https:// | ||
| - | $ unzip terraform-provider-libvirt_0.6.14_linux_amd64.zip | ||
| - | $ rm terraform-provider-libvirt_0.6.14_linux_amd64.zip | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | $ mkdir ~/monprojet && cd ~/monprojet | ||
| - | $ terraform init | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | $ terraform init | ||
| - | </ | ||
| - | |||
| - | <file bash> | ||
| - | |||
| - | </ | ||
| - | |||
| - | Exemplos | ||
| - | <file tf main.tf> | ||
| - | $ cat main.tf | ||
| - | terraform { | ||
| - | required_providers { | ||
| - | libvirt = { | ||
| - | source | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | |||
| - | provider " | ||
| - | uri = " | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | pool = " | ||
| - | source = " | ||
| - | format = " | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | base_volume_id = libvirt_volume.os_image_ubuntu.id | ||
| - | pool = " | ||
| - | size = 34359738368 # 1073741824*32 ou 1024*1024*1024*32 | ||
| - | } | ||
| - | |||
| - | data " | ||
| - | template = file(" | ||
| - | } | ||
| - | |||
| - | # Use CloudInit to add our ssh-key to the instance | ||
| - | resource " | ||
| - | name = " | ||
| - | user_data = data.template_file.user_data.rendered | ||
| - | pool = " | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | memory = " | ||
| - | vcpu = 2 | ||
| - | |||
| - | cpu { | ||
| - | mode = " | ||
| - | } | ||
| - | |||
| - | cloudinit = libvirt_cloudinit_disk.cloudinit_ubuntu_resized.id | ||
| - | |||
| - | network_interface { | ||
| - | network_name = " | ||
| - | wait_for_lease = true | ||
| - | } | ||
| - | |||
| - | console { | ||
| - | type = " | ||
| - | target_port = " | ||
| - | target_type = " | ||
| - | } | ||
| - | |||
| - | console { | ||
| - | type = " | ||
| - | target_type = " | ||
| - | target_port = " | ||
| - | } | ||
| - | |||
| - | disk { | ||
| - | volume_id = libvirt_volume.disk_ubuntu_resized.id | ||
| - | } | ||
| - | |||
| - | graphics { | ||
| - | type = " | ||
| - | listen_type = " | ||
| - | autoport = true | ||
| - | } | ||
| - | } | ||
| - | |||
| - | output " | ||
| - | value = libvirt_domain.ubuntu-terraform.network_interface[0].addresses[0] | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Cloud init ===== | ||
| - | <file bash> | ||
| - | $ mkpasswd --method=SHA-512 | ||
| - | Password: | ||
| - | $6$R4tXC5apTx$f4WVAylB/ | ||
| - | </ | ||
| - | |||
| - | <file cfg cloud_init.cfg> | ||
| - | $ cat cloud_init.cfg | ||
| - | # | ||
| - | users: | ||
| - | - name: suporte | ||
| - | gecos: " | ||
| - | sudo: ALL=(ALL) NOPASSWD: | ||
| - | home: / | ||
| - | shell: /bin/bash | ||
| - | lock_passwd: | ||
| - | ssh-authorized-keys: | ||
| - | - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNYC9NDiLb8IZK/ | ||
| - | ssh_pwauth: true | ||
| - | chpasswd: | ||
| - | list: | | ||
| - | | ||
| - | expire: False | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Multiple virtual machine ===== | ||
| - | <file bash main.tf> | ||
| - | $ cat main.tf | ||
| - | terraform { | ||
| - | required_providers { | ||
| - | libvirt = { | ||
| - | source = " | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | |||
| - | provider " | ||
| - | uri = " | ||
| - | #alias = " | ||
| - | #uri = " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <file bash providers.tf> | ||
| - | $ cat providers.tf | ||
| - | resource " | ||
| - | name = " | ||
| - | pool = " | ||
| - | #source = " | ||
| - | source = " | ||
| - | format = " | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | base_volume_id = libvirt_volume.os_image_ubuntu.id | ||
| - | pool = " | ||
| - | size = 34359738368 | ||
| - | count = 2 | ||
| - | } | ||
| - | |||
| - | data " | ||
| - | template = file(" | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | user_data = data.template_file.user_data.rendered | ||
| - | pool = " | ||
| - | } | ||
| - | |||
| - | resource " | ||
| - | name = " | ||
| - | memory = " | ||
| - | vcpu = 2 | ||
| - | |||
| - | cpu { | ||
| - | mode = " | ||
| - | } | ||
| - | |||
| - | cloudinit = libvirt_cloudinit_disk.cloudinit_ubuntu_resized.id | ||
| - | |||
| - | network_interface { | ||
| - | network_name | ||
| - | wait_for_lease = true | ||
| - | } | ||
| - | |||
| - | count = 2 | ||
| - | |||
| - | console { | ||
| - | type = " | ||
| - | target_port = " | ||
| - | target_type = " | ||
| - | } | ||
| - | |||
| - | console { | ||
| - | type = " | ||
| - | target_type = " | ||
| - | target_port = " | ||
| - | } | ||
| - | |||
| - | disk { | ||
| - | volume_id = element(libvirt_volume.volume.*.id, | ||
| - | } | ||
| - | |||
| - | graphics { | ||
| - | type = " | ||
| - | listen_type = " | ||
| - | autoport | ||
| - | } | ||
| - | } | ||
| - | |||
| - | output " | ||
| - | value = libvirt_domain.ubuntu.*.network_interface.0.addresses | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <file bash cloud_init.cfg> | ||
| - | $ cat cloud_init.cfg | ||
| - | # | ||
| - | users: | ||
| - | - name: suporte | ||
| - | gecos: " | ||
| - | sudo: ALL=(ALL) NOPASSWD: | ||
| - | home: / | ||
| - | shell: /bin/bash | ||
| - | lock_passwd: | ||
| - | ssh-authorized-keys: | ||
| - | - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNYC9NDiLb8IZK/ | ||
| - | ssh_pwauth: true | ||
| - | chpasswd: | ||
| - | list: | | ||
| - | | ||
| - | expire: False | ||
| - | </ | ||
| - | ===== Referências ===== | ||
| - | |||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
terraform_libvirt.1753560544.txt.gz · Last modified: by wikiadm
