bsmeding.awx_docker
Ansible AWX Installationsrolle
Die Rolle wird auf Ubuntu mit über Docker installiert, das über meine Rolle bsmeding.docker auf Linux-Distributionen installiert wurde.
Diese Rolle installiert AWX in Docker-Containern auf dem Host. Derzeit ist die neueste stabile und getestete Docker-Version (17.1.0).
Höhere Versionen werden in Docker-Containern gebaut und werden von Ansible nicht offiziell für den Produktionsgebrauch unterstützt.
Zweimal ausführen
Diese Rolle legt nach einer erfolgreichen Bereitstellung eine Datei im docker_compose-Verzeichnis namens awx_playbook_complete
ab.
Wenn die Rolle erneut ausgeführt wird, werden alle Installationen übersprungen und nur der Konfigurationsteil der Rolle ausgeführt. Dies soll die Ausführung der Rolle beschleunigen.
Wenn Sie neu bereitstellen möchten, entfernen Sie zuerst diese Datei vom Host.
Abhängigkeiten:
Installieren Sie die Sammlung awx.awx
für die Konfiguration von AWX nach der Installation:
ansible-galaxy collection install awx.awx
Für RedHat muss zuerst das EPEL-Repository installiert werden (siehe geerlingguy.ansible_role_epel).
Ansible bis Version 17.1 (Standard)
Dies installiert in Docker-Containern, da die normale Methode für höhere Versionen die Verwendung von Kubernetes anstelle von Docker ist. Obwohl es möglich ist, höhere Versionen in Docker zu installieren, wird dies nur für Entwicklungsumgebungen empfohlen.
Ansible 18 und höher
Derzeit noch nicht unterstützt! In zukünftigen Versionen dieser Rolle wird es möglich sein, höhere Versionen direkt auf dem Host zu bauen, aber wie bereits gesagt, wird dies nur für Entwicklungsumgebungen empfohlen.
Supernutzer erstellen
In neuen Versionen ist es nicht möglich, einen Supernutzer über Umgebungsvariablen hinzuzufügen. Wir müssen einen Befehl im Container ausführen:
Melden Sie sich beim Docker-Host an und führen Sie den folgenden Befehl aus, um einen Supernutzer zu erstellen:
docker exec -ti tools_awx_1 awx-manage createsuperuser
Beantworten Sie die Fragen (Benutzername, E-Mail, Passwort).
Virtuelle Umgebungen erstellen (Ansible AWX bis Version 17.1)
Für AWX-Versionen bis 17.1.0 wird eine Python-virtuelle Umgebung verwendet. Diese können mit diesem Playbook installiert werden, indem Sie die Variable custom_venv
mit einer Liste von zu erstellenden virtuellen Umgebungen setzen.
Auch der Pfad custom_venv_dir
ist erforderlich, der auf dem Host erstellt und mit dem AWX-Container verlinkt wird. Diese Variable wird dann in den AWX-Einstellungen als custom_venv
benötigt.
Optional kann eine separate Python-Version für die Venv verwendet werden, wenn die Variable python_version
gesetzt wird. Wenn sie nicht gesetzt ist, wird die standardmäßige Python-Version des Betriebssystems verwendet.
custom_venv_delete_before_install: false
custom_venv_dir: /opt/awx/venv
# Benutzerdefinierter Python-Pfad, um unterschiedliche virtuelle Umgebungen zu erstellen
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
Der Pfad der virtuellen Umgebung wird automatisch zur AWX-Instanz hinzugefügt.
LDAP-Konfiguration
Falls erforderlich, ist es möglich, eine LDAP-Konfiguration hinzuzufügen. Derzeit sind der Standard- und 1 LDAP-Server konfiguriert.
# 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: {}
Beispiel: Konfiguration für LDAP-Unterstützung und automatische Gruppenconfig
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
}
}
Organisationen und Teams
Um Organisationen und/oder Teams hinzuzufügen, fügen Sie die folgenden Variablen hinzu:
awx__organizations:
- name: MyOrg
# benutzerdefinierte_virtualenv: ansible3
teams:
- name: DevOps
description: DevOps
- name: Support
description: Support-Team
Role to Install Ansible AWX (opensource Tower) in Docker container
ansible-galaxy install bsmeding.awx_docker