[PYTHON] Zwei Möglichkeiten, Ansible portabel zu machen

Einführung

Um die Serverkonfiguration mit Ansible zu verwalten, muss auf einem Computer eine Umgebung erstellt werden, die das Konfigurationsziel ssh kann. Es kann jedoch Fälle wie diesen geben

--Kann keine Verbindung zum Internet herstellen

In einem solchen Fall möchten Sie möglicherweise Ansible ohne Installation verwenden. Mit anderen Worten, ich möchte Folgendes tun.

                  |→ Produktumgebung
                  |★ Diese Umgebung kann nicht manipuliert werden. ..
┌─────────────┐   |   ┌─────────────┐       ┌───────────────┐
|1           |  |   | 2          |      | 3            |
|            |──────|            |──────|              |
|            |  |   |            |ssh   |              |
└─────────────┘   |   └─────────────┘       └───────────────┘
Lokale Maschine|Ansible Server Konfigurationszielserver

→ Ich möchte ansible nur durch Übertragen des Verzeichnisses auf den Ansible-Server verwenden!

damit, Nachdem Sie auf Ihrem lokalen Computer herumgespielt haben, gibt es zwei Möglichkeiten, Ansible durch Übertragen des Verzeichnisses ausführbar zu machen.

1. Wie lade ich die Quelle von git herunter?

Viele von Ihnen wissen dies möglicherweise, wie es auch in der Dokumentation von Ansible erwähnt wird.

Vorgehensweise auf dem lokalen Computer

Zuerst "Git-Klon"

git clone https://github.com/ansible/ansible.git --recursive

So wird ein ansible Verzeichnis erstellt.

$ ls
ansible

Aktualisieren Sie das Submodul.

cd ansible
git submodule update --init lib/ansible/modules/core
git submodule update --init lib/ansible/modules/extras
cd .. #Kehren Sie zum ursprünglichen Verzeichnis zurück

Jetzt können Sie loslegen. Übertragen Sie das Ansible-Verzeichnis (und das Playbook) auf den Ansible-Server.

scp -r ansible [Ansible Server]:

Verwendung der Ansible-Serverseite

cd ansible
source hacking/env-setup

Jetzt können Sie den Befehl ansible ausführen.

Bedingungen, unter denen diese Methode angewendet werden kann

Es scheint nicht zu funktionieren, wenn die folgenden Bedingungen nicht erfüllt sind.

Der zweite Punkt scheint eine kleine Hürde zu sein. ..

2. Übertragung pro PyEnv-Umgebung

Es ist eine etwas Brute-Force-Methode, eine Umgebung zu erstellen, indem das gesamte von PyEnv erstellte Verzeichnis übertragen wird.

Vorgehensweise auf dem lokalen Computer

Erstellen Sie zunächst ein Verzeichnis, um Ansible mit demselben Pfad wie die Ansible-Serverseite auszuführen.

Beispiel: Wenn der Benutzername des Ansible-Servers opuser ist und das Ansible-Ausführungsverzeichnis ansible in / home / opuser abgelegt ist

# useradd opuser
# su - opuser
$ echo $HOME  # => /home/opuser
$ mkdir -p /home/opuser/ansible

Erstellen Sie eine Umgebung für Pyenv im Ansible-Verzeichnis.

cd /home/opuser/ansible
git clone https://github.com/yyuu/pyenv.git pyenv

touch ./pyenv.env
echo 'export PYENV_ROOT="/home/opuser/ansible/pyenv"' >> ./pyenv.env
echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ./pyenv.env
echo '    export PATH=${PYENV_ROOT}/bin:$PATH' >> ./pyenv.env
echo '    eval "$(pyenv init -)"' >> ./pyenv.env
echo 'fi' >> ./pyenv.env

source ./pyenv.env

cd $PYENV_ROOT/plugins
git clone https://github.com/yyuu/pyenv-virtualenv.git

Installieren Sie Python in der Pyenv-Umgebung. Dann installieren Sie Ansible. Wenn Sie andere Pakete installieren möchten, installieren Sie diese.

cd /home/opuser/ansible
pyenv install 2.7.12
pyenv local 2.7.12
pip install ansible

Übertragen Sie das Ansible-Verzeichnis.

scp -r /home/opuser/ansible opuser@[Ansible Server]:

Verwendung der Ansible-Serverseite

Lesen Sie die Umgebungsvariablen von Pyenv.

cd ~/ansible
source pyenv.env
ansible --version #=>Ansible sollte verfügbar sein.

Die Betriebsbedingungen sind wie folgt

Zusammenfassung

Angenommen, Sie möchten Ansible in einer Produktumgebung verwenden, in der Sie die Auswirkungen von Änderungen minimieren möchten. Ich habe vorgestellt, wie eine tragbare Ansible-Ausführungsumgebung erstellt wird.

Recommended Posts

Zwei Möglichkeiten, Ansible portabel zu machen
Zwei Möglichkeiten, binäre Vektorkacheln in GeoJSON zu dekodieren
[Kleine Geschichte] Zwei Möglichkeiten zum korrekten Zusammenführen von Ansible- und verschachtelten Diktatvariablen
Implementierung der API zum Umschalten von Werten auf zwei Arten (go)
Ich habe zwei Möglichkeiten ausprobiert, um mehrere Commits mit Git zu kombinieren
Machen Sie es mit der Syntax einfach
Einführung in Ansible Teil In'Inventory '
2 Möglichkeiten, mit SessionNotCreatedException umzugehen
Einführung in Ansible Teil ④'Variable '
Zwei Möglichkeiten, mit matplotlib mehrere Grafiken in einem Bild anzuzeigen