coreos-bootstrap
ВАЖНО: после ansible 2.1 следующий трюк больше не работает:
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
Хорошая новость в том, что это больше не нужно. Теперь работает следующее, что совместимо со старыми и новыми версиями ansible (и это проще):
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
Для эффективного использования ansible целевая машина должна иметь интерпретатор python. Машины CoreOS минималистичны и не поставляются с версией python. Чтобы обойти это ограничение, мы можем установить pypy, легковесный интерпретатор python. Роль coreos-bootstrap установит pypy для нас, а мы обновим наш файл инвентаризации, чтобы использовать установленный интерпретатор python.
Текущая версия: 0.6.3
Установка
ansible-galaxy install vmware.coreos-bootstrap
Настройте свой проект
В отличие от обычной роли, вам нужно настроить ansible для использования альтернативного интерпретатора python для хостов coreos. Это можно сделать, добавив группу coreos
в ваш файл инвентаризации и установив переменные группы для использования нового интерпретатора python. Таким образом, вы можете использовать ansible для управления как CoreOS, так и не-CoreOS хостами. Просто поместите каждый хост с CoreOS в группу инвентаризации coreos
, и он автоматически будет использовать указанный интерпретатор python.
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
Это настроит ansible для использования интерпретатора python по адресу /home/core/bin/python
, который будет создан ролью coreos-bootstrap.
Bootstrap Playbook
Теперь вы можете просто добавить следующее в ваш файл playbook и включить его в ваш site.yml
, чтобы он выполнялся на всех хостах в группе coreos.
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
Убедитесь, что gather_facts
установлен в false, иначе ansible попытается сначала собрать системные факты с помощью python, который еще не установлен!
Пример Playbook
После bootstrap вы можете использовать ansible как обычно для управления системными службами, установки модулей python (через pip) и запуска контейнеров. Ниже приведен базовый пример, который запускает сервис etcd
, устанавливает модуль docker-py
, а затем использует модуль ansible docker
, чтобы загрузить и запустить базовый контейнер nginx.
- name: Пример Nginx
hosts: web
tasks:
- name: Запустить etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: Установить docker-py
pip: name=docker-py
- name: загрузить контейнер
raw: docker pull nginx:1.7.1
- name: запустить контейнер nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
Лицензия
MIT
ansible-galaxy install vmware/ansible-coreos-bootstrap