轉: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臺,說明破解成功,如下: