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.1.4)
1234567
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。
123456789101112
[[email protected] ansible-tower-setup-3.1.4]# lltotal 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.ymldrwxr-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 inventorydrwxr-xr-x. 2 root root 12288 Jul 10 13:59 licenses-rw-r--r--. 1 root root 944 Jul 10 13:59 restore.ymldrwxr-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
123456789101112131415161718192021222324252627
[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'#herepg_password='awx'rabbitmq_port=5672rabbitmq_vhost=towerrabbitmq_username=tower#hererabbitmq_password='tower'rabbitmq_cookie=cookiemonster# Needs to be true for fqdns and ip addressesrabbitmq_use_long_name=false
运行安装脚本
1
sh setup.sh
脚本会自动安装,熟悉的执行playbook任务界面。
安装成功
1
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行如下
119 def _check_cloudforms_subscription(self):120 return True121 if os.path.isdir("/opt/rh/cfme-appliance") and os.path.isdir("/opt/rh/cfme-gemset"):122 try:123 has_rpms = subprocess.call(["rpm", "--quiet", "-q", "cfme", "cfme-appliance", "cfme-gemset"])124 if has_rpms == 0:125 return True126 except OSError:127 pass128 return False
HOSTS限制破解
反汇编/var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/__init__.pyc
12
cd /var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/; uncompyle6 __init__.pyc >__init__.pyrm -f __init__.pyc __init__.pyo
更改文件 /var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license/__init__.pyc
153154155
#available_instances = int(attrs.get('instance_count', None) or 0)available_instances = 100000attrs['current_instances'] = current_instances
访问tower:https://192.168.99.188/
,默认用户名为admin
密码为inventory
文件中设置的admin_password='admin'
重点来了,这里会提示让选择license文件,申请这个很是麻烦,so这里分享下我自己申请下来的license文件直接导入就ok。仅供实验测试使用,请勿用于其它用途!。
0x03 破解10个hosts限制
申请的免费版license最多只能添加10个主机。
1
HOSTS AVAILABLE 10
首先下载python反编译工具
1
pip install uncompyle2
反编译文件task_engine.pyc
123456789
#查找文件[email protected]:~# find / -name task_engine.pyc/usr/lib/python2.7/dist-packages/awx/main/task_engine.pyccd /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