Prérequis
- Notre machine de déploiement est en mesure de demander à Proxmox VE de créer des conteneurs LXC (nous avons un jeton d’API pour cela dans la variable d’environnement
TF_VAR_api_token
qui est automatiquement chargée à l’aide de Direnv). - Terraform et Ansible sont installés sur cette machine de déploiement.
- 5 conteneurs LXC ont été déployés précédemment.
- Nous avons accès à des paires de clés de connexion SSH présentes dans le répertoire
~/.ssh
de la machine de déploiement permettant d’accéder à ces conteneurs.
Contexte
La création d’un inventaire Ansible est une opération fastidieuse et nous souhaitons l’automatiser. Le plugin community.general.proxmox va nous y aider.
Installation du plugin
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ansible-galaxy collection install community.general
Création d’un fichier dynamic-inventory.proxmox.yml
plugin: community.general.proxmox
url: https://192.168.1.6:8006
user: 'terraform-prov@pve'
token_id: 'terraform'
token_secret: '69ffadcc-9eb8-4735-ba92-8f55f59698d4'
Installation du plugin
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ansible-galaxy collection install cloud.terraform
ou fichier requirements.yml
contenant
---
collections:
- name: cloud.terraform
et installation du plugin
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ansible-galaxy collection install -r requirements.yml
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Downloading https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/cloud-terraform-3.0.0.tar.gz to /home/deployer/.ansible/tmp/ansible-local-12082quhww6ya/tmptmxhtdva/cloud-terraform-3.0.0-muha5ld3
Installing 'cloud.terraform:3.0.0' to '/home/deployer/.ansible/collections/ansible_collections/cloud/terraform'
cloud.terraform:3.0.0 was installed successfully
Nous devons créer un fichier d’inventaire dynamique dynamic-inventory.proxmox.yml
Vérification de la génération de l’inventaire
Nous pouvons vérifier notre inventaire
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ansible-inventory calcul_distribue -i dynamic-inventory
.proxmox.yml --graph
@calcul_distribue:
|--ubuntu-lxc-5
|--ubuntu-lxc-2
|--ubuntu-lxc-4
|--ubuntu-lxc-1
|--ubuntu-lxc-3
Utilisation de cet inventaire pour réaliser un essai d’écho ICMP
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ANSIBLE_REMOTE_USER=root ansible calcul_distribue -i dynamic-inventory.proxmox.yml -m ping
ubuntu-lxc-1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
(...)
ubuntu-lxc-5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Génération d’un fichier de la liste des adresses IP des conteneurs déployés pour réaliser le calcul
Nous pouvons obtenir les adresses IP des conteneurs déployés (dans un fichier CSV par exemple).
Exemple de fichier obtenu servers_ip.csv
: