ansible-main-project/README.md

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
```