Ansible Tower是由RedHat开发的Ansible的图形化工具,能够以WebUI的方式实现Ansible的功能,提升管理效率。
Ansible Tower安装
截至本文发布前,Ansible Tower最新版本为3.8.6
。
- 首先到官方源下载安装包,也可以直接下载latest版本。
1
wget https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-latest.tar.gz
- 解压
1
2tar -zxvf ansible-tower-setup-bundle-latest.el7.tar.gz
cd ansible-tower-setup-bundle-3.8.6-2/ - 修改必要信息将配置文件中的密码填上
1
nano inventory
1
2
3
4
5
6
7
8
9
10[all:vars]
admin_password='password'
pg_host=''
pg_port=''
pg_database='awx'
pg_username='awx'
pg_password='tower'
pg_sslmode='prefer' # set to 'verify-full' for client-side enforced SSL - 执行安装
1
./setup.sh
- 等待执行完成后访问直接机器IP,即可出现登录页面,默认用户名是之前改的配置文件中的
admin_password
值。
非官方授权
/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/utils/licensing.py
文件是有关Ansible Tower授权相关的核心代码部分,只要修改其中的部分代码绕过相关逻辑即可达到授权的目的。感谢玩脱了的奶鱼博主提供的思路。
打开该文件,找到validate
函数,在attrs = copy.deepcopy(self._attrs)
和type = attrs.get('license_type', 'none')
之间添加如下代码:
1 | attrs['license_type'] = 'enterprise' # 设置License类型为企业版 |
然后将下方的授权类型(未授权)判定部分注释掉:
1 | #if (type == 'UNLICENSED' or False): |
这个自定义函数全部改完之后看起来应该像这样:
1 | def validate(self): |
改完之后重启Ansible Tower服务:
1 | ansible-tower-service restart |
然后强制刷新登录页即可看到已授权。