bsmeding.awx_docker
Instalacja roli Ansible AWX
Rola jest testowana na Ubuntu z Dockerem zainstalowanym za pomocą mojej roli bsmeding.docker na dystrybucji Linux.
Rola ta zainstaluje AWX w kontenerach Docker na hoście. Aktualnie najnowsza stabilna i testowana wersja Dockera to 17.1.0.
Wyższe wersje będą budowane w kontenerach docker i nie są oficjalnie wspierane przez Ansible do użycia produkcyjnego.
Uruchomienie dwa razy
Po udanej instalacji, rola umieści plik w katalogu docker_compose o nazwie awx_playbook_complete
.
Jeżeli rola zostanie uruchomiona ponownie, pominie wszystkie instalacje i uruchomi tylko część konfiguracyjną. Robi to, aby przyspieszyć proces.
Jeśli chcesz przeinstalować, najpierw usuń ten plik z hosta.
Zależności:
Zainstaluj kolekcję awx.awx do konfiguracji AWX po instalacji:
ansible-galaxy collection install awx.awx
Dla RedHat konieczne jest najpierw zainstalowanie repozytorium EPEL (zobacz geerlingguy.ansible_role_epel).
Ansible do wersji 17.1 (domyślnie)
Instalacja odbywa się w kontenerach Docker, ponieważ w przypadku wyższych wersji zaleca się korzystanie z Kubernetes zamiast Dockera. Chociaż możliwe jest zainstalowanie wyższych wersji w Dockerze, jest to zalecane tylko dla środowisk deweloperskich.
Ansible 18 i nowsze
Obecnie jeszcze nie wspierane! W przyszłych wydaniach tej roli możliwe będzie budowanie wyższych wersji bezpośrednio na hoście, ale jak już wspomniano, zaleca się to tylko dla środowisk deweloperskich.
Utworzenie superużytkownika
W nowych wersjach nie można dodać superużytkownika za pomocą zmiennych środowiskowych, należy uruchomić polecenie w kontenerze:
Zaloguj się do hosta Docker i wykonaj następujące polecenie, aby utworzyć superużytkownika:
docker exec -ti tools_awx_1 awx-manage createsuperuser
Odpowiedz na pytania (nazwa użytkownika, e-mail, hasło).
Tworzenie Środowisk Wirtualnych (Ansible AWX do wersji 17.1)
W przypadku wersji AWX do 17.1.0 używane jest wirtualne środowisko Pythona. Można je zainstalować za pomocą tego playbooka, ustawiając zmienną custom_venv
z listą środowisk wirtualnych do utworzenia.
Potrzebna jest również ścieżka custom_venv_dir
, która zostanie utworzona na hoście i połączona z kontenerem AWX; ta zmienna jest później potrzebna w ustawieniach AWX jako custom_venv.
Opcjonalnie można użyć oddzielnej wersji Pythona dla venv, ustawiając zmienną python_version
. Jeśli nie będzie ustawiona, zostanie użyta domyślna wersja Pythona systemu operacyjnego.
custom_venv_delete_before_install: false
custom_venv_dir: /opt/awx/venv
# Niestandardowy katalog Pythona, potrzebny do budowy różnych środowisk wirtualnych
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
Ścieżka do środowiska wirtualnego zostanie automatycznie dodana do instancji AWX.
Konfiguracja LDAP
Jeśli potrzebne, możliwe jest dodanie konfiguracji LDAP, obecnie skonfigurowane są domyślne i 1 serwery LDAP.
# 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: hasło
# 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: {}
Przykład: konfiguracja dla wsparcia LDAP i automatycznej konfiguracji grup.
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: hasło
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
}
}
Organizacje i zespoły
Aby dodać organizacje i/lub zespoły, dodaj następujące zmienne:
awx__organizations:
- name: MyOrg
# custom_virtualenv: ansible3
teams:
- name: DevOps
description: DevOps
- name: Support
description: Zespół wsparcia
Role to Install Ansible AWX (opensource Tower) in Docker container
ansible-galaxy install bsmeding.awx_docker