转:https://kionf.com/2017/07/24/linux-tower/
ansible-tower版本: 3.4.3 仅供实验测试使用,请勿用于其它用途!
ansibke-tower他是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台。可以通过界面从github拉取最新playbook实施服务部署,提高生产效率。当然,它也提供一个RESET API和命令行的CLI以供python脚本调用。
0x00 前言
ansible-tower关于此类的文章比较少,踩过坑,16年那会儿有听过就装上研究了一发,现在做个迟来的笔记, 包括部署,和免费版10台机器限制的破解。
支持的操作系统:
- Red Hat Enterprise Linux 7.2 or later 64-bit
- CentOS 7.2 or later 64-bit
- Ubuntu 14.04 LTS 64-bit
- Ubuntu 16.04 LTS 64-bit
推荐最低内存为2GB。
0x01 安装
整个申请流程也是麻烦的很,尤其是申请免费license。这里直接给出官网下载链接Ansible-Tower
这里使用的是最新版(3.4.3)
wget http://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz -P /data/tower/
cd /data/tower/
tar xvf ansible-tower-setup-latest.tar.gz -C ./
cd ansible-tower-setup-3.1.4/
目录结构,安装非常简单,这也要得益于ansible的playbook。
[root@ad0e6b9ef8d5 ansible-tower-setup-3.1.4]# ll
total 60
-rw-r--r--. 1 root root 2526 Jul 10 13:59 README.md
-rw-r--r--. 1 root root 129 Jul 10 13:59 backup.yml
drwxr-xr-x. 2 root root 4096 Jul 10 13:59 group_vars
-rw-r--r--. 1 root root 10 Jul 25 03:03 install.retry
-rw-r--r--. 1 root root 5571 Jul 10 13:59 install.yml
-rw-r--r--. 1 root root 379 Jul 25 03:03 inventory
drwxr-xr-x. 2 root root 12288 Jul 10 13:59 licenses
-rw-r--r--. 1 root root 944 Jul 10 13:59 restore.yml
drwxr-xr-x. 18 root root 4096 Jul 10 13:59 roles
-rwxr-xr-x. 1 root root 9628 Jul 10 13:59 setup.sh
编辑inventory配置文件如下
vim inventory
[tower]
localhost ansible_connection=local
[database]
[all:vars]
#ansible-tower登录密码
admin_password='admin'
#PostgreSQL监听地址端口
pg_host='127.0.0.1'
pg_port='5432'
pg_database='awx'
pg_username='awx'
#here
pg_password='awx'
rabbitmq_port=5672
rabbitmq_vhost=tower
rabbitmq_username=tower
#here
rabbitmq_password='tower'
rabbitmq_cookie=cookiemonster
# Needs to be true for fqdns and ip addresses
rabbitmq_use_long_name=false
运行安装脚本
sh setup.sh
脚本会自动安装,熟悉的执行playbook任务界面。安装成功
localhost : ok=41 changed=5 unreachable=0 failed=0
0x02导入license文件
注意从3.2.x版本开始ansible-tower破解方式更改,无需申请license文件
更改文件/var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/__init__.py第120行如下
119def_check_cloudforms_subscription(self):
120returnTrue
121if os.path.isdir("/opt/rh/cfme-appliance") and os.path.isdir("/opt/rh/cfme-gemset"):
122try:
123 has_rpms = subprocess.call(["rpm", "--quiet", "-q", "cfme", "cfme-appliance", "cfme-gemset"])
124if has_rpms == 0:
125returnTrue
126except OSError:
127pass
128returnFalse
首先下载python反编译工具
pip install uncompyle2
HOSTS限制破解
反汇编
/var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/__init__.pyc
cd /var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/; uncompyle6 __init__.pyc >__init__.py
rm -f __init__.pyc __init__.pyo
更改文件
/var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/__init__.pyc
更改低153行如下
#available_instances = int(attrs.get('instance_count', None) or 0)
available_instances = 100000
attrs['current_instances'] = current_instances
访问tower:https://192.168.99.188/,默认用户名为admin密码为inventory文件中设置的admin_password='admin'
重点来了,这里会提示让选择license文件,申请这个很是麻烦,so这里分享下我自己申请下来的license文件直接导入就ok。仅供实验测试使用,请勿用于其它用途!。
0x03 破解10个hosts限制
申请的免费版license最多只能添加10个主机。
HOSTS AVAILABLE 10
反编译文件task_engine.pyc
#查找文件
root@2813e2635181:~# find / -name task_engine.pyc
/usr/lib/python2.7/dist-packages/awx/main/task_engine.pyc
cd /usr/lib/python2.7/dist-packages/awx/main/
#反编译文件
uncompyle6 task_engine.pyc >task_engine.py
更改task_engine.pyc文件
修改内容 available_instances = int(self.attributes['instance_count'])为available_instances = 10000,大约在162行
删除task_engine.pyc task_engine.pyo,重启tower
0x04
至此安装破解都已完成。简单的试用了下,很方便,通过git来获取更新任务playbook文件,图形化配置playbook参数,任务审计记录。结合ansible进行主机管理,服务部署,很方便。
写了个zookeeper集群部署的playbook deploy_zk。:P
====================================================================================================
ansible-tower版本: 3.2.6 仅供实验测试使用,请勿用于其它用途!
ansible版本: 2.8.0
ansible-tower版本:3.2.6
一、环境准备:
CentOS Linux release 7.4
[root@localhost ~]#yum -y install ansible
[root@localhost ~]# ansible --version
ansible 2.6.4
二、安装ansible-tower:
[root@localhost ~]#wget https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-3.2.6-1.el7.tar.gz
[root@localhost ~]#tar -zxvf ansible-tower-setup-bundle-3.2.6-1.el7.tar.gz
[root@localhost ~]#cd ansible-tower-setup-bundle-3.2.6-1.el7
修改配置文件inventory将里面所有的密码都修改为自己的密码,如下三处的标红地方:
[root@localhost ansible-tower-setup-bundle-3.2.6-1.el7]# pwd
/root/ansible-tower-setup-bundle-3.2.6-1.el7
[root@localhost ansible-tower-setup-bundle-3.2.6-1.el7]# ./setup.sh
如果网络没有问题的话耐心等待安装完成即可.
安装完成没报错的话即可访问web页面:https://9.110.187.203/#/,默认初始页面如下:
默认用户为admin,密码为inventory文件admin_password字段配置的密码,我这里配置的密码也为admin.
导入license,没有的话,点击REQUEST LICENSE,去官方(https://www.ansible.com/license)申请免费试用,填写个人信息后(邮箱要填写正确,其他信息可随便填写)会把license发到填写的邮箱.
提交license并登录成功后默认初始页面如下:
[root@localhost ansible-tower-setup-bundle-3.2.6-1.el7]# cd /var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license
vi __init__.py将119行和120行修改为如下内容,特别需要注意格式,如下:
修改完重新编译一下:
[root@localhost tower_license]# python -m py_compile __init__.py
[root@localhost tower_license]# python -O -m py_compile __init__.py
重启服务:
[root@localhost tower_license]# ansible-tower-service restart
重新打开settings–VIEW YOUR LICENSE,发现"Hosts Available"变成了9999999台,说明破解成功,如下: