mesaguy.hashicorp
Ansible HashiCorp
Installez le logiciel HashiCorp en utilisant des packages officiels, des fichiers zip officiels et des packages de distribution.
Installe et met à jour les logiciels suivants de HashiCorp :
- Boundary
- Consul
- Consul Template
- EnvConsul
- Nomad
- Packer
- Sentinel
- Serf
- Terraform
- Vagrant
- Vault
- Vault SSH Helper
- Waypoint
Ce rôle peut éventuellement gérer certains logiciels de HashiCorp, mais l'objectif actuel est exclusivement d'installer les logiciels de HashiCorp de manière sécurisée, cohérente et reproductible.
Exigences
- Ansible >= 2.9.0
- Les faits doivent être collectés (gather_facts: true)
Variables de rôle
Générique
Par défaut, ce rôle n'installe aucun logiciel. Chaque logiciel doit être spécifiquement activé.
Les variables suivantes peuvent être définies pour installer des logiciels spécifiques de HashiCorp :
hashicorp_install_boundary: true
hashicorp_install_consul: true
hashicorp_install_consul_template: true
hashicorp_install_envconsul: true
hashicorp_install_nomad: true
hashicorp_install_packer: true
hashicorp_install_sentinel: true
hashicorp_install_serf: true
hashicorp_install_terraform: true
hashicorp_install_vagrant: true
hashicorp_install_vault: true
hashicorp_install_vault_ssh_helper: true
hashicorp_install_waypoint: true
Alternativement, le logiciel HashiCorp peut être spécifié en utilisant la variable "hashicorp_install" lors de l'appel à ce rôle. Lorsque "hashicorp_install" est spécifié, les variables hashicorp_install_* ci-dessus seront ignorées. Cette syntaxe permet aussi de spécifier une version :
- name: Inclure mesaguy.hashicorp pour installer un logiciel spécifique
include_role:
name: mesaguy.hashicorp
vars:
hashicorp_install:
# Installer Consul version 1.0.0
- consul==1.0.0
# Installer les dernières versions de packer et vault
- packer
- vault
Installations de fichiers ZIP HashiCorp
Par défaut, ce rôle installe les fichiers ZIP de HashiCorp contenant des binaires précompilés en utilisant les variables ci-dessous.
Le logiciel est installé dans ce répertoire de base. Par exemple, le binaire de consul version 1.0.0 serait installé dans /opt/hashicorp/consul/1.0.0/consul.
hashicorp_base_dir: /opt/hashicorp
Des liens symboliques vers chaque binaire sont créés ici :
hashicorp_software_link_dir: /usr/local/bin
Vérifiez les signatures GPG sur tous les fichiers ZIP de release (par défaut : false). Cela nécessite que la commande "gpg" soit disponible. Si la clé publique GPG de release HashiCorp est manquante, ce rôle ajoutera automatiquement la clé publique GPG au trousseau de clés GPG de l'utilisateur "root" :
hashicorp_check_gpg_signatures: true
Purger tout sauf la dernière release logicielle (par défaut : false) :
hashicorp_purge_old_releases: true
Changer l'utilisateur qui possède le logiciel, par défaut les options ci-dessous :
hashicorp_user: root
hashicorp_group: root
Si un miroir local des logiciels HashiCorp est disponible, vous pouvez définir les variables d'environnement "HASHICORP_MIRROR" et/ou "HASHICORP_GPG_MIRROR" ou les variables ansible suivantes. La variable "hashicorp_gpg_mirror" n'affecte que l'endroit d'où les fichiers de signature GPG sont récupérés :
hashicorp_mirror: https://example.org/hashicorp hashicorp_gpg_mirror: https://example.org/hashicorp
Utiliser les packages HashiCorp au lieu des fichiers ZIP
Lorsqu'il est activé, utilisez les packages RPM/DEB officiels de HashiCorp au lieu des fichiers ZIP officiels de HashiCorp, par défaut : false :
hashicorp_use_official_packages: true
Cette option s'applique aux versions de distribution et architectures suivantes :
Distribution | Version | Architectures |
---|---|---|
AmazonLinux | 2 | amd64/x86_64 |
Debian | Jessie (8) | amd64/x86_64 |
Debian | Stretch (9) | amd64/x86_64 |
Debian | Buster (10) | amd64/x86_64 |
Fedora | 29 | amd64/x86_64 |
Fedora | 30 | amd64/x86_64 |
Fedora | 31 | amd64/x86_64 |
Fedora | 32 | amd64/x86_64 |
Fedora | 33 | amd64/x86_64 |
RHEL | 7 | amd64/x86_64 |
RHEL | 8 | amd64/x86_64 |
Ubuntu | Bionic (18.04) | amd64/x86_64 |
Ubuntu | Eoam (19.10) | amd64/x86_64 |
Ubuntu | Focal (20.04) | amd64/x86_64 |
Ubuntu | Groovy (20.10) | amd64/x86_64 |
Ubuntu | Xenial (16.04) | amd64/x86_64 |
Purger les logiciels HashiCorp installés via des fichiers ZIP, par défaut : false :
hashicorp_purge_zip_releases: true
Un miroir apt local peut être spécifié en utilisant la variable ansible "hashicorp_apt_mirror" ou la variable d'environnement "HASHICORP_APT_MIRROR" :
hashicorp_apt_mirror: https://example.org/hashicorp/apt
Un miroir yum local peut être spécifié en utilisant la variable ansible "hashicorp_yum_mirror" ou la variable d'environnement "HASHICORP_YUM_MIRROR" :
hashicorp_yum_mirror: https://example.org/hashicorp/yum
État pour conserver le logiciel HashiCorp, par défaut "present" :
hashicorp_software_state: latest
Lorsque vous installez les fichiers zip binaires de HashiCorp, spécifiez la version du logiciel en utilisant la syntaxe suivante :
hashicorp_nomad_version: 1.0.1
hashicorp_vault_version: 1.0.1
Utiliser les packages de la distribution au lieu des fichiers ZIP
Lorsqu'il est activé, utilisez les packages (potentiellement non officiels) de la distribution au lieu des fichiers ZIP officiels de HashiCorp, par défaut : false :
hashicorp_use_distro_packages: true
Actuellement, cette option s'applique uniquement à ArchLinux.
Purger les logiciels HashiCorp installés via des fichiers ZIP, par défaut : false :
hashicorp_purge_zip_releases: true
Le dépôt de test yum peut être activé via :
hashicorp_enable_yum_test_repo: true
Dépendances
N/A
Exemple de Playbook
L'exemple suivant installerait les logiciels 'Consul' et 'Vault' :
- hosts: servers
vars:
hashicorp_install_consul: true
hashicorp_install_vault: true
roles:
- { role: mesaguy.hashicorp }
Gestion des versions
Mise à jour des versions par défaut des logiciels
Les versions par défaut des releases logicielles sont contrôlées par les fichiers 'vars/versions.yml' et 'docker_versions.yml'.
Ces fichiers peuvent être mis à jour manuellement ou en exécutant le script scripts/update_versions
.
Tests
Les tests sont exécutés via molecule.
Vous aurez besoin de pipenv installé et de docker en cours d'exécution pour tester.
Initialisez l'environnement pipenv en exécutant ce qui suit dans le répertoire principal de ce dépôt :
pipenv install
Ce qui suit peut être utilisé pour une validation de base. Le premier teste une installation normale et le deuxième scénario s'assure que la validation GPG fonctionne :
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test -s gpg
Les erreurs Selinux peuvent généralement être résolues avec :
pipenv run pip uninstall selinux -y; pipenv install
Licence
MIT Voir le fichier LICENCE
Informations sur l'auteur
Mesaguy
securely install the latest hashicorp software
ansible-galaxy install mesaguy.hashicorp