ppouliot.ansible_bootstrap

Ansible Galaxy Ansible Galaxy Downloads

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


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.

Über das Projekt

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

Installieren
ansible-galaxy install ppouliot.ansible_bootstrap
GitHub Repository
Lizenz
apache-2.0
Downloads
239
Besitzer