Terraform
Pour créer une machine automatiquement il suffit de ce connecter a notre XOCE en SSH sur une base RockyLinux 9 et d'installer Terraform
dnf install dnf-plugins-core -y
dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
dnf install terraform -y
Une fois Terraform installer, on installe une machine RockyLinux 9 minimal. Une fois la VM installer on installe cloud-init
dnf install cloud-init
systemctl enable cloud-init
On éteint la VM et on la Converti en Template dans l'onglet Advanced.
Sur la machine XOCE on créer un dossier Terraform et dedans HTTPD. On créer 2 fichier, un provider.tf et un vm.tf et on met dedans :
#####Provider.tf#####
# Instruct terraform to download the provider on `terraform init`
terraform {
required_providers {
xenorchestra = {
source = "terra-farm/xenorchestra"
version = "0.23.3"
}
}
}
# Configure the XenServer Provider
provider "xenorchestra" {
# Must be ws or wss
url = "ws://IP DE XOCE"
username = "COMPTE XOCE"
password = "MOT DE PASSE XOCE"
insecure = true
}
####vm.tf####
data "xenorchestra_pool" "pool" {
name_label = "NOM DU POOL XCP"
}
data "xenorchestra_template" "vm_template" {
name_label = "NOM DE LA VM TEMPLATE CREER"
}
data "xenorchestra_sr" "sr" {
name_label = "NOM DU STOCKAGE DES VM"
pool_id = data.xenorchestra_pool.pool.id
}
data "xenorchestra_network" "network" {
name_label = "NOM DE L'INTERFACE RESEAU"
pool_id = data.xenorchestra_pool.pool.id
}
resource "xenorchestra_cloud_config" "demo" {
name = "HTTPD + Wordpress"
template = <<EOF
#cloud-config
fqdn: Wordpress
packages:
- httpd
- mariadb-server
- php
- php-fpm
- php-cli
- php-mysqlnd
- php-zip
- php-devel
- php-gd
- php-mbstring
- php-curl
- php-xml
- php-pear
- php-bcmath
- php-json
- wget
- unzip
runcmd:
- sudo firewall-cmd --add-service=http --permanent
- sudo firewall-cmd --add-service=https --permanent
- sudo firewall-cmd --reload
- sudo systemctl enable --now httpd mariadb php-fpm
- wget https://fr.wordpress.org/latest-fr_FR.zip
- unzip latest-fr_FR.zip -d /var/www/html
- cp -R /var/www/html/wordpress/* /var/www/html/
- rm -rf /var/www/html/wordpress
- chmod -R apache:apache /var/www/html
- sudo restorecon -Rv /var/www/html
- sudo setsebool -P httpd_can_network_connect 1
- sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?"
EOF
}
resource "xenorchestra_vm" "vm" {
memory_max = 2147483648
cpus = 1
name_label = "HTTPD + Wordpress"
template = data.xenorchestra_template.vm_template.id
cloud_config = xenorchestra_cloud_config.demo.template
network {
network_id = data.xenorchestra_network.network.id
}
disk {
sr_id = data.xenorchestra_sr.sr.id
name_label = "wordpresshttpd"
size = 32000
}
tags = [
"RockyLinux",
]
}
Il faut modifier des éléments dans les 2 fichiers : MAJUSCULE
On lance notre provider et notre vm et notre vm avec cloud-init ce créer.
terraform init
terraform plan
terraform apply