Utilisation de ansible

Ansible est un outil d'orchestration, il permet de configurer un ensemble de machines de manière coordonnée et reproductible. Pour ce TP, vous allez vous baser sur le tutoriel suivant ansible qui présente les base d'ansible. Le but est de configurer un ensemble de machines de manière à construire un cluster kubernetes.

Dans le projet gsp-rico de openstack, créez 4 machines :

  1. slavor small
  2. image Ubuntu Server 18.04.4 LTS - Bionic Beaver
  3. n'oubliez pas la clef ssh

Sur votre pc installez ansible

Créer un répertoire pour le TP que nous appelerons dans la suite HOME_ANSIBLE, vous pouvez télécharger ici un exemple de fichier de configuration ansible.

  • Modifiez le pour que le fichier hosts soit HOME_ANSIBLE/hosts
  • Dans ce fichier, décrivez vos 4 machines :
[rke_master]
192.168.167.12

[rke_slave_etcd]
192.168.167.4
192.168.167.18

[rke_slave_control]
192.168.167.6

192.1568.167.12, 192.168.167.4, 192.168.167.18 et 192.168.167.6 sont les adresses de vos 4 machines.

  • testez le fonctionnement avec la commande
ansible all -m ping --extra-vars "ansible_user=ubuntu"
  • quel est le rôle de l'option --extra-vars ?

Vous allez créer un playbook permettant d'installer docker sur les machines. Les actions a faire sont décrite dans le TP Installation de docker

Chaque tâche à effectuer correspond à une tâche du playbook, de plus :

  1. la connexion se fait avec l'utilisateur ubuntu, via la variable ansible_user à définir dans le fichier
  2. si une tâche nécessite des droits d'administrateur, il faut imposer le sudo en ajoutant become: yes à la description de la tâche
  3. les types de tâche à utiliser sont :
    1. apt pour la gestion des installations via apt apt_module.html
    2. shell pour les commandes bash (shell_module.html)
    3. group pour créer le groupe docker (group_module.html)
    4. user pour ajouter l'utilisateur ubuntu au groupe docker (user_module.html)
    5. file pour créer un fichier ou un répertoire (file_module.html)
    6. service pour la gestion du service docker (service_module.html)

Testez au fur et à mesure et une fois l'installation faite, vérifiez bien que docker est fonctionnel et permet de télécharger des images docker.

Pour l'installation de kubernetes, les machines ne vont pas toutes jouer le même rôle. Nous allons utiliser rke pour cette installation, et pour cela, il faut que l'une des machine soit manager rke et soit configurée différemment.

Après avoir lu l'explication des rôles ansible, vous allez créer 2 rôle :

  1. un rôle common pour toutes les machines
  2. un rôle rke-manager pour l'installeur rke

clef ssh

Pour l'installation de kubernetes, nous allons suivre le début du TP Kubernetes

Les machines doivent être accessibles depuis le manager rke via une clef ssh

  • creez une paire de clef ssh
  • utilisez le authorized_key ansible pour distribuer la clef sur toutes les machines
  • utilisez le file ansible pour placer la clef privée dans le manager rke (fichier /home/ubuntu/.ssh/id_rsa) Attention, le propriétaire doit être ubuntu:ubuntu et les droits 600.
  • testez le fonctionnement
  • protéger la clef via une vault

Pour cela, vous pouvez :

  1. créer une variable ssh_secret_key qui contient la clef secrette
  2. chiffrer le fichier de variables
  3. utiliser un template pour le fichier id_rsa qui contient :
{{ ssh_secret_key }}

Modification du fichier ''/etc/environment''

Le manager rke ne dois pas utiliser le proxy de l'université pour contacter les autres machine du cluster. Pour que cela soit possible il faut que le fichier /etc/environment contienne :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

http_proxy=http://proxy.univ-lyon1.fr:3128
ftp_proxy=http://proxy.univ-lyon1.fr:3128
https_proxy=http://proxy.univ-lyon1.fr:3128
all_proxy=http://proxy.univ-lyon1.fr:3128
HTTP_PROXY=http://proxy.univ-lyon1.fr:3128
FTP_PROXY=http://proxy.univ-lyon1.fr:3128
HTTPS_PROXY=http://proxy.univ-lyon1.fr:3128
ALL_PROXY=http://proxy.univ-lyon1.fr:3128
no_proxy=192.168.167.12, 192.168.167.4, 192.168.167.18, 192.168.167.6, localhost,.univ-lyon1.fr
NO_PROXY=192.168.167.12, 192.168.167.4, 192.168.167.18, 192.168.167.6, localhost,.univ-lyon1.fr

192.168.167.12, 192.168.167.4, … est la liste de vos machine.

Le mieu pour faire cela est d'utiliser un template et la possibilité de faire des boucle dans le template via Jinja2 templates

La liste de vos machines est présente dans la variable groups['all']

  • faire un template dans le rôle common et vérifiez sont fonctionnement

Pour terminer l'installation, il faut sur le manager :

  1. télécharger et installer rke via une tâche de type get_url (get_url_module.html
  2. Créer le fichier de configuration du cluster à partir de ce template cluster.yml.txt et placer la configuration dans /home/ubuntu
  3. lancer rke via une tâche de type shell

Si cela fonctionne, vous n'avez plus qu'à utiliser votre cluster.

Ma version est ici

  • gsp/2019/tpansible.txt
  • Dernière modification : 2020/06/05 13:26
  • de fabien.rico