vmware.coreos-bootstrap
WAŻNE: po ansible 2.1, poniższy trik nie jest już ważny:
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
Dobrą wiadomością jest to, że nie jest to już potrzebne. Poniższe rozwiązanie jest teraz działające i kompatybilne ze starszymi i nowszymi wersjami ansible (i jest prostsze):
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
Aby efektywnie uruchomić ansible, maszyna docelowa musi mieć interpreter Pythona. Maszyny CoreOS są minimalne i nie zawierają żadnej wersji Pythona. Aby obejść to ograniczenie, możemy zainstalować pypy, lekki interpreter Pythona. Rola coreos-bootstrap zainstaluje pypy dla nas, a my zaktualizujemy nasz plik inwentarzowy, aby korzystał z zainstalowanego interpretera Pythona.
Aktualna wersja: 0.6.3
instalacja
ansible-galaxy install vmware.coreos-bootstrap
Konfiguracja projektu
W przeciwieństwie do typowej roli, musisz skonfigurować Ansible, aby używał alternatywnego interpretera Pythona dla hostów CoreOS. Można to zrobić, dodając grupę coreos
do swojego pliku inwentarzowego oraz ustawiając zmienne grupy na używanie nowego interpretera Pythona. W ten sposób możesz używać ansible do zarządzania hostami CoreOS i nie-CoreOS. Po prostu umieść każdy host z CoreOS w grupie inwentarzowej coreos
, a on automatycznie użyje określonego interpretera Pythona.
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
To skonfiguruje ansible do użycia interpretera Pythona w /home/core/bin/python
, który zostanie utworzony przez rolę coreos-bootstrap.
Playbook Bootstrap
Teraz możesz po prostu dodać poniższe do swojego pliku playbook i zawrzeć go w swoim site.yml
, aby uruchomić go na wszystkich hostach w grupie coreos.
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
Upewnij się, że gather_facts
jest ustawione na false, w przeciwnym razie ansible spróbuje najpierw zebrać informacje o systemie przy użyciu Pythona, który nie jest jeszcze zainstalowany!
Przykład Playbooka
Po zainstalowaniu bootstrap, możesz używać ansible jak zwykle do zarządzania usługami systemowymi, instalowania modułów Pythona (przez pip) i uruchamiania kontenerów. Poniżej znajduje się podstawowy przykład, który uruchamia usługę etcd
, instaluje moduł docker-py
, a następnie używa modułu ansible docker
, aby pobrać i uruchomić podstawowy kontener nginx.
- name: Przykład Nginx
hosts: web
tasks:
- name: Uruchom etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: Zainstaluj docker-py
pip: name=docker-py
- name: pobierz kontener
raw: docker pull nginx:1.7.1
- name: uruchom kontener nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
Licencja
MIT
ansible-galaxy install vmware.coreos-bootstrap