bsmeding.awx_docker
Rol de instalación de Ansible AWX
El rol está probado en Ubuntu con Docker instalado a través de mi rol bsmeding.docker en la distribución de Linux.
Este rol instalará AWX en contenedores de Docker en el host. Actualmente, la última versión estable de Docker (17.1.0) ha sido probada.
Las versiones más altas se construirán en contenedores de Docker y no son oficialmente soportadas por Ansible para su uso en producción.
Ejecutar dos veces
Este rol colocará un archivo después de una implementación exitosa en el directorio docker_compose llamado awx_playbook_complete
.
Si el rol se ejecuta nuevamente, omitirá toda la instalación y solo ejecutará la parte de configuración del rol. Esto es para acelerar el proceso.
Si desea redeplegar, primero elimine este archivo del host.
Dependencias:
Instale la colección awx.awx para la configuración de AWX después de la instalaciónansible-galaxy collection install awx.awx
Para RedHat, es necesario instalar primero el repositorio EPEL (ver geerlingguy.ansible_role_epel).
Ansible hasta la versión 17.1 (predeterminado)
Esto instalará en contenedores de Docker, ya que la forma normal de versiones superiores es usar Kubernetes en lugar de Docker.
Aunque es posible instalar versiones más altas en Docker, solo se recomienda para entornos de desarrollo.
Ansible 18 y superiores
Actualmente, ¡no son compatibles!
En futuras versiones de este rol, será posible construir versiones más altas directamente en el host, pero, como se mencionó anteriormente, esto solo se recomienda para entornos de desarrollo.
Crear superusuario
En nuevas versiones, no es posible agregar un superusuario a través de variables de entorno, necesitamos ejecutar un comando en el contenedor:
Inicie sesión en el host de Docker y ejecute el siguiente comando para crear un superusuariodocker exec -ti tools_awx_1 awx-manage createsuperuser
Responda a las preguntas (nombre de usuario, correo electrónico, contraseña).
Crear Entornos Virtuales (Ansible AWX hasta la versión 17.1)
Para las versiones de AWX hasta 17.1.0, se utiliza un entorno virtual de Python. Estos se pueden instalar con este playbook configurando la variable custom_venv
con una lista de entornos virtuales para crear.
También se necesita la ruta custom_venv_dir
que se creará en el host y se vinculará al contenedor de AWX; esta variable luego se necesita en la configuración de AWX como custom_venv.
Opcionalmente, se puede usar una versión separada de Python para el venv al configurar la variable python_version
. Si no se establece, utilizará la versión predeterminada de Python del sistema operativo.
custom_venv_delete_before_install: false
custom_venv_dir: /opt/awx/venv
# Directorio de Python personalizado, necesita construir un entorno virtual diferente
custom_python_dir: /opt/python
custom_venvs:
- name: ansible2_10_3
python_version: 3.6.8
ansible_pip_packages:
- ansible==2.10.3
- ansible-lint
- pynautobot
- jmespath
- napalm
- netmiko
- paramiko
La ruta del entorno virtual se añadirá automáticamente a la instancia de AWX.
Configuración LDAP
Si es necesario, es posible agregar la configuración LDAP; actualmente, el servidor LDAP predeterminado y el 1 están configurados.
# awx__ldap_server_uri: ldap://ldap.example.com:3380
# awx__ldap_bind_dn: CN=readonly,OU=people,DC=example,DC=com
# awx__ldap_bind_password: password
# awx__ldap_group_type: NestedMemberDNGroupType
# awx__ldap_user_dn_template: uid=%(user)s,ou=people,dc=example,dc=com
# awx__ldap_require_group: cn=AWX,ou=groups,dc=example,dc=com
# awx__ldap_deny_group: ''
# awx__ldap_user_search: []
# awx__ldap_group_search: []
# awx__ldap_user_attr_map: {}
# awx__ldap_group_type_parameters: {}
# awx__ldap_user_flags_by_group: {}
# awx__ldap_organization_map: {}
# awx__ldap_team_map: {}
Ejemplo: configuración para soporte LDAP y configuración automática de grupos
awx__ldap_server_uri: ldap://192.168.71.10:3380
awx__ldap_bind_dn: CN=readonly,OU=people,DC=example,DC=com
awx__ldap_bind_password: password
awx__ldap_group_type: NestedMemberDNGroupType
awx__ldap_user_dn_template: uid=%(user)s,ou=people,dc=example,dc=com
awx__ldap_require_group: cn=AWX,ou=groups,dc=example,dc=com
awx__ldap_deny_group: ''
awx__ldap_user_search: [
"cn=people,dc=example,dc=com",
"SCOPE_SUBTREE",
"(uid=%(user)s)"
]
awx__ldap_group_search: [
"ou=groups,dc=example,dc=com",
"SCOPE_SUBTREE",
"(objectClass=posixGroup)"
]
awx__ldap_user_attr_map: {
"first_name": "givenName",
"last_name": "sn"
}
awx__ldap_group_type_parameters: {
"name_attr": "cn",
"member_attr": "member"
}
awx__ldap_user_flags_by_group: {
"is_superuser": [
"cn=lldap_admin,ou=groups,dc=example,dc=com"
]
}
awx__ldap_organization_map: {}
awx__ldap_team_map: {
"Netwerk beheer": {
"users": [
"cn=awx,ou=groups,dc=example,dc=com"
],
"organization": "MyOrg",
"remove": true
},
"Netwerk developer": {
"users": [
"cn=awx__developer,ou=groups,dc=example,dc=com"
],
"organization": "MyOrg",
"remove": true
}
}
Organizaciones y Equipos
Para agregar organizaciones y/o equipos, añada las siguientes variables:
awx__organizations:
- name: MyOrg
# custom_virtualenv: ansible3
teams:
- name: DevOps
description: DevOps
- name: Support
description: Equipo de Soporte
Role to Install Ansible AWX (opensource Tower) in Docker container
ansible-galaxy install bsmeding.awx_docker