--Outil d'automatisation de la gestion de la configuration réalisé par python
| Term | Description | 
|---|---|
| Inventory | Spécifiez le nœud cible. Format INI | 
| Playbook | Décrivez le flux de traitement que vous souhaitez exécuter sur le nœud cible. Format YAML | 
Créé par des utilisateurs généraux
useradd -s /bin/bash -m ansible
passwd ansible
#Accorder des privilèges sudo
echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/ansible
su - ansible
cd ~
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub 192.168.56.152 (Adresse IP du nœud cible)
Commande d'installation
su - ansible
sudo yum -y install epel-release
sudo yum -y install gcc libffi-devel python-devel openssl-devel python-pip
sudo pip install --upgrade pip
#Non requis si virtualenv n'est pas utilisé
sudo pip install virtualenv
#Non requis si virtualenv n'est pas utilisé
cd ~
virtualenv venv
source venv/bin/activate
pip install "ansible==2.2"
Créer un répertoire de travail
su - ansible
cd ~
mkdir -p practice/{inventory,{group,host}_vars,roles,playbooks}
touch practice/{inventory/inventory.ini,group_vars/all.yml}
Créer un fichier d'inventaire
su - ansible
cd ~/practice
vim inventory/inventory.ini
inventory/inventory.ini
[practice_servers]
practice01 ansible_host=192.168.56.152 #Target Node 
Confirmation de la communication
#Confirmez que les informations sur le serveur du nœud cible sont renvoyées en tant que réponse
ansible practice_servers -i inventory/inventory.ini -m setup
Création de playbook
su - ansible
cd ~/practice
vim playbooks/initial_setting.yml
~/practice/playbooks/initial_setting.yml
---
- hosts: practice_servers
  become: yes #Implémenter sudo sur le serveur cible
  become_user: root #Effectué pour le compte de l'utilisateur root
  tasks:
    - name: 1. Set hostname
      hostname:
        name: practice01
    - name: 2. Install required packages
      yum:
        name: "{{ item }}"
      with_items: 
        - vim
        - git
Exécuter le playbook
su - ansible
cd ~/practice
ansible-playbook -i inventory/inventory.ini playbooks/initial_setting.yml
Controller
Vagrant.configure("2") do |config|
  # Basic VM settings
  config.vm.box = "CentOS7.0"
  config.vm.box_download_insecure = true
  config.vm.hostname = 'controller'
  config.vm.network "private_network",ip:"192.168.56.151"
	config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'
  config.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2151
	config.ssh.insert_key = false
  # Virtual box setting
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--ostype", "Redhat_64"]
    vb.name = "ansible_controller"
    vb.memory = 512
    vb.cpus = 1
  end
end
Target_Node
Vagrant.configure("2") do |config|
  # Basic VM settings
  config.vm.box = "CentOS7.0"
  config.vm.box_download_insecure = true
  config.vm.hostname = 'practice'
  config.vm.network "private_network",ip:"192.168.56.152"
	config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'
  config.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2152
	config.ssh.insert_key = false
  # Virtual box setting
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--ostype", "Redhat_64"]
    vb.name = "practice"
    vb.memory = 512
    vb.cpus = 1
  end
end