mesaguy.hashicorp
Ansible HashiCorp
Instalar software de HashiCorp usando paquetes oficiales, archivos zip oficiales y paquetes de distribución.
Instala y actualiza el siguiente software de HashiCorp:
- Boundary
- Consul
- Consul Template
- EnvConsul
- Nomad
- Packer
- Sentinel
- Serf
- Terraform
- Vagrant
- Vault
- Vault SSH Helper
- Waypoint
Este rol eventualmente podría gestionar algún software de HashiCorp, pero el enfoque actual es exclusivamente en la instalación de software de HashiCorp de manera segura, consistente y reproducible.
Requisitos
- Ansible >= 2.9.0
- Deben recopilarse los hechos (gather_facts: true)
Variables del Rol
Genéricas
Por defecto, este rol no instala ningún software. Cada software debe ser habilitado específicamente.
Se pueden definir las siguientes variables para instalar software específico 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
Alternativamente, se puede especificar software de HashiCorp usando la variable "hashicorp_install" al llamar a este rol. Cuando se especifica "hashicorp_install", se ignorarán las variables hashicorp_install_*. Esta sintaxis también admite especificar opcionalmente una versión:
- name: Incluir mesaguy.hashicorp para instalar software específico
include_role:
name: mesaguy.hashicorp
vars:
hashicorp_install:
# Instalar la versión 1.0.0 de Consul
- consul==1.0.0
# Instalar las últimas versiones de packer y vault
- packer
- vault
Instalaciones de archivos ZIP de HashiCorp
Por defecto, este rol instala los archivos ZIP de HashiCorp que contienen binarios precompilados usando las siguientes variables:
El software se instala en este directorio base. Por ejemplo, el binario de la versión 1.0.0 de consul se instalaría en /opt/hashicorp/consul/1.0.0/consul
hashicorp_base_dir: /opt/hashicorp
Se crearán enlaces simbólicos a cada binario aquí:
hashicorp_software_link_dir: /usr/local/bin
Valida las firmas GPG en todos los archivos ZIP de lanzamiento (predeterminado: false). Esto requiere que el comando "gpg" esté disponible. Si falta la clave pública de lanzamiento GPG de HashiCorp, este rol agregará automáticamente la clave pública GPG al llavero GPG del usuario "root":
hashicorp_check_gpg_signatures: true
Elimina todo excepto la última versión del software (predeterminado: false):
hashicorp_purge_old_releases: true
Cambia el usuario que posee el software, por defecto son las opciones a continuación:
hashicorp_user: root
hashicorp_group: root
Si hay un espejo local del software de HashiCorp disponible, puedes usar las variables ambientales "HASHICORP_MIRROR" y/o "HASHICORP_GPG_MIRROR" o las siguientes variables de ansible. La variable "hashicorp_gpg_mirror" solo afecta de dónde se obtienen los archivos de firma GPG:
hashicorp_mirror: https://example.org/hashicorp hashicorp_gpg_mirror: https://example.org/hashicorp
Usar paquetes de HashiCorp en lugar de archivos ZIP
Cuando está habilitado, usa los paquetes RPM/DEB oficiales de HashiCorp en lugar de los archivos ZIP oficiales de HashiCorp, predeterminado es false:
hashicorp_use_official_packages: true
Esta opción se aplica a los siguientes lanzamientos de distribución y arquitecturas:
Distribución | Lanzamiento | Arquitecturas |
---|---|---|
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 |
Elimina el software de HashiCorp instalado a través de archivos ZIP, predeterminado es false:
hashicorp_purge_zip_releases: true
Se puede especificar un espejo local de apt usando la variable de ansible "hashicorp_apt_mirror" o la variable ambiental "HASHICORP_APT_MIRROR":
hashicorp_apt_mirror: https://example.org/hashicorp/apt
Se puede especificar un espejo local de yum usando la variable de ansible "hashicorp_yum_mirror" o la variable ambiental "HASHICORP_YUM_MIRROR":
hashicorp_yum_mirror: https://example.org/hashicorp/yum
Estado para mantener el software de HashiCorp, predeterminado es "present":
hashicorp_software_state: latest
Al instalar los archivos zip binarios de HashiCorp, usa la sintaxis siguiente para la versión del software:
hashicorp_nomad_version: 1.0.1
hashicorp_vault_version: 1.0.1
Usar paquetes de distribución en lugar de archivos ZIP
Cuando está habilitado, usa los paquetes (potencialmente no oficiales) de la distribución en lugar de los archivos ZIP oficiales de HashiCorp, predeterminado es false:
hashicorp_use_distro_packages: true
Actualmente, esta opción se aplica solo a ArchLinux.
Elimina el software de HashiCorp instalado a través de archivos ZIP, predeterminado es false:
hashicorp_purge_zip_releases: true
El repositorio de pruebas yum se puede habilitar mediante:
hashicorp_enable_yum_test_repo: true
Dependencias
N/A
Ejemplo de Playbook
El siguiente ejemplo instalaría el software 'Consul' y 'Vault':
- hosts: servers
vars:
hashicorp_install_consul: true
hashicorp_install_vault: true
roles:
- { role: mesaguy.hashicorp }
Gestión de versiones
Actualizar versiones de software predeterminadas
Las versiones de lanzamiento de software predeterminadas están controladas por los archivos 'vars/versions.yml' y 'docker_versions.yml'.
Estos archivos pueden actualizarse manualmente o ejecutando el script scripts/update_versions
.
Pruebas
Las pruebas se realizan a través de molecule.
Necesitarás pipenv instalado y docker en ejecución para realizar pruebas.
Inicializa el entorno pipenv ejecutando lo siguiente en el directorio base de este repositorio:
pipenv install
Lo siguiente se puede usar para una validación básica. La primera prueba es una instalación normal y la segunda asegura que la validación GPG funcione:
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test -s gpg
Los errores de Selinux generalmente se pueden resolver con:
pipenv run pip uninstall selinux -y; pipenv install
Licencia
MIT Consulta el archivo LICENSE
Información del Autor
Mesaguy
securely install the latest hashicorp software
ansible-galaxy install mesaguy.hashicorp