init libvirt and stack

This commit is contained in:
Antoine 2020-07-28 23:45:32 +02:00
bovenliggende 93ef8c8ecd
commit 9bc7773864
Getekend door: antoine
GPG sleutel-ID: 098FB66FC0475E70
11 gewijzigde bestanden met toevoegingen van 261 en 219 verwijderingen

Bestand weergeven

@ -1,55 +0,0 @@
provider "libvirt" {
uri = "qemu+tcp://127.0.0.1/system"
# uri = "qemu+ssh://root@192.168.100.10/system"
}
resource "libvirt_volume" "centos7-qcow2" {
name = "centos7.qcow2"
pool = "default"
source = "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2"
format = "qcow2"
}
data "template_file" "user_data" {
template = "${file("${path.module}/cloud_init.cfg")}"
}
# Use CloudInit to add the instance
resource "libvirt_cloudinit_disk" "commoninit" {
name = "commoninit.iso"
user_data = data.template_file.user_data.rendered
}
# Define KVM domain to create
resource "libvirt_domain" "db1" {
name = "db1"
memory = "1024"
vcpu = 1
network_interface {
network_name = "default"
}
disk {
volume_id = libvirt_volume.centos7-qcow2.id
}
cloudinit = libvirt_cloudinit_disk.commoninit.id
console {
type = "pty"
target_type = "serial"
target_port = "0"
}
graphics {
type = "spice"
listen_type = "address"
autoport = true
}
}
# Output Server IP
output "ip" {
value = libvirt_domain.db1.network_interface.0.addresses.0
}

Bestand weergeven

@ -0,0 +1,38 @@
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r
terraform {
required_version = ">= 0.12"
required_providers {
libvirt = ">= 0.0.0"
}
}
provider "libvirt" {
uri = "qemu+tcp://127.0.0.1/system"
# uri = "qemu+ssh://root@192.168.100.10/system"
}
resource "libvirt_pool" "pool_1" {
name = "pool_1"
type = "dir"
path = "/var/lib/libvirt/pool"
}
# -------- volume disk --------
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/volume.html.markdown
resource "libvirt_volume" "centos7_qcow2" {
name = "centos7.qcow2"
pool = "default"
source = "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2"
format = "qcow2"
}
resource "libvirt_volume" "debian_buster_qcow2" {
name = "debian-buster.qcow2"
pool = "default"
source = "https://cdimage.debian.org/cdimage/openstack/current/debian-10.4.3-20200610-openstack-amd64.qcow2"
format = "qcow2"
}

Bestand weergeven

@ -0,0 +1,79 @@
{
"version": 4,
"terraform_version": "0.12.28",
"serial": 203,
"lineage": "e57b8df5-87bd-3954-0ba8-9cbedff9b460",
"outputs": {},
"resources": [
{
"mode": "managed",
"type": "libvirt_pool",
"name": "pool_1",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"allocation": 69478645760,
"available": null,
"capacity": 73445531648,
"id": "3a205457-1e97-455a-8fe6-9ed621f7ba99",
"name": "pool_1",
"path": "/var/lib/libvirt/pool",
"type": "dir",
"xml": []
},
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "libvirt_volume",
"name": "centos7_qcow2",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"base_volume_id": null,
"base_volume_name": null,
"base_volume_pool": null,
"format": "qcow2",
"id": "/var/lib/libvirt/pool/default/centos7.qcow2",
"name": "centos7.qcow2",
"pool": "default",
"size": 8589934592,
"source": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2",
"xml": []
},
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "libvirt_volume",
"name": "debian_buster_qcow2",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"base_volume_id": null,
"base_volume_name": null,
"base_volume_pool": null,
"format": "qcow2",
"id": "/var/lib/libvirt/pool/default/debian-buster.qcow2",
"name": "debian-buster.qcow2",
"pool": "default",
"size": 2147483648,
"source": "https://cdimage.debian.org/cdimage/openstack/current/debian-10.4.3-20200610-openstack-amd64.qcow2",
"xml": []
},
"private": "bnVsbA=="
}
]
}
]
}

