[PYTHON] Deux façons de rendre Ansible portable

introduction

Pour gérer la configuration du serveur avec Ansible, il est nécessaire de créer un environnement sur une machine qui peut ssh la cible de configuration. Cependant, il peut y avoir des cas comme celui-ci

Dans un tel cas, vous souhaiterez peut-être utiliser Ansible sans installation. En d'autres termes, je veux faire ce qui suit.

                  |→ Environnement produit
                  |★ Cet environnement ne peut pas être altéré. ..
┌─────────────┐   |   ┌─────────────┐       ┌───────────────┐
|1           |  |   | 2          |      | 3            |
|            |──────|            |──────|              |
|            |  |   |            |ssh   |              |
└─────────────┘   |   └─────────────┘       └───────────────┘
Machine locale|Serveur cible de configuration du serveur Ansible

→ Je souhaite utiliser ansible simplement en transférant le répertoire sur le serveur Ansible!

alors, Après avoir déconné sur votre machine locale, voici deux façons de rendre Ansible exécutable simplement en transférant le répertoire.

1. Comment télécharger la source depuis git

Beaucoup d'entre vous le savent peut-être car il est également mentionné dans la documentation d'Ansible.

Procédure sur la machine locale

Tout d'abord, git clone

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

Un répertoire ansible est créé comme ceci.

$ ls
ansible

Mettez à jour le sous-module.

cd ansible
git submodule update --init lib/ansible/modules/core
git submodule update --init lib/ansible/modules/extras
cd .. #Revenir au répertoire d'origine

Maintenant, vous êtes prêt à partir. ʻTransférez le répertoire ansible` (et le playbook) vers le serveur Ansible.

scp -r ansible [Serveur Ansible]:

Comment utiliser le côté serveur Ansible

cd ansible
source hacking/env-setup

Vous pouvez maintenant exécuter la commande ansible.

Conditions dans lesquelles cette méthode peut être utilisée

Cela ne semble fonctionner que si les conditions suivantes sont remplies.

--Python2.6 ou Python2.7 est déjà installé --pip paramiko PyYAML Jinja2 httplib2 six a été installé

Le deuxième point semble être un obstacle un peu élevé. ..

2. Transfert pour chaque environnement PyEnv

C'est une méthode quelque peu brutale pour créer un environnement en transférant tout le répertoire créé par PyEnv.

Procédure sur la machine locale

Tout d'abord, créez un répertoire pour exécuter Ansible avec le même chemin que le côté serveur Ansible.

Exemple: Si le nom d'utilisateur du serveur Ansible est opuser et que le répertoire d'exécution Ansible ʻansible est placé dans / home / opuser`

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

Créez un environnement pour Pyenv dans le répertoire Ansible.

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

Installez Python dans l'environnement Pyenv. Ensuite, installez Ansible. Si vous souhaitez installer d'autres packages, installez-les.

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

Transférez le répertoire ansible.

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

Comment utiliser le côté serveur Ansible

Lisez les variables d'environnement de Pyenv.

cd ~/ansible
source pyenv.env
ansible --version #=>Ansible devrait être disponible.

Les conditions de fonctionnement sont les suivantes

Résumé

En supposant que vous souhaitiez utiliser Ansible dans un environnement de produit où vous souhaitez minimiser l'impact des modifications, J'ai présenté comment créer un environnement d'exécution Ansible portable.

Recommended Posts

Deux façons de rendre Ansible portable
Deux façons de décoder des tuiles vectorielles binaires en GeoJSON
[Petite histoire] Deux façons de fusionner correctement les variables Ansible et dict imbriquées
Implémentation de l'API pour basculer les valeurs de deux manières (aller)
J'ai essayé deux façons de combiner plusieurs commits avec Git
Rendre avec la syntaxe facile
Introduction à Ansible Part «Inventaire»
2 façons de gérer SessionNotCreatedException
Introduction à Ansible Part ④'Variable '
Deux façons d'afficher plusieurs graphiques dans une seule image avec matplotlib