You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
jeltz 89d0a682cf Merge pull request 'Add dolibarr' (#92) from dolibarr into master 4 months ago
group_vars Add dolibarr.srv.auro.re + PostgreSQL DB 6 months ago
host_vars nginx: remove bbb.auro.re 7 months ago
playbooks Add dolibarr.srv.auro.re + PostgreSQL DB 6 months ago
roles prometheus: fix typo 6 months ago
utils Remove sudo upgrade playbook 7 months ago
.ansible-lint CI: Update linter rules 7 months ago
.drone.yml CI: use upstream ansible/toolset 7 months ago
.gitignore add gs dhcp, dns, routing 2 years ago
.yamllint.yml 馃懛 do not ansible-lint the vault and fix useless rules 1 year ago
README.md README: require at least Ansible 2.9 7 months ago
ansible.cfg Use the Users CA for authentication 7 months ago
copy-keys.sh Update copy-keys.sh script and SSH configuration 7 months ago
deploy_all.sh Move playbooks in subfolder 7 months ago
hosts Add dolibarr.srv.auro.re + PostgreSQL DB 6 months ago

README.md

Linter Status

Recettes Ansible d'Aurore

D茅pendances requises :

  • Ansible 2.9 ou plus r茅cent.

Ansible 101

Si vous n'avez jamais touch茅 脿 Ansible avant, voil脿 une rapide introduction.

Inventory : c'est le fichier hosts d'inventaire. Il contient la d茅finition de chaque machine et le regroupement.

Quand on regroupe avec un :children en r茅alit茅 on groupe des groupes.

Chaque machine est annonc茅e avec son hostname. Il faut pouvoir SSH sur cette machine avec ce hostname, car c'est ce qu'Ansible fera.

Playbook : c'est une politique de d茅ploiement. Il contient les associations des r么les avec les machines.

L'id茅e au Crans est de regrouper par th猫me. Exemple, le playbook monitoring.yml va contenir toutes les d茅finitions machines-r么les qui touchent au monitoring. Cela permet de d茅ployer manuellement tout le monitoring sans toucher au reste.

R么le : un playbook donne des r么les 脿 des machines. Ces r么les sont tous dans le dossier roles/. Un r么le installe un service pr茅cis sur un serveur.

Il est pr茅f茅rable d'锚tre atomique sur les r么les plut么t d'en coder un 茅norme qui sera difficilement maintenable.

Exemples de r么le : activer les backports pour ma version de Debian, installer NodeJS, d茅ployer un serveur prometheus, d茅ployer une node prometheus鈥

T芒che : un r么le est compos茅 de t芒ches. Une t芒che effectue une et une seule action. Elle est associ茅e 脿 un module Ansible.

Exemples de t芒che : installer un paquet avec le module apt, ajouter une ligne dans un fichier avec le module lineinfile, copier une template avec le module template

Une t芒che peut avoir des param猫tres suppl茅mentaires pour la r茅essayer quand elle plante, r茅cup茅rer son r茅sultat dans une varible, mettre une boucle dessus, mettre des conditions鈥

N'oubliez pas d'aller lire l'excellent documentation de RedHat sur tous les modules d'Ansible !

Gestion des groupes de machines

Pour la liste compl猫te, je vous invite 脿 lire le fichier hosts.

  • pour tester les versions de Debian,

    ansible_lsb.codename == 'stretch'
    
  • pour tester si c'est un CPU Intel x86_64,

    ansible_processor[0].find('Intel') != -1
    and ansible_architecture == 'x86_64'
    

Pour les fonctions (proxy-server, dhcp-dynamique鈥) il a 茅t茅 choisi de ne pas faire de groupe particulier mais plut么t de s茅lectionner/enlever les machines pertinentes directement dans les playbooks.

Lister tout ce que sait Ansible sur un h么te

Lors du lancement d'Ansible, il collecte un ensemble de faits sur les serveurs qui peuvent ensuite 锚tre utilis茅s dans des variables. Pour lister tous les faits qu'Ansible collecte nativement d'un serveur on peut ex茅cuter le module setup manuellement.

ansible proxy.adm.auro.re -m setup --ask-vault-pass

Ex茅cution d'Ansible

Configurer la connexion au vlan adm

Envoyer son agent SSH peut 锚tre dangereux (source).

On va utiliser plut么t ProxyJump. Dans la configuration SSH :

Host *.adm.auro.re *.pve.auro.re
    # Accept new host keys
    StrictHostKeyChecking accept-new

    # Use passerelle to connect to administration VLANs
    ProxyJump passerelle.auro.re

Il faut sa cl茅 SSH configur茅e sur le serveur que l'on d茅ploit.

ssh-copy-id proxy.adm.auro.re

Lancer Ansible

Il faut python3-netaddr sur sa machine.

Pour tester le playbook base.yml :

ansible-playbook --ask-vault-pass base.yml --check

Vous pouvez ensuite enlever --check si vous voulez appliquer les changements !

Si vous avez des soucis de fingerprint ECDSA, vous pouvez ignorer une premi猫re fois (dangereux !) : ANSIBLE_HOST_KEY_CHECKING=0 ansible-playbook....

Ajouter tous les empruntes de serveur

#!/bin/bash
for ip in `cat hosts|grep .adm.auro.re`; do
    ssh-copy-id -i ~/.ssh/id_rsa.pub $ip
done

Passage 脿 Ansible 2.10 (release: 30 juillet)

Installez la version de d茅veloppement d'ansible pour faire fonctionner les playbooks de ce repo, ainsi que les collections suivantes :

ansible-galaxy collection install community.general
ansible-galaxy collection install ansible.posix

Si vous n'arrivez pas 脿 entrer votre become password (bug dans ansible?), un workaround est le suivant :

$ export ANSIBLE_BECOME_PASS='<votre mot de passe LDAP>'

Notez l'espace au d茅but pour ne pas log la commande dans votre historique shell.