Go to file
Navas 5dbf2fd8a3 Ajout de divers setup* 2023-12-10 18:40:11 +01:00
inventory Commit initial 2022-08-05 23:48:03 +02:00
roles Commit initial 2022-08-05 23:48:03 +02:00
vars Modifications readme et variables 2022-08-06 11:46:41 +02:00
.gitignore Commit initial 2022-08-05 23:48:03 +02:00
LICENSE Commit initial 2022-08-05 23:48:03 +02:00
README.md Modifications readme et variables 2022-08-06 11:46:41 +02:00
ansible.cfg.example Commit initial 2022-08-05 23:48:03 +02:00
proxmox_remove_vm.yml Commit initial 2022-08-05 23:48:03 +02:00
proxmox_setup_vm.yml Commit initial 2022-08-05 23:48:03 +02:00
setup_collabora.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_element.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_etherpad.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_gitea.yml Commit initial 2022-08-05 23:48:03 +02:00
setup_grav.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_jitsimeet.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_kanboard.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_keycloak.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_ldapmanager.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_listmonk.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_loomio.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_mastodon.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_matomo.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_mobilizon.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_monitoring.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_nextcloud.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_openldap.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_paheko.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_roundcube.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_synapse.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_vaultwarden.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_vms.yml Commit initial 2022-08-05 23:48:03 +02:00
setup_webfingerserver.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_wikijs.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00
setup_wordpress.yml Ajout de divers setup* 2023-12-10 18:40:11 +01:00

README.md

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

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

apt update -y
apt install build-essential python3-dev libldap2-dev libsasl2-dev

Création d'un virtualenv

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