Créé par Baptiste Donaux

Baptiste Donaux

Ansible, qu'est-ce que c'est ?

  • Un outils et une société (rachété par Red Hat en octobre 2015)
  • Un outils pour automatiser les tâches
  • mais également les déploiements d'applications et de configurations

La concurrence dans tout ça ?

Les produits d'Ansible

  • Ansible (Core)
  • Ansible Playbook
  • Ansible Galaxy
  • Ansible Vault

Les specifications

  • agent-less
  • Connexion via SSH
  • Python/YAML

Les modules

  • On peut écrire des modules (Python)
  • … mais il en existe déjà BEAUCOUP

To

Les commandes sont exécutées vers des groupes de hosts définies dans /etc/ansible/hosts.

Exemple:

[baptiste-donaux.fr]
me.baptiste-donaux.fr
www.baptiste-donaux.fr

Ansible CLI

Ansible CLI

ansible La commande à lancer
-m Pour le module
-a Pour les arguments

Ansible CLI - 1 host

$ ansible localhost -m ping
localhost | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Ansible CLI - n hosts

$ ansible -m ping baptiste-donaux.fr
me.baptiste-donaux.fr | success >> {
    "changed": false, 
    "ping": "pong"
}

www.baptiste-donaux.fr | success >> {
    "changed": false, 
    "ping": "pong"
}

Vérifier que VIM est installé

ansible -m apt -a "name=vim state=present" localhost
localhost | success >> {
    "changed": false
}

Ansible Playbook

Ansible Playbook

Playbook vous permet de scripter vos scénarios.

Ansible Playbook

Installer Docker sur un parc

- hosts: baptiste-donaux.fr
  tasks:
    - name: Add APT key for Docker repository
      apt_key:
        keyserver: "hkp://p80.pool.sks-keyservers.net:80"
        id: 58118E89F3A912897C070ADBF76221572C52609D

    - apt_repository:
        repo: 'deb https://apt.dockerproject.org/repo debian-jessie main'
        state: present

    - apt: update_cache=yes

    - apt: name=docker-engine state=present

    - systemd: enabled=yes state=started name=docker

Ansible Playbook

Si une de vos commandes échoue sur une de vos machines, un my_playbook.retry est généré et vous pouvez relancer la commande sans reprendre depuis le début.

Ansible Vault

Ansible Vault

Si vous stocker des informations sensibles dans vos playbooks, vous pouvez les encoder.

Ansible Vault

Exemple

$ ls .
my_playbook.yml

$ cat my_playbook.yml
- hosts: localhost
  tasks:
    - shell: sshpass -p "foo" scp -r /bar baz@localhost:/qux

Ansible Vault

Exemple

$ ansible-vault encrypt my_playbook.yml
New Vault password: 
Confirm New Vault password: 
Encryption successful

$ cat my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264

Ansible Vault

Exemple

$ ansible-playbook my_playbook.yml --ask-vault-pass
Vault password:
…

Ansible Vault

Et booom !

Ansible Galaxy

Ansible Galaxy

Il s'agit d'un Hub regroupant tous les modules développés par la communauté.
Un peu comme Docker Hub.

Maintenant, vous savez !