Skip to content
Snippets Groups Projects
Commit a514f000 authored by Vincent Mazenod's avatar Vincent Mazenod
Browse files

ansible

parent 641b77fd
No related branches found
No related tags found
No related merge requests found
Pipeline #3402 passed
...@@ -103,6 +103,8 @@ ...@@ -103,6 +103,8 @@
## inventory ## inventory
dans `./inventory.ini`
```ini ```ini
[other] [other]
other1.isima.fr other1.isima.fr
...@@ -124,7 +126,8 @@ ansible_user = limosadm ...@@ -124,7 +126,8 @@ ansible_user = limosadm
## ad-hoc command ## 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 >> other1.isima.fr | CHANGED | rc=0 >>
13:12:02 up 21 days, 21:11, 2 users, load average: 0.13, 0.88, 0.13 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 ...@@ -191,22 +194,13 @@ my-playbook.yml
# ou n'importe quel nom de groupe # ou n'importe quel nom de groupe
remote_user: limosadm # prioritaire sur ansible_user de l'inventaire 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 ## playbook
```shell ```shell
$ ansible-playbook my-playbook.yml $ ansible-playbook my-playbook.yml --inventory-file=inventory.ini
``` ```
* exécute le playbook * exécute le playbook
...@@ -214,62 +208,6 @@ $ ansible-playbook my-playbook.yml ...@@ -214,62 +208,6 @@ $ ansible-playbook my-playbook.yml
* en parallèle * 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 ## variables
* nommage * nommage
...@@ -290,6 +228,25 @@ exécute toutes les tâches du playbook sur py.isima.fr uniquement ...@@ -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) #### [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 ## jinja
[<i class="fa fa-book" aria-hidden="true"></i> templating](https://docs.ansible.com/ansible-container/container_yml/template.html) [<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 ...@@ -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 ## modules
```yaml
criprod:
pvecriprod1:
api_users:
- proxmoxapi
- vimazeno
```
```yaml * [<i class="fa fa-book" aria-hidden="true"></i> file](https://docs.ansible.com/ansible/latest/modules/file_module.html)
- name: provisionner l'environnement du noeud (pour y accéder plus facilement dans les roles) * [<i class="fa fa-book" aria-hidden="true"></i> lineinfile](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html)
set_fact: * [<i class="fa fa-book" aria-hidden="true"></i> copy](https://docs.ansible.com/ansible/latest/modules/copy_module.html)
_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> 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) ## modules
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) * [<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 ## tags
...@@ -486,26 +438,108 @@ roles: ...@@ -486,26 +438,108 @@ roles:
`always` tag spécial exécuté à tous les coups `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) ```shell
* [<i class="fa fa-book" aria-hidden="true"></i> lineinfile](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html) $ ansible-playbook my-playbook.yml --list-tags
* [<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)
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) n'exécute que les tâches du playbook ayant un tag `debug`
* [<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) ```shell
* [<i class="fa fa-book" aria-hidden="true"></i> pip](https://docs.ansible.com/ansible/latest/modules/pip_module.html) $ ansible-playbook my-playbook.yml --skip-tags debug
* [<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) 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 ## roles
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment