Ansible
Doc
site proposant des templates Ansible
- Le but c’est d’avoir des playbook ré-exécutables.
bonne pratique :
tasks:
- name: creation d'un dossier
file:
path: /tmp/toto
state: directory
mode: 0644
mauvaise pratique :
tasks:
- name: creation d'un dossier
shell: mkdir -p /tmp/toto
- on peut gerer les groupes de hosts avec des tags.
bonne pratique :
bddsvr1 ansible_host=@IP1 ou NDD
bddsvr2 ansible_host=@IP2 ou NDD
bddsvr3 ansible_host=@IP3 ou NDD
websvr1 ansible_host=@IPA ou NDD
websvr2 ansible_host=@IPB ou NDD
websvr3 ansible_host=@IPC ou NDD
[bddsvr]
bddsvr[1:3]
[websvr]
web[1:3]
[dpreprod]
bddsvr2
websvr2
mauvaise pratique :
@IP1
@IP2
NDD1
NDD2
- il faut afficher les tasks en colonne et pas en ligne
bonne pratique :
- name: install prog
yum:
name: prog-
state: present
update_cache: yes
disable_gpg_check: yes
enablerepo: le-repo
notify: restart prog
- name: configure prog
template:
src: prog.conf.j2
dest: /etc/prog/prog.conf
notify: restart prog
- name: start prog
service:
name: prog
state: started
enabled: yes
mauvaise pratique :
- name: install prog
yum: name: prog- state: present update_cache: yes disable_gpg_check: yes enablerepo: le-repo notify: restart prog
- name: configure prog
template: src: prog.conf.j2 dest: /etc/prog/prog.conf notify: restart prog
- name: start prog
service: name: prog state: started enabled: yes
- il faut instancier les variable avant les tasks
bonne pratique :
- name: Clone du repo git
host: bddsvr
vars:
user_home: /home/
user_ssh: "/.ssh"
deploy_key: "/id_rsa"
monprojet_dest: "/monprojet"
tasks:
- name: creation du rep ssh
file:
state: directory
path: ""
- name: copie de la clé ssh
copy:
src: files/deploy_key
dest: ""
- name: Clone du repo git
git:
dest: ""
key_file: ""
repo: git@github.com:monprojet/monprojet.git
accept_hostkey: yes
clone: yes
- les modules ansible de type “script” “shell” “command” et “raw” permettent d’executer des commandes shell, il est préférable d’utiliser des modules fait pour une action spécifique.
bonnes pratiques :
- name: ajout utilisateur
user:
name: toto
state: present
- name: installer apache
yum:
name: httpd
state: latest
- name: demarrer apache
service:
name: httpd
state: started
enabled: yes
mauvaise pratique :
- name: ajout utilisateur
command: useradd toto
- name: installer apache
command: yum install httpd
- name: demarrer apache
shell: |
service httpd start && chkconfig httpd on
Comments