ppouliot.ansible_bootstrap
Ansible Rolle: ansible-bootstrap
Um Ansible effektiv auszuführen, benötigt die Zielmaschine einen Python-Interpreter. CoreOS- und Flatcar-Linux-Maschinen sind minimal und bieten keine Python-Version. Wenn Sie zusätzlich Jumpboxes verwenden, die von jemand anderem verwaltet werden, haben Sie eingeschränkten Zugriff auf die Softwareinstallation und können möglicherweise nur in eine einzige Verzeichnisstruktur installieren.
Um dieses Problem zu umgehen, wird eine portable Version von pypy, ein leichter Python-Interpreter, installiert. Die ansible-bootstrap-Rolle installiert pypy, einschließlich pip, im Benutzerverzeichnis, erstellt Symlinks für die einfache Verwendung des neu installierten Python-Stacks und passt die Pfade an. Dann können Sie Ihre Inventardatei aktualisieren, um den installierten Python-Interpreter auf Ihren Container-Linux-Knoten mit Ansible zu verwenden.
Zusätzlich wird es äußerst nützlich, eine enthaltene Ansible-Controller-Struktur in dieses Modell zu bootstrappen. Daher wurden zusätzliche Funktionen sowohl für das Bootstrapping von pypy für die Ansible-Steuerung als auch für Ansible als Controller mit aktiviertem SSH-Bastion-Host-Proxying hinzugefügt.
Rollenspezifische Variablen:
PIP aktivieren
Mit dieser Einstellung steuern Sie die Installation von PIP und erforderlichen Werkzeugen im Benutzerverzeichnis. Der Standardwert ist auf "True" gesetzt.
enable_pip: True
Ansible aktivieren
Mit dieser Einstellung steuern Sie die Installation von Ansible mit der neu bereitgestellten pypy-Umgebung. Außerdem werden Symlinks in ~/bin für Anwendungen erstellt und zur Verwendung im Benutzerpfad in .bashrc hinzugefügt. Der Standardwert ist auf "False" gesetzt.
enable_ansible: True
Ansible-Ordner aktivieren
Mit dieser Einstellung wird die Ordnerstruktur und die Konfigurationsdateien für einen Ansible-Controller, der im Benutzerverzeichnis bereitgestellt wird, erstellt. Der Standardwert ist auf "False" gesetzt.
enable_ansible_folders: True
Gemeinsame Ansible-Rollenordner aktivieren
Mit dieser Einstellung wird die Ordnerstruktur für eine gemeinsame Rolle in ~/ansible/roles/common mit Ansible-Galaxy erstellt. Der Standardwert ist auf "False" gesetzt.
enable_ansible_common_role: True
Bastion aktivieren (für Ansible SSH-Proxying)
Mit dieser Einstellung wird eine Ansible-Konfiguration für die Verwendung von Ansible mit SSH-Proxying durch einen Bastion-Host in der ansible/ssh.cfg-Datei erstellt. Der Standardwert ist auf "False" gesetzt.
enable_bastion: True
bastion_hostname: bastion.contoso.ltd # FQDN des Bastion-Hosts
bastion_user: bwayne # Benutzer des Bastion-Hosts
bastion_ip: 172.168.1.10 # IP-Adresse des Bastion-Hosts
bastion_ansible_host: 192.168.1.* # Hosts auf der anderen Seite des Bastion-Hosts
Installation
Verwenden Sie ansible-galaxy, um das neueste Modul zu installieren.
ansible-galaxy install ppouliot.ansible-bootstrap
Konfigurieren Sie Ihr Projekt
Im Gegensatz zu einer typischen Rolle müssen Sie Ansible so konfigurieren, dass ein alternativer Python-Interpreter für Container-Linux-Hosts verwendet wird. Dies kann erreicht werden, indem Sie eine Container-Linux-Gruppe zu Ihrer Inventardatei hinzufügen und die Variablen der Gruppe so einstellen, dass sie den neuen Python-Interpreter verwenden. So können Sie Ansible verwenden, um CoreOS- und Non-CoreOS-Hosts zu verwalten. Fügen Sie einfach jeden Host, der CoreOS verwendet, zur Container-Linux-Inventargruppe hinzu, und es wird automatisch der angegebene Python-Interpreter verwendet.
[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.*
Dies konfiguriert Ansible so, dass der Python-Interpreter unter /home/core/bin/python verwendet wird, der von der ansible-bootstrap-Rolle erstellt wird.
Bootstrap-Playbook
Jetzt können Sie einfach Folgendes zu Ihrer Playbook-Datei hinzufügen und es in Ihre site.yml einfügen, damit es auf allen Hosts in der Container-Linux-Gruppe ausgeführt wird.
- hosts: container-linux
gather_facts: False
remote_user: core
roles:
- ppouliot.ansible-bootstrap
Stellen Sie sicher, dass gather_facts auf false gesetzt ist, andernfalls wird Ansible versuchen, zuerst Systemfakten mit Python zu sammeln, der noch nicht installiert ist!
Mitwirkende
- Peter Pouliot peter@pouliot.net
Urheberrecht und Lizenz
Urheberrecht (C) 2018 Peter J. Pouliot
Peter Pouliot kann unter folgender Adresse kontaktiert werden: peter@pouliot.net
Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nicht verwenden, es sei denn, Sie stimmen der Lizenz zu. Sie können eine Kopie der Lizenz unter folgendem Link erhalten:
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht oder schriftlich vereinbart, wird die Software, die unter der Lizenz verteilt wird, "WIE BESEHEN" bereitgestellt, ohne Garantien oder Bedingungen jeglicher Art, weder ausdrücklich noch stillschweigend. Siehe die Lizenz für die spezifischen Rechte und Einschränkungen.
A PYPY (and pip) deployment for bootstrapping Ansible resources.
ansible-galaxy install ppouliot.ansible_bootstrap