136 lines
5.0 KiB
Markdown
136 lines
5.0 KiB
Markdown
# Utilisation du projet ansible-main-project
|
|
|
|
Ce projet est une base de travail pour la mise en oeuvre des rôles ansible de libretic.
|
|
Il n'est pas utilisable directement et doit être adapté en fonction des besoins, en suivant ce guide.
|
|
Quelques playbooks et dossiers d'inventaire sont inclus pour illustrer l'organisation du projet ansible.
|
|
|
|
|
|
# Structure du dossier
|
|
|
|
```
|
|
.
|
|
├── ansible.cfg.example
|
|
├── inventory
|
|
│ ├── gitea_git.libretic.fr
|
|
│ │ ├── group_vars
|
|
│ │ │ └── all.yml
|
|
│ │ └── hosts
|
|
│ ├── vms
|
|
│ │ ├── group_vars
|
|
│ │ │ ├── all.yml
|
|
│ │ │ ├── docker_host.yml
|
|
│ │ │ └── reverse_proxy.yml
|
|
│ │ └── hosts
|
|
│ └── grav_libretic.fr
|
|
│ ├── group_vars
|
|
│ │ └── all.yml
|
|
│ └── hosts
|
|
├── LICENSE
|
|
├── proxmox_remove_vm.yml
|
|
├── proxmox_setup_vm.yml
|
|
├── README.md
|
|
├── roles
|
|
│ └── requirements.yml
|
|
├── setup_gitea.yml
|
|
├── setup_vms.yml
|
|
├── setup_grav.yml
|
|
└── vars
|
|
├── variables-proxmox.yml.example
|
|
└── variables-vm.yml.example
|
|
```
|
|
|
|
* inventory/vms : contient l'inventaire des vms et de leur rôles de base (common ou docker_host par exemple)
|
|
* inventory/nom-d-instance : contient le parametrage pour l'installation d'une instance d'un rôle (gitea par exemple)
|
|
* roles/* : contient la description des rôles nécessaires au projet (requirements.yml) et le code source des rôles téléchargés par ansible-galaxy
|
|
* vars/* : contient un fichier par vm et au moins un fichier pour les paramètres proxmox
|
|
|
|
|
|
# Création d'un environnement ansible
|
|
|
|
## .bashrc
|
|
```bash
|
|
export EDITOR=emacs
|
|
|
|
alias aplay="ansible-playbook --vault-password=~/.ansible_vault_password"
|
|
alias aireq='[ -f .gitignore ] && rm -fr $(grep ^roles/ .gitignore) && ansible-galaxy install -f -r roles/requirements.yml -p roles/'
|
|
|
|
cd ~/ansible-venv/ ; . bin/activate ; cd ~
|
|
```
|
|
|
|
## Prerequis pour python-ldap
|
|
|
|
```bash
|
|
apt update -y
|
|
apt install build-essential python3-dev libldap2-dev libsasl2-dev
|
|
```
|
|
|
|
## Création d'un virtualenv
|
|
```bash
|
|
cd ~
|
|
python3 -m venv ansible-venv
|
|
cd ansible-venv
|
|
. bin/activate
|
|
cd ~
|
|
pip install --upgrade pip==22.0.3
|
|
pip install setuptools=60.9.3
|
|
pip install ansible==4.10.0
|
|
pip install netaddr==0.8.0
|
|
pip install jmespath==0.10.0
|
|
pip install molecule==3.6.0
|
|
pip install ansible-lint==5.3.2
|
|
pip install psutil==5.9.0
|
|
pip install proxmoxer==1.2.0
|
|
pip install passlib==1.7.4
|
|
pip install python-ldap==3.4.0
|
|
pip install dnspython==2.2.1
|
|
mv ansible-venv ansible-venv-4.10.0
|
|
ln -s ansible-venv-4.10.0 ansible-venv
|
|
```
|
|
|
|
## Ansible vault password
|
|
|
|
Certains fichiers ansible contiennent des valeurs chiffrées. L'alias "aplay" ci-dessus utilise un fichier commun à tous les scripts à placer dans le répertoire d'accueil de l'utilisateur.
|
|
|
|
Pour l'utiliser, éditer ~/.ansible_vault_password pour qu'il contienne le mdp de chiffrement des vaults.
|
|
|
|
|
|
# Préparation du projet
|
|
|
|
* Créer un nouveau projet git en utilisant ce projet comme modèle
|
|
* Créer un ansible.cfg à partir du fichier d'exemple
|
|
* S'il est prévu de piloter un serveur proxmox, éditer le fichier de variables pour proxmox à partir du fichier d'exemple, et créer un fichier de variable pour chaque vm à créer ou à entretenir
|
|
* Editer le fichier requirements.yml pour utiliser les rôles ansible nécessaires
|
|
* Utiliser l'alias aireq pour télécharger les roles déclarés comme requirements
|
|
* Paramétrer l'inventaire commun dans inventory/vms
|
|
* Créer ou paramétrer un inventaire pour chaque instance de service, et préparer un setup_nom_du_service.yml pour le service souhaité ; par exemple inventory/gitea_git.libretic.fr et setup_gitea.yml pour installer gitea.
|
|
|
|
|
|
Note : si plusieurs instances sont souhaitées pour un même service, il est possible de créer des inventaires séparés qu'on utilise avec le même playbook. Par exemple : inventory/gitea_git.libretic.fr et inventory/gitea_git.example.com peuvent contenir des paramètres différents, pour deux instances.
|
|
|
|
|
|
# Exemple d'utilisation des scripts proxmox
|
|
|
|
Pour créer ou modifier une vm "mavm", à partir de sa description. L'agrandissement d'une partition à chaud peut se faire en modifiant le fichier de description de la VM et en relancant la même commande.
|
|
|
|
```
|
|
aplay proxmox_setup_vm.yml -e @vars/proxmox.yml -e @vars/mavm.yml
|
|
```
|
|
|
|
|
|
# Exemple d'utilisation des rôles de base
|
|
|
|
Après avoir créé une vm (par exemple avec les scripts proxmox), adapter l'inventaire inventory/vms pour attribuer un rôle de base à la vm si nécessaire (common est appliqué à "all"). Appliquer ensuite ces rôles à la vm.
|
|
|
|
```
|
|
aplay -i inventory/vms setup_vms.yml -l mavm
|
|
```
|
|
|
|
|
|
# Exemple d'instanciation des rôles
|
|
|
|
Après avoir appliqué les rôles de base, pour installation d'un instance d'un service, par exemple gitea :
|
|
|
|
```
|
|
aplay -i inventory/vms -i inventory/gitea_git.libretic.fr setup_gitea.yml
|
|
```
|