... | @@ -18,7 +18,28 @@ avec ``` vagrant global-status ``` on a les 4 machines up : |
... | @@ -18,7 +18,28 @@ avec ``` vagrant global-status ``` on a les 4 machines up : |
|
|
|
|
|
Le fichier d'inventaire Ansible définit les hôtes et les groupes d'hôtes sur lesquels les commandes, les modules et les tâches d'un playbook fonctionnent. Le fichier peut être dans l'un des nombreux formats en fonction de votre environnement Ansible et de vos plugins. Les formats les plus courants sont INI et YAML. Dans notre cas, ca sera du YAML:
|
|
Le fichier d'inventaire Ansible définit les hôtes et les groupes d'hôtes sur lesquels les commandes, les modules et les tâches d'un playbook fonctionnent. Le fichier peut être dans l'un des nombreux formats en fonction de votre environnement Ansible et de vos plugins. Les formats les plus courants sont INI et YAML. Dans notre cas, ca sera du YAML:
|
|
|
|
|
|

|
|
```yaml
|
|
|
|
|
|
|
|
web01 ansible_host=192.168.56.14
|
|
|
|
web02 ansible_host=192.168.56.16
|
|
|
|
db01 ansible_host=192.168.56.12
|
|
|
|
|
|
|
|
[websrvgrp]
|
|
|
|
web01
|
|
|
|
web02
|
|
|
|
|
|
|
|
[dbsrvgrp]
|
|
|
|
db01
|
|
|
|
|
|
|
|
[dc_ohio:children]
|
|
|
|
websrvgrp
|
|
|
|
dbsrvgrp
|
|
|
|
|
|
|
|
[dc_ohio:vars]
|
|
|
|
ansible_user=vagrant
|
|
|
|
ansible_ssh_pass=vagrant
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
On a donc des groupes differents, au niveau de variables, les valeurs de connections sont affectees pour pouvoir utiliser ssh sans probleme
|
|
On a donc des groupes differents, au niveau de variables, les valeurs de connections sont affectees pour pouvoir utiliser ssh sans probleme
|
|
|
|
|
... | @@ -83,3 +104,140 @@ Voici un exemple de playbook: |
... | @@ -83,3 +104,140 @@ Voici un exemple de playbook: |
|
```
|
|
```
|
|
|
|
|
|
Ce playbook permet la gestion d'une base de donnee sur le groupe ``` dbsrvgrp ```, donc la machine ``` db ```.
|
|
Ce playbook permet la gestion d'une base de donnee sur le groupe ``` dbsrvgrp ```, donc la machine ``` db ```.
|
|
|
|
|
|
|
|
## Variables
|
|
|
|
|
|
|
|
Sur Ansible il y a un systeme de variable bien specifique, voici un schema qui permet de visualiser le systeme de variables:
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Il y a aussi les ```fact variables``` qui permet de renvoyer un json avec les informations d'une machines virtuelle specifique, on peut y acceder grace a cette commande:
|
|
|
|
|
|
|
|
```ansible all -i inventory -m setup -u {nom_machine}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Boucles, condition et les Handlers
|
|
|
|
|
|
|
|
Voici un autre exemple de playbook qui va nous permettre de gerer un service ntp sur toutes les machines, petite particularite de ce playbook est qu'il y a des verification a faire, nous allons donc utiliser ```when``` et ```loop``` au niveau des variables de ```group_vars``` :
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
---
|
|
|
|
- name: Provisioning Server
|
|
|
|
hosts: all
|
|
|
|
become: yes
|
|
|
|
tasks:
|
|
|
|
- name: Install NTP on Centos
|
|
|
|
yum:
|
|
|
|
name: "{{item}}"
|
|
|
|
state: present
|
|
|
|
when: ansible_distribution == "CentOS"
|
|
|
|
loop:
|
|
|
|
- ntp
|
|
|
|
- wget
|
|
|
|
- git
|
|
|
|
- zip
|
|
|
|
- unzip
|
|
|
|
tags:
|
|
|
|
- packages
|
|
|
|
|
|
|
|
- name: Install NTP on Ubuntu
|
|
|
|
apt:
|
|
|
|
name: "{{item}}"
|
|
|
|
state: present
|
|
|
|
update_cache: yes
|
|
|
|
when: ansible_distribution == "Ubuntu"
|
|
|
|
loop:
|
|
|
|
- ntp
|
|
|
|
- wget
|
|
|
|
- git
|
|
|
|
- zip
|
|
|
|
- unzip
|
|
|
|
tags:
|
|
|
|
- packages
|
|
|
|
|
|
|
|
- name: Start & enable NTP on Redhat
|
|
|
|
service:
|
|
|
|
name: ntpd
|
|
|
|
state: started
|
|
|
|
enabled: yes
|
|
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
tags:
|
|
|
|
- services
|
|
|
|
|
|
|
|
- name: Start & enable NTP on Debian
|
|
|
|
service:
|
|
|
|
name: ntp
|
|
|
|
state: started
|
|
|
|
enabled: yes
|
|
|
|
when: ansible_os_family == "Debian"
|
|
|
|
tags:
|
|
|
|
- services
|
|
|
|
|
|
|
|
- name: Add group
|
|
|
|
group:
|
|
|
|
name: devops
|
|
|
|
state: present
|
|
|
|
tags:
|
|
|
|
- system
|
|
|
|
|
|
|
|
- name: Add users
|
|
|
|
user:
|
|
|
|
name: "{{item}}"
|
|
|
|
state: present
|
|
|
|
groups: devops
|
|
|
|
loop: "{{usernames}}"
|
|
|
|
tags:
|
|
|
|
- system
|
|
|
|
|
|
|
|
- name: Banner file /etc/motd
|
|
|
|
copy:
|
|
|
|
content: "This {{ansible_distribution}} is Managed by Ansible.\n"
|
|
|
|
dest: /etc/motd
|
|
|
|
tags:
|
|
|
|
- system
|
|
|
|
|
|
|
|
- name: Deploy NTP conf file for RedHat
|
|
|
|
template:
|
|
|
|
src: templates/ntp_redhat.conf.j2
|
|
|
|
dest: /etc/ntp.conf
|
|
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
notify:
|
|
|
|
- Restart NTP on Redhat
|
|
|
|
tags:
|
|
|
|
- conf
|
|
|
|
|
|
|
|
- name: Deploy NTP conf file for Debian
|
|
|
|
template:
|
|
|
|
src: templates/ntp_debian.conf.j2
|
|
|
|
dest: /etc/ntp.conf
|
|
|
|
when: ansible_os_family == "Debian"
|
|
|
|
notify:
|
|
|
|
- Restart NTP on Debian
|
|
|
|
tags:
|
|
|
|
- conf
|
|
|
|
|
|
|
|
- name: Dir for dev data
|
|
|
|
file:
|
|
|
|
path: /opt/devdata
|
|
|
|
state: directory
|
|
|
|
mode: 0775
|
|
|
|
tags:
|
|
|
|
- system
|
|
|
|
|
|
|
|
handlers:
|
|
|
|
- name: Restart NTP on Redhat
|
|
|
|
service:
|
|
|
|
name: ntpd
|
|
|
|
state: restarted
|
|
|
|
enabled: yes
|
|
|
|
when: ansible_os_family == "RedHat"
|
|
|
|
|
|
|
|
- name: Restart NTP on Debian
|
|
|
|
service:
|
|
|
|
name: ntp
|
|
|
|
state: restarted
|
|
|
|
enabled: yes
|
|
|
|
when: ansible_os_family == "Debian"
|
|
|
|
|
|
|
|
``` |
|
|
|
\ No newline at end of file |