Ansible Cheatsheet
Un aide-mémoire Ansible sur la structure des répertoires, l’inventaire, les playbooks, les variables, les filtres et les modules courants.
Ansible Cheatsheet
Informations sur Ansible
Structure des répertoires :
- ansible.cfg : fichier de configuration général
- playbook.yml : fichier de playbook
- group_vars : répertoire contenant les fichiers YAML des variables de groupe
- host_vars : répertoire contenant les fichiers YAML des variables d’hôte
- inventory.yml : fichier d’inventaire des hôtes (YAML)
- templates : répertoire des modèles Jinja2
Dépannage :
- Tester la connexion aux hôtes d’un groupe de l’inventaire : command: ansible routers -m ping -i inventory.yml
- Lister les modules d’une collection : command: ansible-doc -l | grep cisco.ios
- Afficher la documentation d’un module : command: ansible-doc ios_bgp
Inventaire :
1
2
3
4
5
6
7
8
9
10
- group_A:
children:
subgroup_A:
hosts:
host_1:
ansible_host: 192.168.1.2
host_2:
ansible_host: 192.168.1.3
host_3:
ansible_host: 192.168.1.4
Représentation graphique de l’inventaire :
command: ansible-inventory –graph -i inventory.yml
Liste complète des hôtes de l’inventaire et de leurs variables :
command: ansible-inventory –list -i inventory.yml
Afficher les détails d’un hôte :
command: ansible-inventory –host R1
Playbook :
- Exécuter un playbook : command: ansible-playbook playbook.yml
- Options de lancement : -i : choisir le fichier d’inventaire -C : effectuer une vérification (aucune modification) -M : spécifier le module -c : spécifier le type de connexion -u : spécifier l’utilisateur -k : spécifier le mot de passe -e : fournir un fichier de variables –list-hosts : afficher les hôtes ciblés (aucune modification) –ask-vault-password : demander le mot de passe du coffre
Variables :
Connexion :
1
2
3
4
5
ansible_connection: local or network_cli
ansible_network_os: platform (Cisco -> ios)
ansible_user: SSH username
ansible_ssh_pass: SSH password
ansible_ssh_private_key_file: SSH key file
Exécution :
1
2
3
ansible_command_timeout: execution timeout in seconds
ansible_become: privilege escalation (yes or no)
ansible_become_method: enable
Filtres :
- Convertir des données compatibles en JSON ou YAML : example: “{{ output | to_json }}” “{{ output | to_yaml }}”
- Analyser la sortie d’une commande avec un modèle textfsm : example: “{{ output | ansible.netcommon.parse_cli_textfsm(‘template’) }}”
- Rechercher une correspondance avec un motif regex : example: “{{ output | regex_search(‘[\d\w]{4}.[\d\D]{4}.[\d\D]{4}’) }}”
- Lister toutes les occurrences correspondant à un motif regex : example: “{{ output | regex_findall(‘GigabitEthernet0\/0\/[0-9]{1,2}’) }}”
Motifs regex courants :
1
2
3
4
5
6
7
8
9
10
11
.: match any single character
^: match beginning of string
$: match end of string
|: equivalent to OR
[]: match any character in set
[^ ]: match any character not in set
(): capture group
{n}: match exactly n occurrences
\s: match whitespace
\d: match digit
\w: match word character
Modules :
#### ios_config:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- name: top level configuration
ios_config:
lines: hostname my_device
- name: configure interface
ios_config:
lines:
- description LAN
- ip address 192.168.1.254 255.255.255.0
parents: interface GigabitEthernet0/0
- name: save running to startup when modified
ios_config:
save_when: modified
#### ios_command:
1
2
3
4
5
- name: run commands
ios_command:
commands:
- show version
- show vlans
#### li_parse:
1
2
3
4
5
6
- name: run command and parse with ntc_templates
ansible.utils.cli_parse:
command: "show version"
parser:
name: ansible.netcommon.ntc_templates
register: output
#### debug:
1
2
3
4
- name: display result
debug:
msg: "{{ output }}
Cet article est sous licence CC BY 4.0 par l'auteur.