Voici ma présentation d'Ansible lors du meetup Sacrée Tech de Reims.
@SacreeTech
sacreetech@gmail.com
- Présentation d'Ansible
- L'installation
- Le vocabulaire
- Les best practices
- Use case chez Allo-Media
lien de la présentation sur Gslides: https://bit.ly/31MZgUy
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Ansible, voyage au centre de l'automatisation
1. HUBERT Mickaël / Allo-Media 2020
HUBERT Mickaël
Ansible, voyage au centre de l’automatisation
1
2. HUBERT Mickaël / Allo-Media 2020
Ansible, c’est quoi ?
Créé en 2012 par Michael DeHaan
Racheté par Red Hat en 2015
Développé en Python
Agentless architecture
C’est une solution pour les feignants !
● Déploiements
● Exécution de tâches
● Gestion de configurations
Le tout sur plusieurs environnements en parallèle
2
www.ansible.com
3. HUBERT Mickaël / Allo-Media 2020
Plus de 1400 modules
disponibles
regroupés en grandes
familles
● Cloud modules
● Clustering modules
● Commands modules
● Crypto modules
● Database modules
● Files modules
● Identity modules
● Inventory modules
● Messaging modules
● Monitoring modules
● Net Tools modules
● Network modules
● Notification modules
● Packaging modules
● Remote Management modules
● Source Control modules
● Storage modules
● System modules
● Utilities modules
● Web Infrastructure modules
● Windows modules
3
4. HUBERT Mickaël / Allo-Media 2020
Plus de 1400 modules
disponibles
regroupés en grandes
familles
● Cloud modules
● Clustering modules
● Commands modules
● Crypto modules
● Database modules
● Files modules
● Identity modules
● Inventory modules
● Messaging modules
● Monitoring modules
● Net Tools modules
● Network modules
● Notification modules
● Packaging modules
● Remote Management modules
● Source Control modules
● Storage modules
● System modules
● Utilities modules
● Web Infrastructure modules
● Windows modules
4
5. HUBERT Mickaël / Allo-Media 2020
Plus de 1400 modules
disponibles
regroupés en grandes
familles
● Cloud modules
● Clustering modules
● Commands modules
● Crypto modules
● Database modules
● Files modules
● Identity modules
● Inventory modules
● Messaging modules
● Monitoring modules
● Net Tools modules
● Network modules
● Notification modules
● Packaging modules
● Remote Management modules
● Source Control modules
● Storage modules
● System modules
● Utilities modules
● Web Infrastructure modules
● Windows modules
5
7. HUBERT Mickaël / Allo-Media 2020
Vocabulaire
● inventory : C’est l’inventaire des serveurs que l’on souhaite provisionner
● fact : L’ensemble des informations que Ansible va être capable de récupérer sur le host (IP, OS, version
d’OS, etc …)
● var : L’ensemble des variables que l’on va utiliser dans nos actions avec Ansible
● template : C’est un template de fichier au format Jinja2 (comparable à Twig en PHP)
● module : Les fameux 1400 modules composant Ansible
● task : Utilisation d’un module que l’on va exécuter
● role : Regroupement d’un ensemble de tasks, variables, templates
● playbook : Regroupement d’un ensemble de roles ou tasks
7
8. HUBERT Mickaël / Allo-Media 2020
Diagramme
WEB 1
WEB 2
WEB 3
WEB 4
Variables
Inventaires
Tâches
La machine hébergeant Ansible
- Un serveur commun aux admins
- Votre laptop
Templates / files
8
9. HUBERT Mickaël / Allo-Media 2020
Ansible directories best practices
inventories/
production/
hosts # inventory file for production servers
group_vars/
group1.yml # here we assign variables to
particular groups
group2.yml
host_vars/
hostname1.yml # here we assign variables to
particular systems
hostname2.yml
site.yml
roles/
common/
webtier/
monitoring/
fooapp/
sources: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html
9
10. HUBERT Mickaël / Allo-Media 2020
Roles directories best practices
site.yml
roles/
common/
tasks/
handlers/
files/
templates/
vars/
defaults/
meta/
test/
webservers/
tasks/
defaults/
# contains the main list of tasks to be executed by the role.
# contains handlers, which may be used by this role or even anywhere outside this role.
# default variables for the role.
# other variables for the role.
# contains files which can be deployed via this role.
# contains templates which can be deployed via this role.
sources: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-directory-structure
# role / author description.
# how to test your role (not in Ansible best practices).
10
20. HUBERT Mickaël / Allo-Media 2020
Comment tester son truc ?
main.yml
---
- name: Freeswitch installation by sources compilation
hosts: all
become: yes
pre_tasks:
- name: Verify Ansible version requirements.
....
roles:
- ../../fs_install
Avec Vagrant
- ansible-voip - roles - fs_install - tasks
- templates
- test
20
21. HUBERT Mickaël / Allo-Media 2020
Comment tester son truc ?
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "debian/stretch64"
# freeswitch
config.vm.define "freeswitch-dev" do |freeswitch|
freeswitch.vm.hostname = "freeswitch-dev"
freeswitch.vm.network :private_network, ip: "10.99.0.224"
freeswitch.vm.network :private_network, ip: "10.99.1.224"
end
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", 1024]
vb.customize ["modifyvm", :id, "--cpus", 2]
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "main.yml"
end
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.name = "freeswitch-dev"
end
end
# vagrant up
ou
# vagrant provision
21
22. HUBERT Mickaël / Allo-Media 2020
Créer son propre rôle
et le partager à la communauté
https://galaxy.ansible.com https://github.com/Mickaelh51/ar-opensips-from-sources
22