bsmeding.awx_docker


Installation de la fonction Ansible AWX

statut de test
Le rôle est testé sur Ubuntu avec Docker installé via mon rôle bsmeding.docker sur cette distribution Linux.

Ce rôle va installer AWX dans des conteneurs Docker sur l'hôte. La dernière version stable de Docker (17.1.0) a été testée.

Les versions supérieures seront construites dans des conteneurs Docker et ne sont pas officiellement supportées par Ansible pour un usage en production.

Exécution deux fois

Ce rôle placera un fichier après un déploiement réussi dans le répertoire docker_compose nommé awx_playbook_complete. Si le rôle est exécuté à nouveau, il ignorera toute l'installation et ne exécutera que la partie configuration du rôle. Cela permet d'accélérer l'exécution. Si vous voulez redéployer, supprimez d'abord ce fichier de l'hôte.

Dépendances :

Installez la collection awx.awx pour la configuration d'AWX après l'installation
ansible-galaxy collection install awx.awx

Pour RedHat, il est nécessaire d’installer d'abord le dépôt EPEL (voir geerlingguy.ansible_role_epel).

Ansible jusqu'à la version 17.1 (par défaut)

Cela s'installera dans des conteneurs Docker, car la méthode normale pour les versions supérieures utilise Kubernetes plutôt que Docker. Bien qu'il soit possible d'installer des versions supérieures dans Docker, cela n'est conseillé que pour des environnements de développement.

Ansible 18 et plus

Actuellement pas encore supporté !
Dans une future version de ce rôle, il sera possible de construire des versions supérieures directement sur l'hôte, mais comme indiqué ci-dessus, cela n'est conseillé que pour des environnements de développement.

Créer un super utilisateur

Dans les nouvelles versions, il n'est pas possible d'ajouter un super utilisateur via des variables d'environnement. Nous devons exécuter une commande dans le conteneur : connectez-vous à l'hôte Docker et exécutez la commande suivante pour créer un super utilisateur
docker exec -ti tools_awx_1 awx-manage createsuperuser
Répondez aux questions (nom d'utilisateur, email, mot de passe)

Créer des environnements virtuels (Ansible AWX jusqu'à la version 17.1)

Pour les versions AWX jusqu'à 17.1.0, un environnement virtuel Python est utilisé. Ceux-ci peuvent être installés avec ce playbook en définissant la variable custom_venv avec une liste d'environnements virtuels à créer.
Le chemin est également nécessaire custom_venv_dir qui sera créé sur l'hôte et lié au conteneur AWX ; cette variable est ensuite nécessaire dans les paramètres AWX comme custom_venv.

En option, une version Python différente peut être utilisée pour le venv en définissant la variable python_version. Si elle n'est pas définie, la version par défaut de Python de l'OS sera utilisée.

custom_venv_delete_before_install: false
custom_venv_dir: /opt/awx/venv
# Répertoire Python personnalisé, nécessaire pour créer différents environnements virtuels
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

Le chemin de l'environnement virtuel sera automatiquement ajouté à l'instance AWX.

Configuration LDAP

Si nécessaire, il est possible d'ajouter une configuration LDAP. Actuellement, le serveur LDAP par défaut et 1 sont configurés.

# 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: {}

Exemple : configuration pour le support LDAP et la configuration automatique des groupes

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
  }
}

Organisations et Équipes

Pour ajouter des organisations et/ou des équipes, ajoutez les variables suivantes :

awx__organizations:
  - name: MyOrg
    # custom_virtualenv: ansible3
    teams:
    - name: DevOps
      description: DevOps
    - name: Support
      description: Équipe de Support
À propos du projet

Role to Install Ansible AWX (opensource Tower) in Docker container

Installer
ansible-galaxy install bsmeding.awx_docker
Licence
Unknown
Téléchargements
541
Propriétaire
Freelance Network Automation Consultant | DevNetOps | Home Automation