Bestand weergeven

@ -10,6 +10,9 @@ Setup libvirt provider for terraform [https://github.com/dmacvicar/terraform-pro
Provision compute into qemu/kvm with terraform and libvirt provider
`export LIBVIRT_DEFAULT_URI="qemu+tcp://127.0.0.1/system"`
`terraform init`
`terraform apply`

Bestand weergeven

@ -14,6 +14,9 @@ groups:
- whell: [antoine]
users:
# - name: root
# lock_passwd: false
# password: $1$SaltSalt$.SBI7klTdiInUnDK0/40g.
- name: antoine
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCuLVDINxqYow17v9oovyqG3Ok5mOa36U3f+D7CtY8cS7jZavx7A6h2DAtlNzzJl3AxRtk3JY1rmV2fhwB+lVA1S8WT61/qHZH+smjbt6YCp6/ICMKPR8tKtbFUnXn+o9tAhqa7cryWs2LerJasXaSUUguIb6Lr0teSM6enzmtNShjiUta+6HlN+M91n/tp4pjn+tvNUSFETg1JVX1DIG/6U43N8V+fu6xsN5ceoPNGpBpikP0ZYmKYdcPMqqcWJkkaLGwh/u4R98BUVSPor/OFaMw3IZ6Nr7yCdWPCe/8SvEkbd2iMQm5dQjqEFEJUyPwoE18lfM2VnVwlaKsFN9Cmu2J5H4w9qlkZCSGkLa6eckJ3dOHDf6PZO409jbU7sV5rEspuo4gWqEzx5l2YKnASxhy+hylCj+sYrgMcEo9XMVSSYgj5ynykr3LyxyaFklZEuVxXJUYrOVcVIRdkJu9cVnhj6LvaUHY1JqdbhOAjPpSIVqKLPUYJIMU5nVKOh53Dd/rXdOx6BQXiA44DGuvYvHMohK7rXA92Sau0Hbb30DDMkPSPDXknIB+anELGCCx6j8HC38FzJyqtvtrDsG6sc/D3UQGApAS0+O6FXeH+v2OiPhJjdQMwNl5YMrJt6AUBVZZAZtFgUlhhZXRbyhuUuhmWYmzsNbWX7N5pzgYPyQ== antoine@archlinux

50
stack/computes.tf Normal file
Bestand weergeven

@ -0,0 +1,50 @@
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/domain.html.markdown
# Define KVM domain to create
resource "libvirt_domain" "db1" {
name = "db1"
memory = "1024"
vcpu = 1
running = "false"
autostart = "true"
boot_device {
dev = ["hd", "network"]
}
network_interface {
network_name = "default"
# network_name = libvirt_network.private_network.name
}
disk {
volume_id = libvirt_volume.debian_buster_qcow2.id
}
# disk {
# volume_id = libvirt_volume.external_disk_1.id
# }
cloudinit = libvirt_cloudinit_disk.commoninit.id
console {
type = "pty"
target_type = "serial"
target_port = "0"
}
graphics {
type = "vnc"
listen_type = "address"
autoport = "true"
}
}
resource "libvirt_volume" "debian_buster_qcow2" {
name = "debian-buster.qcow2"
pool = "default"
source = "https://cdimage.debian.org/cdimage/openstack/current/debian-10.4.3-20200610-openstack-amd64.qcow2"
format = "qcow2"
}

43
stack/libvirtd.tf Normal file
Bestand weergeven

@ -0,0 +1,43 @@
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r
terraform {
required_version = ">= 0.12"
required_providers {
null = "~> 2.1"
template = "~> 2.1"
libvirt = ">= 0.0.0"
}
}
provider "libvirt" {
uri = "qemu+tcp://127.0.0.1/system"
# uri = "qemu+ssh://root@192.168.100.10/system"
}
data "template_file" "user_data" {
template = "${file("${path.module}/cloud_init.cfg")}"
}
# Use CloudInit to add the instance
resource "libvirt_cloudinit_disk" "commoninit" {
name = "commoninit.iso"
pool = "default"
user_data = data.template_file.user_data.rendered
}
resource "null_resource" "delay_10s" {
provisioner "local-exec" {
command = "sleep 10"
}
triggers = {
"before" = libvirt_domain.db1.id
}
}
# Output Server IP
output "ip" {
value = libvirt_domain.db1.network_interface
depends_on = [null_resource.delay_10s]
}

12
stack/networks.tf Normal file
Bestand weergeven

@ -0,0 +1,12 @@
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/network.markdown
resource "libvirt_network" "private_network" {
name = "private"
mode = "nat"
domain = "network.local"
addresses = ["10.17.3.0/24"]
autostart = true
dhcp {
enabled = true
}
}

8
stack/terraform.tfstate Normal file
Bestand weergeven

@ -0,0 +1,8 @@
{
"version": 4,
"terraform_version": "0.12.28",
"serial": 121,
"lineage": "67fe8f67-1e0d-4c6e-4440-3eac0ca3aadd",
"outputs": {},
"resources": []
}

25
stack/volumes.tf Normal file
Bestand weergeven

@ -0,0 +1,25 @@
# https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/volume.html.markdown
# -------- root disk use by compute --------
# ~> Tip: when provisioning multiple domains using the same base image, create a libvirt_volume for the base image and then define
# the domain specific ones as based on it. This way the image will not be modified and no extra disk space is going to be used for the base image.
resource "libvirt_volume" "my_root_centos" {
name = "my-root-centos"
base_volume_name = "centos7.qcow2"
# base_volume_id = libvirt_volume.centos7_qcow2.id
}
resource "libvirt_volume" "my_root_debian" {
name = "my-root-debian"
base_volume_name = "debian-buster.qcow2"
# base_volume_id = libvirt_volume.debian_buster_qcow2.id
}
resource "libvirt_volume" "external_disk_1" {
name = "external-disk-1"
# 10Gb
size = 10737418240
pool = "pool_1"
# pool = libvirt_pool.pool_1.name
}

Bestand weergeven

@ -1,164 +0,0 @@
{
"version": 4,
"terraform_version": "0.12.28",
"serial": 40,
"lineage": "e57b8df5-87bd-3954-0ba8-9cbedff9b460",
"outputs": {
"ip": {
"value": "192.168.122.156",
"type": "string"
}
},
"resources": [
{
"mode": "data",
"type": "template_file",
"name": "user_data",
"provider": "provider.template",
"instances": [
{
"schema_version": 0,
"attributes": {
"filename": null,
"id": "924d6b37ed35e7f71aa4793775cf6098a2dd31c5c3cdbfbcbd02cf4893f856cc",
"rendered": "#cloud-config\n# vim: syntax=yaml\n\n# ***********************\n# ---- documentation : \n# ---\u003e https://cloudinit.readthedocs.io/en/latest/topics/examples.html\n# ******************************\n\nssh_pwauth: False\nchpasswd:\n expire: False\n\ngroups:\n - whell: [antoine]\n\nusers:\n - name: antoine\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCuLVDINxqYow17v9oovyqG3Ok5mOa36U3f+D7CtY8cS7jZavx7A6h2DAtlNzzJl3AxRtk3JY1rmV2fhwB+lVA1S8WT61/qHZH+smjbt6YCp6/ICMKPR8tKtbFUnXn+o9tAhqa7cryWs2LerJasXaSUUguIb6Lr0teSM6enzmtNShjiUta+6HlN+M91n/tp4pjn+tvNUSFETg1JVX1DIG/6U43N8V+fu6xsN5ceoPNGpBpikP0ZYmKYdcPMqqcWJkkaLGwh/u4R98BUVSPor/OFaMw3IZ6Nr7yCdWPCe/8SvEkbd2iMQm5dQjqEFEJUyPwoE18lfM2VnVwlaKsFN9Cmu2J5H4w9qlkZCSGkLa6eckJ3dOHDf6PZO409jbU7sV5rEspuo4gWqEzx5l2YKnASxhy+hylCj+sYrgMcEo9XMVSSYgj5ynykr3LyxyaFklZEuVxXJUYrOVcVIRdkJu9cVnhj6LvaUHY1JqdbhOAjPpSIVqKLPUYJIMU5nVKOh53Dd/rXdOx6BQXiA44DGuvYvHMohK7rXA92Sau0Hbb30DDMkPSPDXknIB+anELGCCx6j8HC38FzJyqtvtrDsG6sc/D3UQGApAS0+O6FXeH+v2OiPhJjdQMwNl5YMrJt6AUBVZZAZtFgUlhhZXRbyhuUuhmWYmzsNbWX7N5pzgYPyQ== antoine@archlinux\n sudo: ['ALL=(ALL) NOPASSWD:ALL']\n shell: /bin/bash\n groups: wheel\n",
"template": "#cloud-config\n# vim: syntax=yaml\n\n# ***********************\n# ---- documentation : \n# ---\u003e https://cloudinit.readthedocs.io/en/latest/topics/examples.html\n# ******************************\n\nssh_pwauth: False\nchpasswd:\n expire: False\n\ngroups:\n - whell: [antoine]\n\nusers:\n - name: antoine\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCuLVDINxqYow17v9oovyqG3Ok5mOa36U3f+D7CtY8cS7jZavx7A6h2DAtlNzzJl3AxRtk3JY1rmV2fhwB+lVA1S8WT61/qHZH+smjbt6YCp6/ICMKPR8tKtbFUnXn+o9tAhqa7cryWs2LerJasXaSUUguIb6Lr0teSM6enzmtNShjiUta+6HlN+M91n/tp4pjn+tvNUSFETg1JVX1DIG/6U43N8V+fu6xsN5ceoPNGpBpikP0ZYmKYdcPMqqcWJkkaLGwh/u4R98BUVSPor/OFaMw3IZ6Nr7yCdWPCe/8SvEkbd2iMQm5dQjqEFEJUyPwoE18lfM2VnVwlaKsFN9Cmu2J5H4w9qlkZCSGkLa6eckJ3dOHDf6PZO409jbU7sV5rEspuo4gWqEzx5l2YKnASxhy+hylCj+sYrgMcEo9XMVSSYgj5ynykr3LyxyaFklZEuVxXJUYrOVcVIRdkJu9cVnhj6LvaUHY1JqdbhOAjPpSIVqKLPUYJIMU5nVKOh53Dd/rXdOx6BQXiA44DGuvYvHMohK7rXA92Sau0Hbb30DDMkPSPDXknIB+anELGCCx6j8HC38FzJyqtvtrDsG6sc/D3UQGApAS0+O6FXeH+v2OiPhJjdQMwNl5YMrJt6AUBVZZAZtFgUlhhZXRbyhuUuhmWYmzsNbWX7N5pzgYPyQ== antoine@archlinux\n sudo: ['ALL=(ALL) NOPASSWD:ALL']\n shell: /bin/bash\n groups: wheel\n",
"vars": null
}
}
]
},
{
"mode": "managed",
"type": "libvirt_cloudinit_disk",
"name": "commoninit",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"id": "/var/lib/libvirt/images/commoninit.iso;5f1da8d5-7b33-986f-3888-179eec23b9b3",
"meta_data": "",
"name": "commoninit.iso",
"network_config": "",
"pool": "default",
"user_data": "#cloud-config\n# vim: syntax=yaml\n\n# ***********************\n# ---- documentation : \n# ---\u003e https://cloudinit.readthedocs.io/en/latest/topics/examples.html\n# ******************************\n\nssh_pwauth: False\nchpasswd:\n expire: False\n\ngroups:\n - whell: [antoine]\n\nusers:\n - name: antoine\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCuLVDINxqYow17v9oovyqG3Ok5mOa36U3f+D7CtY8cS7jZavx7A6h2DAtlNzzJl3AxRtk3JY1rmV2fhwB+lVA1S8WT61/qHZH+smjbt6YCp6/ICMKPR8tKtbFUnXn+o9tAhqa7cryWs2LerJasXaSUUguIb6Lr0teSM6enzmtNShjiUta+6HlN+M91n/tp4pjn+tvNUSFETg1JVX1DIG/6U43N8V+fu6xsN5ceoPNGpBpikP0ZYmKYdcPMqqcWJkkaLGwh/u4R98BUVSPor/OFaMw3IZ6Nr7yCdWPCe/8SvEkbd2iMQm5dQjqEFEJUyPwoE18lfM2VnVwlaKsFN9Cmu2J5H4w9qlkZCSGkLa6eckJ3dOHDf6PZO409jbU7sV5rEspuo4gWqEzx5l2YKnASxhy+hylCj+sYrgMcEo9XMVSSYgj5ynykr3LyxyaFklZEuVxXJUYrOVcVIRdkJu9cVnhj6LvaUHY1JqdbhOAjPpSIVqKLPUYJIMU5nVKOh53Dd/rXdOx6BQXiA44DGuvYvHMohK7rXA92Sau0Hbb30DDMkPSPDXknIB+anELGCCx6j8HC38FzJyqtvtrDsG6sc/D3UQGApAS0+O6FXeH+v2OiPhJjdQMwNl5YMrJt6AUBVZZAZtFgUlhhZXRbyhuUuhmWYmzsNbWX7N5pzgYPyQ== antoine@archlinux\n sudo: ['ALL=(ALL) NOPASSWD:ALL']\n shell: /bin/bash\n groups: wheel\n"
},
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "libvirt_domain",
"name": "db1",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"arch": "x86_64",
"autostart": false,
"boot_device": [],
"cloudinit": "/var/lib/libvirt/images/commoninit.iso;5f1da8d5-7b33-986f-3888-179eec23b9b3",
"cmdline": [],
"console": [
{
"source_host": "127.0.0.1",
"source_path": "",
"source_service": "0",
"target_port": "0",
"target_type": "serial",
"type": "pty"
}
],
"coreos_ignition": null,
"cpu": null,
"description": "",
"disk": [
{
"block_device": "",
"file": "",
"scsi": false,
"url": "",
"volume_id": "/var/lib/libvirt/images/centos7.qcow2",
"wwn": ""
}
],
"emulator": "/usr/bin/qemu-system-x86_64",
"filesystem": [],
"firmware": "",
"fw_cfg_name": "opt/com.coreos/config",
"graphics": [
{
"autoport": true,
"listen_address": "127.0.0.1",
"listen_type": "address",
"type": "spice"
}
],
"id": "47a45870-bd85-4705-a835-3985a44e871e",
"initrd": "",
"kernel": "",
"machine": "pc",
"memory": 1024,
"metadata": null,
"name": "db1",
"network_interface": [
{
"addresses": [
"192.168.122.156"
],
"bridge": "",
"hostname": "",
"mac": "52:54:00:4E:19:24",
"macvtap": "",
"network_id": "a27a7ae4-4a14-4ac4-8c52-f7b44bcbb7f3",
"network_name": "default",
"passthrough": "",
"vepa": "",
"wait_for_lease": false
}
],
"nvram": [],
"qemu_agent": false,
"running": true,
"timeouts": null,
"vcpu": 1,
"video": [],
"xml": []
},
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9fQ==",
"dependencies": [
"libvirt_cloudinit_disk.commoninit",
"libvirt_volume.centos7-qcow2"
]
}
]
},
{
"mode": "managed",
"type": "libvirt_volume",
"name": "centos7-qcow2",
"provider": "provider.libvirt",
"instances": [
{
"schema_version": 0,
"attributes": {
"base_volume_id": null,
"base_volume_name": null,
"base_volume_pool": null,
"format": "qcow2",
"id": "/var/lib/libvirt/images/centos7.qcow2",
"name": "centos7.qcow2",
"pool": "default",
"size": 8589934592,
"source": "https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2",
"xml": []
},
"private": "bnVsbA=="
}
]
}
]
}