awx_docker
Установка роли Ansible AWX
Роль протестирована на Ubuntu с установленным Docker с помощью моей роли bsmeding.docker на дистрибутиве Linux.
Эта роль установит AWX в контейнерах Docker на хосте, в настоящее время последняя стабильная версия Docker (17.1.0) протестирована.
Более новые версии будут собираться в контейнере Docker и официально не поддерживаются Ansible для продакшн использования.
Запуск дважды
Эта роль создаст файл после успешного развертывания в директории docker_compose с именем awx_playbook_complete
.
Если роль запустить снова, она пропустит всю установку и выполнит только часть конфигурации. Это сделано для ускорения работы роли.
Если вы хотите повторно развернуть, сначала удалите этот файл с хоста.
Зависимости:
Установите коллекцию awx.awx для конфигурации AWX после установки:ansible-galaxy collection install awx.awx
Для RedHat сначала необходимо установить репозиторий EPEL (см. geerlingguy.ansible_role_epel).
Ansible до версии 17.1 (по умолчанию)
Эта версия устанавливает AWX в контейнерах Docker, так как нормальный способ для более новых версий - использовать Kubernetes вместо Docker.
Хотя возможно установить более новые версии в Docker, это рекомендуется только для среды разработки.
Ansible 18 и выше
Пока не поддерживается!
В будущих версиях этой роли будет возможность собирать более новые версии напрямую на хосте, но, как уже сказано выше, это рекомендуется только для среды разработки.
Создание суперпользователя
В новых версиях нельзя добавить суперпользователя через переменные окружения, необходимо выполнить команду в контейнере:
Войдите на хост Docker и выполните следующую команду для создания суперпользователя:docker exec -ti tools_awx_1 awx-manage createsuperuser
Ответьте на вопросы (имя пользователя, email, пароль).
Создание виртуальных окружений (Ansible AWX до версии 17.1)
Для версий AWX до 17.1.0 используется Python виртуальное окружение. Они могут быть установлены с помощью данного плейбука, установив переменную custom_venv
со списком создаваемых виртуальных окружений.
Также необходим путь custom_venv_dir
, который будет создан на хосте и связан с контейнером AWX, эта переменная затем нужна в настройках AWX как custom_venv.
Опционально для виртуального окружения можно использовать отдельную версию Python, установив переменную python_version
. Если не указано, будет использоваться версия Python по умолчанию в ОС.
custom_venv_delete_before_install: false
custom_venv_dir: /opt/awx/venv
# Пользовательская директория Python, нужна для создания разных виртуальных окружений
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
Путь виртуального окружения будет автоматически добавлен в экземпляр AWX.
Конфигурация LDAP
Если необходимо, возможно добавить конфигурацию LDAP, в настоящее время настроены серверы по умолчанию и 1 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: 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: {}
Пример: конфигурация для поддержки LDAP и автоматической настройки групп.
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
}
}
Организация и команды
Чтобы добавить организации и/или команды, добавьте следующие переменные:
awx__organizations:
- name: MyOrg
# custom_virtualenv: ansible3
teams:
- name: DevOps
description: DevOps
- name: Support
description: Поддержка
Role to Install Ansible AWX (opensource Tower) in Docker container
ansible-galaxy install bsmeding/ansible_role_awx_docker