vmware.coreos-bootstrap
WICHTIG: Nach Ansible 2.1 ist der folgende Trick nicht mehr gültig:
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
Die gute Nachricht ist, dass es auch nicht mehr nötig ist. Folgendes funktioniert jetzt und ist mit alten und neuen Ansible-Versionen kompatibel (und ist einfacher):
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
Um Ansible effektiv auszuführen, benötigt die Zielmaschine einen Python-Interpreter. CoreOS-Maschinen sind minimal und haben keine Python-Version vorinstalliert. Um dieses Problem zu umgehen, können wir pypy installieren, einen leichtgewichtigen Python-Interpreter. Die CoreOS-Boostrap-Rolle installiert Pypy für uns, und wir werden unsere Inventardatei so aktualisieren, dass sie den installierten Python-Interpreter verwendet.
Aktuelle Version: 0.6.3
Installation
ansible-galaxy install vmware.coreos-bootstrap
Konfigurieren Ihres Projekts
Im Gegensatz zu einer typischen Rolle müssen Sie Ansible so konfigurieren, dass ein alternativer Python-Interpreter für CoreOS-Hosts verwendet wird. Dies kann erreicht werden, indem Sie eine coreos
-Gruppe zu Ihrer Inventardatei hinzufügen und die Variablen der Gruppe so einstellen, dass sie den neuen Python-Interpreter verwenden. Auf diese Weise können Sie Ansible verwenden, um CoreOS- und Nicht-CoreOS-Hosts zu verwalten. Fügen Sie einfach jeden Host, der CoreOS hat, in die Inventargruppe coreos
ein, und es wird automatisch der angegebene Python-Interpreter verwendet.
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
Dies konfiguriert Ansible so, dass der Python-Interpreter unter /home/core/bin/python
verwendet wird, der von der CoreOS-Boostrap-Rolle erstellt wird.
Bootstrap-Playbook
Jetzt können Sie einfach Folgendes zu Ihrer Playbook-Datei hinzufügen und es in Ihre site.yml
aufnehmen, sodass es auf allen Hosts in der CoreOS-Gruppe ausgeführt wird.
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
Stellen Sie sicher, dass gather_facts
auf false gesetzt ist, da Ansible sonst zuerst versucht, Systeminformationen mit Python zu sammeln, das noch nicht installiert ist!
Beispiel-Playbook
Nach dem Bootstrap können Sie Ansible wie gewohnt verwenden, um Systemdienste zu verwalten, Python-Module (über pip) zu installieren und Container auszuführen. Im Folgenden finden Sie ein einfaches Beispiel, das den etcd
-Dienst startet, das docker-py
-Modul installiert und dann das Ansible-Docker-Modul verwendet, um einen einfachen Nginx-Container herunterzuladen und zu starten.
- name: Nginx-Beispiel
hosts: web
tasks:
- name: Start etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: Installiere docker-py
pip: name=docker-py
- name: Container ziehen
raw: docker pull nginx:1.7.1
- name: Starte Nginx-Container
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
Lizenz
MIT