vmware.coreos-bootstrap
IMPORTANTE: después de ansible 2.1, el siguiente truco ya no es válido:
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
La buena noticia es que tampoco se necesita. Ahora lo siguiente funciona y es compatible con ansible antiguo y nuevo (y es más simple):
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
Para ejecutar ansible de manera efectiva, la máquina objetivo necesita tener un intérprete de python. Las máquinas CoreOS son mínimas y no incluyen ninguna versión de python. Para solucionar esta limitación, podemos instalar pypy, un intérprete de python liviano. El rol coreos-bootstrap instalará pypy por nosotros y actualizaremos nuestro archivo de inventario para usar el intérprete de python instalado.
Versión actual: 0.6.3
instalación
ansible-galaxy install vmware.coreos-bootstrap
Configura tu proyecto
A diferencia de un rol típico, necesitas configurar Ansible para usar un intérprete de python alternativo para los hosts CoreOS. Esto se puede hacer agregando un grupo coreos
a tu archivo de inventario y configurando las variables del grupo para usar el nuevo intérprete de python. De esta manera, puedes usar ansible para gestionar hosts CoreOS y no CoreOS. Simplemente coloca cada host que tenga CoreOS en el grupo de inventario coreos
y usará automáticamente el intérprete de python especificado.
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
Esto configurará ansible para usar el intérprete de python en /home/core/bin/python
, que será creado por el rol coreos-bootstrap.
Playbook de Bootstrap
Ahora puedes simplemente agregar lo siguiente a tu archivo de playbook e incluirlo en tu site.yml
para que se ejecute en todos los hosts del grupo coreos.
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
Asegúrate de que gather_facts
esté configurado en falso, ¡de lo contrario, ansible intentará recopilar primero los datos del sistema usando python, que aún no está instalado!
Ejemplo de Playbook
Después del bootstrap, puedes usar ansible como de costumbre para gestionar servicios del sistema, instalar módulos de python (a través de pip) y ejecutar contenedores. A continuación, se muestra un ejemplo básico que inicia el servicio etcd
, instala el módulo docker-py
y luego utiliza el módulo docker
de ansible para descargar e iniciar un contenedor básico de nginx.
- name: Ejemplo de Nginx
hosts: web
tasks:
- name: Iniciar etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: Instalar docker-py
pip: name=docker-py
- name: descargar contenedor
raw: docker pull nginx:1.7.1
- name: lanzar contenedor nginx
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
Licencia
MIT
ansible-galaxy install vmware.coreos-bootstrap