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.
Préparation
Dans le projet gsp-rico
de openstack, créez 4 machines :
- slavor
small
- image
Ubuntu Server 18.04.4 LTS - Bionic Beaver
- n'oubliez pas la clef ssh
Sur votre pc installez ansible
Configuration de base
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
soitHOME_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
Où 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
?
Un premier playbook
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 :
- la connexion se fait avec l'utilisateur
ubuntu
, via la variableansible_user
à définir dans le fichier - si une tâche nécessite des droits d'administrateur, il faut imposer le
sudo
en ajoutantbecome: yes
à la description de la tâche - les types de tâche à utiliser sont :
apt
pour la gestion des installations via apt apt_module.htmlshell
pour les commandes bash (shell_module.html)file
pour créer un fichier ou un répertoire (file_module.html)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.
Utilisation des rôles
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 :
- un rôle
common
pour toutes les machines - 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 êtreubuntu:ubuntu
et les droits600
. - testez le fonctionnement
- protéger la clef via une
vault
Pour cela, vous pouvez :
- créer une variable
ssh_secret_key
qui contient la clef secrette - chiffrer le fichier de variables
- utiliser un
template
pour le fichierid_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
où 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
Utilisation de rke
Pour terminer l'installation, il faut sur le manager :
- télécharger et installer rke via une tâche de type
get_url
(get_url_module.html - Créer le fichier de configuration du cluster à partir de ce template cluster.yml.txt et placer la configuration dans
/home/ubuntu
- lancer rke via une tâche de type
shell
Si cela fonctionne, vous n'avez plus qu'à utiliser votre cluster.
Correction
Ma version est ici