ppouliot.ansible_bootstrap

Ansible Galaxy Ansible Galaxy Downloads

Rôle Ansible : ansible-bootstrap


Pour exécuter Ansible efficacement, la machine cible doit avoir un interpréteur Python. Les machines CoreOS et Flatcar Linux sont minimalistes et n'incluent pas de version de Python. De plus, lorsqu'on utilise des jumpboxes gérées par d'autres personnes, l'accès à l'installation de logiciels est limité et vous pouvez seulement installer dans une seule structure de répertoires.

Pour contourner cette limite, une version portable de pypy, un interpréteur Python léger, est installée. Le rôle ansible-bootstrap installera pypy, y compris pip, dans le répertoire personnel de l'utilisateur, créera des symlinks pour une utilisation facile de la nouvelle pile Python et ajustera les chemins. Vous pourrez alors mettre à jour votre fichier d'inventaire pour utiliser l'interprète Python installé sur vos nœuds Container Linux avec Ansible.

De plus, il devient très utile de structurer un contrôleur Ansible encapsulé dans ce modèle. Ainsi, des fonctionnalités supplémentaires ont été ajoutées pour gérer à la fois le bootstrap de pypy pour le contrôle Ansible ainsi qu'Ansible en tant que contrôleur avec le proxy SSH bastion activé.

Variables du Rôle :


Activer PIP

Ce paramètre contrôle l'installation de PIP et des outils nécessaires dans le répertoire personnel de l'utilisateur. La valeur par défaut est 'True'.

enable_pip: True

Activer Ansible

Ce paramètre contrôle l'installation d'Ansible en utilisant le nouvel environnement pypy déployé. De plus, des symlinks sont créés dans ~/bin pour l'application et ajoutés à l'instruction de chemin de l'utilisateur dans .bashrc. La valeur par défaut est 'False'.

enable_ansible: True

Activer Dossiers Ansible

Ce paramètre crée l'infrastructure de dossiers et les fichiers de configuration pour un contrôleur Ansible déployé dans le répertoire personnel comme pour le reste des outils. La valeur par défaut est 'False'.

enable_ansible_folders: True

Activer Dossiers de Rôle Ansible Commun

Ce paramètre crée l'infrastructure de dossier pour un rôle commun dans ~/ansible/roles/common en utilisant ansible-galaxy. La valeur par défaut est 'False'.

enable_ansible_common_role: True

Activer Bastion (pour le Proxy SSH Ansible)

Ce paramètre crée une configuration Ansible pour utiliser Ansible avec le proxy SSH à travers un hôte bastion dans le fichier ansible/ssh.cfg. La valeur par défaut est 'False'.

enable_bastion: True
bastion_hostname: bastion.contoso.ltd # FQDN de l'Hôte Bastion
bastion_user: bwayne # Utilisateur de l'Hôte Bastion
bastion_ip: 172.168.1.10 # Adresse IP de l'Hôte Bastion
bastion_ansible_host: 192.168.1.* # Hôtes de l'autre côté du Bastion

Installation


Utilisez ansible-galaxy pour installer le dernier module.

ansible-galaxy install ppouliot.ansible-bootstrap

Configurez votre projet

Contrairement à un rôle typique, vous devez configurer Ansible pour utiliser un interprète Python alternatif pour les hôtes container-linux. Cela peut être fait en ajoutant un groupe container-linux à votre fichier d'inventaire et en définissant les variables du groupe pour utiliser le nouvel interprète Python. De cette manière, vous pouvez utiliser Ansible pour gérer des hôtes CoreOS et non-CoreOS. Il vous suffit de mettre chaque hôte ayant CoreOS dans le groupe d'inventaire container-linux et il utilisera automatiquement l'interprète Python spécifié.

[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.*

Cela configurera Ansible pour utiliser l'interprète Python à /home/core/bin/python qui sera créé par le rôle ansible-bootstrap.

Playbook de Bootstrap


Vous pouvez maintenant simplement ajouter ce qui suit à votre fichier de playbook et l'inclure dans votre site.yml afin qu'il s'exécute sur tous les hôtes dans le groupe container-linux.

- hosts: container-linux
  gather_facts: False
  remote_user: core
  roles:
    - ppouliot.ansible-bootstrap

Assurez-vous que gather_facts est réglé sur false, sinon Ansible essaiera d'abord de collecter des informations système en utilisant Python qui n'est pas encore installé !

Contributeurs


Droits d'Auteur et Licence


Droits d'auteur (C) 2018 Peter J. Pouliot

Peter Pouliot peut être contacté à : peter@pouliot.net

Distribué sous la licence Apache, version 2.0 (la "Licence") ; vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse suivante :

http://www.apache.org/licenses/LICENSE-2.0

Sauf si la loi applicable l'exige ou que cela soit convenu par écrit, le logiciel distribué sous la Licence est distribué "TEL QUEL", SANS GARANTIE OU CONDITION D'AUCUNE SORTE, explicite ou implicite. Consultez la Licence pour les droits spécifiques et les limitations régissant la Licence.

À propos du projet

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

Installer
ansible-galaxy install ppouliot.ansible_bootstrap
Licence
apache-2.0
Téléchargements
239
Propriétaire