ansible:accueil

Ansible

playbook.yml
- hosts: all
  tasks:
      - name: echo coucou
        shell: echo "coucou"
      - name: set ip
        become: yes
        shell: |
          echo "ip ok"

Dans une task:

playbook.yml
- name: include vars
  include_vars:
      file: vars.yaml

Le fichier vars.yaml contient la définition des variables, sous la forme d'un dictionnaire :

vars.yaml
var1: value1
var2: value2

Les variables sont ensuite accessibles par {{ var1 }}.

Définir l'IP

playbook.yml
- name: set ip
  become: yes
  shell: |
    EXIST=`ip route show 172.21.0.0 | wc -l`
    if [ $EXIST -eq 0 ]
    then
        ip addr add {{ ip }}/16 dev eth1
        ip route change default via 172.21.255.254
    fi

Définir le DNS

playbook.yml
- name: set dns
  become: yes
  lineinfile:
      path: /etc/resolv.conf
      regexp: '^nameserver '
      line: 'nameserver 10.210.18.138'
      firstmatch: yes

S'assurer que la dernière version de Nginx est installée

playbook.yml
- name: ensure nginx is at the latest version
  become: yes
  apt: name=nginx state=latest

S'assurer que le service Nginx est lancé

playbook.yml
- name: start nginx
  become: yes
  service:
    name: nginx
    state: started

Importer un fichier template

De l'hôte vers l'invité, en remplaçant des variables par des valeurs :

playbook.yml
- name: adapt flag of website
  become: yes
  template:
      src: index.html
      dest: /var/www/html/index.html

Dans index.html, la variable est définie entre doubles accolades.

Utilisation de become qui ne fonctionne pas

Pour utiliser become, il faut que le paquet acl soit installé sur le système cible. S'il n'y pas de tâches qui font des transferts de fichiers ou utilisent des modules non-Python, utiliser le pipelining SSH suffit (les commandes à exécuter sont directement pipées dans le Python de la machine cible) :

ansible.cfg
[ssh_connection]
pipelining = true
  • ansible/accueil.txt
  • Dernière modification : 2024/09/07 18:57
  • de phsw