ppouliot.ansible_bootstrap

Ansible Galaxy Ansible Galaxy Downloads

Rol de Ansible: ansible-bootstrap


Para ejecutar Ansible de manera efectiva, la máquina objetivo necesita tener un intérprete de Python. Las máquinas CoreOS y Flatcar Linux son mínimas y no vienen con ninguna versión de Python. Además, al usar jumpboxes que son gestionadas por otra persona, tienes acceso limitado para instalar software y es posible que solo puedas instalar en una única estructura de directorios.

Para sortear esta limitación, se instala una versión portable de pypy, un intérprete de Python ligero. El rol de ansible-bootstrap instalará pypy, incluido pip, en el directorio home del usuario, creará enlaces simbólicos para un uso más fácil de la nueva pila de Python y ajustará las rutas. Luego, puedes actualizar tu archivo de inventario para usar el intérprete de Python instalado en tus nodos de Container Linux con Ansible.

Además, se vuelve extremadamente útil configurar una estructura de controlador Ansible contenida en este modelo. Por lo tanto, se han agregado características adicionales tanto para configurar pypy para el control de Ansible como para Ansible como un controlador con el proxy SSH a través de un host bastión habilitado.

Variables del rol:


Habilitar PIP

Configurar este valor controla la instalación de PIP y las herramientas necesarias en el directorio home del usuario. El valor predeterminado está configurado como 'True'.

enable_pip: True

Habilitar Ansible

Configurar este valor controla la instalación de Ansible utilizando el nuevo entorno pypy desplegado. Además, se crean enlaces simbólicos en ~/bin para la aplicación y se añaden para usar en la declaración de ruta del usuario en .bashrc. El valor predeterminado está configurado como 'False'.

enable_ansible: True

Habilitar Carpetas de Ansible

Configurar este valor crea la infraestructura de carpetas y los archivos de configuración para un controlador Ansible desplegado en el directorio home, junto con el resto de las herramientas. El valor predeterminado está configurado como 'False'.

enable_ansible_folders: True

Habilitar Carpetas de Rol Común de Ansible

Configurar este valor crea la infraestructura de carpetas para un rol común en ~/ansible/roles/common usando ansible-galaxy. El valor predeterminado está configurado como 'False'.

enable_ansible_common_role: True

Habilitar Bastión (para Proxy SSH Ansible)

Configurar este valor crea una configuración de Ansible para usar Ansible con proxy SSH a través de un host bastión en el archivo ansible/ssh.cfg. El valor predeterminado está configurado como 'False'.

enable_bastion: True
bastion_hostname: bastion.contoso.ltd # FQDN del Host Bastión
bastion_user: bwayne # Usuario del Host Bastión
bastion_ip: 172.168.1.10 # Dirección IP del Host Bastión
bastion_ansible_host: 192.168.1.* # Hosts al otro lado del Bastión

Instalación


Usa ansible-galaxy para instalar el último módulo.

ansible-galaxy install ppouliot.ansible-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 container-linux. Esto se puede hacer agregando un grupo de container-linux 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 de container-linux y automáticamente usará el intérprete de Python especificado.

[container-linux]
host-01
host-02

[container-linux:vars]
enable_pip=True
ansible_ssh_user=core
ansible_python_interpreter=/home/core/bin/python
ansible_connection=ssh
ansible_ssh_private_key_file=/etc/ansible/keys/id_rsa

enable_ansible=True
enable_ansible_folders=True
enable_bastion=True

bastion_hostname=bastion.contoso.ltd
bastion_user=bwayne
bastion_ip=172.168.1.10
bastion_ansible_host=192.168.1.*

Esto configurará Ansible para usar el intérprete de Python en /home/core/bin/python, que será creado por el rol de ansible-bootstrap.

Playbook de Bootstrap


Ahora simplemente puedes añadir lo siguiente a tu archivo de playbook e incluirlo en tu site.yml para que se ejecute en todos los hosts del grupo container-linux.

- hosts: container-linux
  gather_facts: False
  remote_user: core
  roles:
    - ppouliot.ansible-bootstrap

Asegúrate de que gather_facts esté configurado como false, de lo contrario, Ansible intentará primero recopilar información del sistema usando Python, que aún no está instalado.

Colaboradores



Copyright (C) 2018 Peter J. Pouliot

Peter Pouliot se puede contactar en: peter@pouliot.net

Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en

http://www.apache.org/licenses/LICENSE-2.0

A menos que la ley aplicable lo requiera o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye en una base "COMO ESTÁ", SIN GARANTÍAS O CONDICIONES DE NINGÚN TIPO, ni explícitas ni implícitas. Consulta la Licencia para obtener la información específica que rige los permisos y limitaciones bajo la Licencia.

Acerca del proyecto

A PYPY (and pip) deployment for bootstrapping Ansible resources.

Instalar
ansible-galaxy install ppouliot.ansible_bootstrap
Licencia
apache-2.0
Descargas
239
Propietario