vmware.coreos-bootstrap
IMPORTANT : après Ansible 2.1, l'astuce suivante n'est plus valable :
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
La bonne nouvelle est que ce n'est plus nécessaire non plus. Ce qui suit fonctionne maintenant et est compatible avec les anciennes et les nouvelles versions d'Ansible (et c'est plus simple) :
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
Pour exécuter Ansible efficacement, la machine cible doit avoir un interpréteur Python. Les machines CoreOS sont minimales et n'ont pas de version de Python intégrée. Pour contourner cette limitation, nous pouvons installer pypy, un interpréteur Python léger. Le rôle coreos-bootstrap installera pypy pour nous, et nous mettrons à jour notre fichier d'inventaire pour utiliser l'interpréteur Python installé.
Version actuelle : 0.6.3
installation
ansible-galaxy install vmware.coreos-bootstrap
Configurez votre projet
Contrairement à un rôle typique, vous devez configurer Ansible pour utiliser un interpréteur Python alternatif pour les hôtes CoreOS. Cela peut être fait en ajoutant un groupe coreos
à votre fichier d'inventaire et en définissant les variables du groupe pour utiliser le nouvel interpréteur Python. De cette façon, vous pouvez utiliser Ansible pour gérer les hôtes CoreOS et non-CoreOS. Placez simplement chaque hôte ayant CoreOS dans le groupe d'inventaire coreos
, et il utilisera automatiquement l'interpréteur Python spécifié.
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
Cela configurera Ansible pour utiliser l'interpréteur Python à /home/core/bin/python
, qui sera créé par le rôle coreos-bootstrap.
Playbook de démarrage
Vous pouvez maintenant simplement ajouter ce qui suit à votre fichier de playbook et l'inclure dans votre site.yml
afin qu'il s'exécute sur tous les hôtes du groupe coreos.
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
Assurez-vous que gather_facts
est défini sur faux, sinon Ansible essaiera d'abord de rassembler des informations système en utilisant Python qui n'est pas encore installé !
Exemple de Playbook
Après le démarrage, vous pouvez utiliser Ansible comme d'habitude pour gérer les services système, installer des modules Python (via pip) et exécuter des conteneurs. Voici un exemple de base qui démarre le service etcd
, installe le module docker-py
puis utilise le module Ansible docker
pour récupérer et démarrer un conteneur nginx de base.
- name: Exemple Nginx
hosts: web
tasks:
- name: Démarrer etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: Installer docker-py
pip: name=docker-py
- name: tirer le conteneur
raw: docker pull nginx:1.7.1
- name: lancer le conteneur nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
Licence
MIT
ansible-galaxy install vmware.coreos-bootstrap