ansible_bootstrap
Ansible Роль: ansible-bootstrap
Для эффективной работы ansible, на целевой машине должен быть установлен интерпретатор python. Машины CoreOS и Flatcar Linux минималистичны и не содержат ни одной версии python. Кроме того, при использовании jumpbox'ов, которые управляются кем-то другим, у вас ограниченный доступ к установке программного обеспечения, и вы можете установить его только в одну структуру каталога.
Чтобы обойти это ограничение, устанавливается портативная версия pypy, легковесный интерпретатор python. Роль ansible-bootstrap установит pypy, включая pip, в домашний каталог пользователя, создаст символьные ссылки для удобного использования нового стека python и настроит пути. Затем вы сможете обновить наш файл инвентаря, чтобы использовать установленный интерпретатор python на ваших узлах Container Linux с помощью ansible.
Кроме того, это становится чрезвычайно полезно для настройки содержимого структуры контроллера ansible в этой модели. В связи с этим были добавлены дополнительные функции как для настройки pypy для управления ansible, так и для ansible в качестве контроллера с включенным проксированием ssh через bastion host.
Переменные Роли:
Включить PIP
Установка этого значения управляет установкой PIP и необходимых инструментов в домашний каталог пользователя. Значение по умолчанию - 'True'.
enable_pip: True
Включить Ansible
Установка этого значения контролирует установку ansible с использованием нового pypy окружения. Также в ~/bin создаются символьные ссылки для приложений и добавляются в путь пользователя в .bashrc. Значение по умолчанию - 'False'.
enable_ansible: True
Включить Папки Ansible
Установка этого значения создает инфраструктуру папок и конфигурационные файлы для контроллера ansible, развернутого в домашнем каталоге, как и остальное программное обеспечение. Значение по умолчанию - 'False'.
enable_ansible_folders: True
Включить Общие Папки Ролей Ansible
Установка этого значения создает инфраструктуру папок для общей роли в ~/ansible/roles/common с использованием ansible-galaxy. Значение по умолчанию - 'False'.
enable_ansible_common_role: True
Включить Bastion (для Проксирования SSH Ansible)
Установка этого значения создает конфигурацию ansible для использования ansible с проксированием ssh через bastion host в файле ansible/ssh.cfg. Значение по умолчанию - 'False'.
enable_bastion: True
bastion_hostname: bastion.contoso.ltd # Полное доменное имя Bastion Host
bastion_user: bwayne # Пользователь Bastion Host
bastion_ip: 172.168.1.10 # IP-адрес Bastion Host
bastion_ansible_host: 192.168.1.* # Хосты на другой стороне Bastion
Установка
Используйте ansible-galaxy для установки последнего модуля.
ansible-galaxy install ppouliot.ansible-bootstrap
Настройте ваш проект
В отличие от типичной роли, вам нужно настроить Ansible для использования альтернативного интерпретатора python для контейнерных linux-хостов. Это можно сделать, добавив группу container-linux в ваш файл инвентаря и установив переменные группы для использования нового интерпретатора python. Таким образом, вы сможете управлять hостами CoreOS и не CoreOS с помощью ansible. Просто поместите каждый хост с CoreOS в группу инвентаря container-linux, и он автоматически использует указанный интерпретатор python.
[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.*
Это настроит ansible использовать интерпретатор python по адресу /home/core/bin/python, который будет создан ролью ansible-bootstrap.
Bootstrap Playbook
Теперь вы можете просто добавить следующее в ваш playbook файл и включить его в ваш site.yml, чтобы он выполнялся на всех хостах в группе container-linux.
- hosts: container-linux
gather_facts: False
remote_user: core
roles:
- ppouliot.ansible-bootstrap
Убедитесь, что gather_facts установлен в false, в противном случае ansible попытается сначала собрать системные сведения с помощью python, который еще не установлен!
Участники
- Peter Pouliot peter@pouliot.net
Авторские права и Лицензия
Авторские права (C) 2018 Peter J. Pouliot
С Peter Pouliot можно связаться по адресу: peter@pouliot.net
Лицензировано под лицензией Apache, версия 2.0 ("Лицензия"); вы не можете использовать этот файл, за исключением случаев, предусмотренных Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если иное не требует закон или не согласовано письменно, программное обеспечение, распространяемое в соответствии с Лицензией, распространяется на условиях "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО ВИДА, явных или подразумевающихся. Смотрите Лицензию для конкретных прав и ограничений, регулирующих лицензирование.
ansible-galaxy install ppouliot/ansible-role-ansible-bootstrap