bsmeding.awx_docker
安装 Ansible AWX 角色
该角色在 Ubuntu 上测试,使用我的角色 bsmeding.docker 安装 Docker。
该角色将在主机上以 Docker 容器的形式安装 AWX,目前最新的 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 版本(默认)
这会在 Docker 容器中安装,因为更高版本的正常方式是使用 Kubernetes 而不是 Docker。 尽管可以在 Docker 中安装更高版本,但仅建议在开发环境中使用。
Ansible 18 及以上
目前尚不支持! 在该角色的未来版本中,将可以直接在主机上构建更高版本,但如上所述,仅建议用于开发环境。
创建超级用户
在新版本中,无法通过环境变量添加超级用户,我们需要在容器中运行一个命令:
登录到 Docker 主机,执行以下命令以创建超级用户:
docker exec -ti tools_awx_1 awx-manage createsuperuser
回答问题(用户名、电子邮件、密码)
创建虚拟环境(Ansible AWX 17.1 版本及之前)
对于 AWX 版本直到 17.1.0,使用 Python 虚拟环境。可以通过设置 custom_venv
变量并提供要创建的虚拟环境列表来使用此剧本进行安装。
还需要指定路径 custom_venv_dir
,该路径将在主机上创建并链接到 AWX 容器,此变量随后需要在 AWX 设置中作为 custom_venv 使用。
可以通过设置 python_version
变量来为虚拟环境使用单独的 Python 版本。如果未设置,将使用操作系统默认 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.awx_docker