diff --git a/content/slides/cri/md/ansible.md b/content/slides/cri/md/ansible.md index 9beba84bdd73b13062e0025ae2c02d7e59fa5db9..fa7a234dc9c4a626afdfb6ac66ab6d6bef8fb6c4 100644 --- a/content/slides/cri/md/ansible.md +++ b/content/slides/cri/md/ansible.md @@ -103,6 +103,8 @@ ## inventory +dans `./inventory.ini` + ```ini [other] other1.isima.fr @@ -124,7 +126,8 @@ ansible_user = limosadm ## ad-hoc command ``` -$ ansible criprod -a "/usr/bin/uptime" +$ ansible criprod --inventory-file=inventory.ini \ + -a "/usr/bin/uptime" other1.isima.fr | CHANGED | rc=0 >> 13:12:02 up 21 days, 21:11, 2 users, load average: 0.13, 0.88, 0.13 @@ -191,22 +194,13 @@ my-playbook.yml # ou n'importe quel nom de groupe remote_user: limosadm # prioritaire sur ansible_user de l'inventaire - roles: - - - role: debug # le rôle debug sera exécuté par le playbook - tags: debug # le tag debug sera ajouté à toutes les tâches du role debug - my-variable: "pipo" # il ya d'autres endroit où mettre les variables - # à suivre ... - - role: vault-cli # le rôle vault-cli sera exécuté par le playbook - tags: vault # le tag vault sera ajouté à toutes les tâches du role vault-cli - ``` ## playbook ```shell -$ ansible-playbook my-playbook.yml +$ ansible-playbook my-playbook.yml --inventory-file=inventory.ini ``` * exécute le playbook @@ -214,62 +208,6 @@ $ ansible-playbook my-playbook.yml * en parallèle -## playbook - -```shell -$ ansible-playbook my-playbook.yml --check --diff -``` - -`--check` - -simule les tâches à effectuer sans les effectuer (dry-run) - -`--diff` - -indique ce qui change - - -## playbook - -```shell -$ ansible-playbook my-playbook.yml -vvv -``` - -`-v`, `-vv`, `-vvv`, `-vvvv` - -pour la verbosité - - -## playbook - -```shell -$ ansible-playbook my-playbook.yml --list-tags -``` - -liste tous les tags disponibles dans le playbook - -```shell -$ ansible-playbook my-playbook.yml --tags debug -``` - -n'exécute que les tâches du playbook ayant un tag `debug` - -```shell -$ ansible-playbook my-playbook.yml --skip-tags debug -``` - -exécute toutes les tâches du playbook sauf celles ayant un tag `debug` - - -## playbook - -```shell -$ ansible-playbook my-playbook.yml --limit=py.isima.fr -``` - -exécute toutes les tâches du playbook sur py.isima.fr uniquement - - ## variables * nommage @@ -290,6 +228,25 @@ exécute toutes les tâches du playbook sur py.isima.fr uniquement #### [précédence des variables](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable) +## facts + +* valeurs collectées par ansible à l'exécution du playbook + +```yaml +- debug: + msg: "System {{ inventory_hostname }}" + +- debug: + msg: "comes from family {{ ansible_os_family }}" + +- name: HOSTVARS (ANSIBLE GATHERED, group_vars, host_vars) : + debug: + msg: {{ hostvars | to_yaml }} +``` + +[<i class="fa fa-book" aria-hidden="true"></i> Variables discovered from systems: Facts](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variables-discovered-from-systems-facts) + + ## jinja [<i class="fa fa-book" aria-hidden="true"></i> templating](https://docs.ansible.com/ansible-container/container_yml/template.html) @@ -435,31 +392,26 @@ failed_when: no ``` -## [<i class="fa fa-book" aria-hidden="true"></i> set_fact](https://docs.ansible.com/ansible/latest/modules/set_fact_module.html) & pre_task - -```yaml -criprod: - pvecriprod1: - api_users: - - proxmoxapi - - vimazeno -``` +## modules -```yaml -- name: provisionner l'environnement du noeud (pour y accéder plus facilement dans les roles) - set_fact: - _pve: "{ 'cluster': '{{ lookup('env','PVE_CLUSTER') }}', 'node': '{{ lookup('env','PVE_NODE') }}', 'host': '{{ lookup('env','PVE_HOST') }}'}" +* [<i class="fa fa-book" aria-hidden="true"></i> file](https://docs.ansible.com/ansible/latest/modules/file_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> lineinfile](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> copy](https://docs.ansible.com/ansible/latest/modules/copy_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> template](https://docs.ansible.com/ansible/latest/modules/template_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> stat](https://docs.ansible.com/ansible/latest/modules/stat_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> get_url](https://docs.ansible.com/ansible/latest/modules/get_url_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> unarchive](https://docs.ansible.com/ansible/latest/modules/unarchive_module.html) -- name: provisionner les utilisateurs d'api pve uniquement du noeud (pour y accéder plus facilement dans les roles) - set_fact: - api_users: "{ 'api_users': {{ hostvars[inventory_hostname][_pve.cluster][_pve.node]['api_users'] }}}" -- name: fusionner l'environnement du noeud (pour y accéder plus facilement dans les roles) - set_fact: - pve: "{{ _pve | combine(api_users) }}" -``` +## modules -[<i class="fa fa-gitlab" aria-hidden="true"></i> exemple permettant de réorganiser les variables](https://gitlab.isima.fr/cri/stack/blob/master/ansible/pre-tasks/set-pve-vars.yml) +* [<i class="fa fa-book" aria-hidden="true"></i> package](https://docs.ansible.com/ansible/latest/modules/package_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> user](https://docs.ansible.com/ansible/latest/modules/user_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> systemd](https://docs.ansible.com/ansible/latest/modules/systemd_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> pip](https://docs.ansible.com/ansible/latest/modules/pip_module.html) +* [<i class="fa fa-book" aria-hidden="true"></i> expect](https://docs.ansible.com/ansible/latest/modules/exepect_module.html) + * `pip install pexpect` +* [<i class="fa fa-book" aria-hidden="true"></i> ...](https://docs.ansible.com/ansible/latest/modules/modules_by_category.html) ## tags @@ -486,26 +438,108 @@ roles: `always` tag spécial exécuté à tous les coups -## modules +## playbook -* [<i class="fa fa-book" aria-hidden="true"></i> file](https://docs.ansible.com/ansible/latest/modules/file_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> lineinfile](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> copy](https://docs.ansible.com/ansible/latest/modules/copy_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> template](https://docs.ansible.com/ansible/latest/modules/template_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> stat](https://docs.ansible.com/ansible/latest/modules/stat_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> get_url](https://docs.ansible.com/ansible/latest/modules/get_url_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> unarchive](https://docs.ansible.com/ansible/latest/modules/unarchive_module.html) +```shell +$ ansible-playbook my-playbook.yml --list-tags +``` +liste tous les tags disponibles dans le playbook -## modules +```shell +$ ansible-playbook my-playbook.yml --tags debug +``` -* [<i class="fa fa-book" aria-hidden="true"></i> package](https://docs.ansible.com/ansible/latest/modules/package_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> user](https://docs.ansible.com/ansible/latest/modules/user_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> systemd](https://docs.ansible.com/ansible/latest/modules/systemd_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> pip](https://docs.ansible.com/ansible/latest/modules/pip_module.html) -* [<i class="fa fa-book" aria-hidden="true"></i> expect](https://docs.ansible.com/ansible/latest/modules/exepect_module.html) - * `pip install pexpect` -* [<i class="fa fa-book" aria-hidden="true"></i> ...](https://docs.ansible.com/ansible/latest/modules/modules_by_category.html) +n'exécute que les tâches du playbook ayant un tag `debug` + +```shell +$ ansible-playbook my-playbook.yml --skip-tags debug +``` + +exécute toutes les tâches du playbook sauf celles ayant un tag `debug` + + +## playbook + +```shell +$ ansible-playbook my-playbook.yml --check --diff +``` + +`--check` + +simule les tâches à effectuer sans les effectuer (dry-run) + +`--diff` + +indique ce qui change + + +## playbook + +```shell +$ ansible-playbook my-playbook.yml -vvv +``` + +`-v`, `-vv`, `-vvv`, `-vvvv` + +pour la verbosité + + +## playbook + +```shell +$ ansible-playbook my-playbook.yml --limit=py.isima.fr +``` + +exécute toutes les tâches du playbook sur py.isima.fr uniquement + + +## roles + +```yaml +- name: my-playbook # ce que vous voulez + hosts: criprod # ou all + # ou n'importe quel nom de machine + # ou n'importe quel nom de groupe + remote_user: limosadm # prioritaire sur ansible_user de l'inventaire + + roles: + + - role: debug # le rôle debug sera exécuté par le playbook + tags: debug # le tag debug sera ajouté à toutes les tâches du role debug + my-variable: "pipo" # il ya d'autres endroit où mettre les variables + # à suivre ... + - role: vault-cli # le rôle vault-cli sera exécuté par le playbook + tags: vault # le tag vault sera ajouté à toutes les tâches du role vault-cli + +``` + + +## [<i class="fa fa-book" aria-hidden="true"></i> set_fact](https://docs.ansible.com/ansible/latest/modules/set_fact_module.html) & pre_task + +```yaml +criprod: + pvecriprod1: + api_users: + - proxmoxapi + - vimazeno +``` + +```yaml +- name: provisionner l'environnement du noeud (pour y accéder plus facilement dans les roles) + set_fact: + _pve: "{ 'cluster': '{{ lookup('env','PVE_CLUSTER') }}', 'node': '{{ lookup('env','PVE_NODE') }}', 'host': '{{ lookup('env','PVE_HOST') }}'}" + +- name: provisionner les utilisateurs d'api pve uniquement du noeud (pour y accéder plus facilement dans les roles) + set_fact: + api_users: "{ 'api_users': {{ hostvars[inventory_hostname][_pve.cluster][_pve.node]['api_users'] }}}" + +- name: fusionner l'environnement du noeud (pour y accéder plus facilement dans les roles) + set_fact: + pve: "{{ _pve | combine(api_users) }}" +``` + +[<i class="fa fa-gitlab" aria-hidden="true"></i> exemple permettant de réorganiser les variables](https://gitlab.isima.fr/cri/stack/blob/master/ansible/pre-tasks/set-pve-vars.yml) ## roles