Ansible-Tower自动化运维管理环境

公司中实现运维自动化的架构中主要用到ansible,ansible脚本在部署服务器指令行中显得不太直观。Ansible-Tower(之前叫做awx)是将ansible的指令界面化,简明直观,简单易用。Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写。Ansible-tower可以通过界面从github拉取最新playbook实施服务部署,提高生产效率。当然它也提供一个RESET API和命令行的CLI以供python脚本调用。下面是Ansible-Tower的搭建记录,在此分享下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

Ansible-Tower目前支持7.4+的版本,可以使用yum update -y命令更新;

   

1. 安装Ansible的epel源

[[email protected] ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

   

[[email protected] ~]# python -V

Python 2.7.5

  

关闭selinux

[[email protected] ansible-tower]# vim /etc/sysconfig/selinux

.........

SELINUX=disabled

[[email protected] ansible-tower]# setenforce 0

setenforce: SELinux is disabled

[[email protected] ansible-tower]# getenforce

Disabled

  

关闭防火墙

[[email protected] ansible-tower]# systemctl stop firewalld 

[[email protected] ansible-tower]# systemctl disable firewalld

[[email protected] ansible-tower]# firewall-cmd --state

not running

  

========================================================================================================

需要注意:如果开启了防火墙,需要开放对应访问策略(这里是测试环境,就关闭了防火墙)

[[email protected] ansible-tower]# firewall-cmd --permanent --zone=public --add-port=80/tcp

[[email protected] ansible-tower]# systemctl restart firewalld.service

========================================================================================================

  

2. 安装Ansible

[[email protected] ~]# yum install -y ansible

[[email protected] ~]# ansible --version

ansible 2.8.2

  config file /etc/ansible/ansible.cfg

  configured module search path = [u‘/root/.ansible/plugins/modules‘, u‘/usr/share/ansible/plugins/modules‘]

  ansible python module location = /usr/lib/python2.7/site-packages/ansible

  executable location = /usr/bin/ansible

  python version = 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

  

3. 按照ansible-tower(官网下载地址: https://releases.ansible.com/ansible-tower/setup/

下载地址:https://pan.baidu.com/s/1Uz-BFZXkjOr4FLg-lFF4fQ

提取密码:3e97

  

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-3.2.6-1.el7.tar.gz

[[email protected] src]# tar -zvxf ansible-tower-setup-bundle-3.2.6-1.el7.tar.gz

[[email protected] src]# mv ansible-tower-setup-bundle-3.2.6-1.el7 /usr/local/ansible-tower

[[email protected] src]# cd /usr/local/ansible-tower

[[email protected] ansible-tower]# ls

backup.yml  bundle  group_vars  install.yml  inventory  licenses  README.md  restore.yml  roles  setup.sh

  

配置inventory文件 (注意:admin_password处填写的就是ansible-tower登陆密码,密码可以自行设定)

[[email protected] ansible-tower]# sed -i "s#password=‘‘#password=‘[email protected]‘#g" inventory   

[[email protected] ansible-tower]# sed -i "s#host=‘‘#host=‘127.0.0.1‘#g" inventory

[[email protected] ansible-tower]# sed -i "s#port=‘‘#port=‘5432‘#g" inventory

  

安装前先创建/var/log/tower的日志目录,不然会报错

[[email protected] ansible-tower]# mkdir -p /var/log/tower

  

接着执行ansible-tower的安装脚本,如果网络没有问题的话耐心等待安装完成即可.

[[email protected] ansible-tower]# ./setup.sh

安装完成没报错的话即可访问web页面,这里测试机地址为172.16.60.244,则访问ansible-tower地址就是https://172.16.60.244, 默认初始页面如下:

默认用户为admin,密码为inventory文件admin_password字段配置的密码(如上设置的密码为"[email protected]")。接着会提示让选择license文件,导入license,没有的话,点击REQUEST LICENSE,去官方 (https://www.ansible.com/license) 申请免费试用,填写个人信息后 (邮箱要填写正确,其他信息可随便填写) 会把license发到填写的邮箱。这里分享一个已经申请下来的license文件  (提取密码为: krwe)。提交license并登录成功后默认初始页面如下:

申请的免费版license最多只能添加10个主机, 且有时间限制。 下面记录下破解方法:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

[[email protected] ansible-tower]# cd /var/lib/awx/venv/awx/lib/python2.7/site-packages/tower_license

[[email protected] tower_license]# ll

total 28

-rw-r--r-- 1 root root 10417 Aug 11  2018 __init__.py

-rw-r--r-- 1 root root  6352 Aug 11  2018 __init__.pyc

-rw-r--r-- 1 root root  6352 Aug 11  2018 __init__.pyo

修改__init__.py文件

将119行和120行修改为如下内容,特别需要注意格式.

也就是在原文119和120行之间添加了一行"return True"内容,格式对齐即可 (即加入的"return True" 跟 后面的if语句保持对齐,不然后面重新编译会报错)。

[[email protected] tower_license]# vim __init__.py

.........

119     def _check_cloudforms_subscription(self):

120         return True

121         if os.path.exists(‘/var/lib/awx/i18n.db‘):

122             return True

123         if os.path.isdir("/opt/rh/cfme-appliance") and os.path.isdir("/opt/rh/cfme-gemset"):

124             try:

.........

修改完重新编译一下:

[[email protected] tower_license]# python -m py_compile __init__.py

[[email protected] tower_license]# python -O -m py_compile __init__.py

[[email protected] tower_license]#

重启服务:

[[email protected] tower_license]# ansible-tower-service restart

Restarting Tower

Redirecting to /bin/systemctl stop postgresql-9.6.service

Redirecting to /bin/systemctl stop rabbitmq-server.service

Redirecting to /bin/systemctl stop nginx.service

Redirecting to /bin/systemctl stop supervisord.service

Redirecting to /bin/systemctl start postgresql-9.6.service

Redirecting to /bin/systemctl start rabbitmq-server.service

Redirecting to /bin/systemctl start nginx.service

Redirecting to /bin/systemctl start supervisord.service

[[email protected] tower_license]#

重新打开ansible-tower界面的"settings"–>"VIEW YOUR LICENSE",发现"Hosts Available"变成了9999999台,说明破解成功,如下:

需要注意:发现最新版本或者高版本的ansible-tower没有__init__.py文件需要对__init__.pyc进行反编译,然后进行HOSTS限制破解操作:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

比如下载ansible-tower-setup-latest.tar.gz最新的包,按照上面的按照部署,将ansible-tower部署到/usr/local目录下

[[email protected] ~]# python --version

Python 2.7.5

[[email protected] ~]# cd /var/lib/awx/venv/awx/lib/python3.6/site-packages/tower_license

[[email protected] tower_license]# ll

total 8

-rw-r--r-- 1 root root 5055 Aug 12 21:13 __init__.pyc

drwxr-xr-x 2 root root   37 Aug 22 15:19 __pycache__

1)接下来进行反汇编init.pyc

[[email protected] tower_license]# yum install python-pip

[[email protected] tower_license]# pip -V

pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

[[email protected] tower_license]# pip install uncompyle6

[[email protected] tower_license]# uncompyle6 --version

uncompyle6 3.3.5

[[email protected] tower_license]# uncompyle6 __init__.pyc >__init__.py

[[email protected] tower_license]# ll

total 16

-rw-r--r-- 1 root root 7301 Aug 22 15:42 __init__.py

-rw-r--r-- 1 root root 5055 Aug 12 21:13 __init__.pyc

drwxr-xr-x 2 root root   37 Aug 22 15:19 __pycache__

2)修改__init__.py文件

[[email protected] tower_license]# vim __init__.py

........

# _check_cloudforms_subscription方法修改如下内容,特别需要注意格式。

    def _check_cloudforms_subscription(self):

# 只需要添加下面一行直接返回 True即可。注意格式要跟if对对齐。

        return True

        if os.path.exists(‘/var/lib/awx/i18n.db‘):

            return True

        else:

            if os.path.isdir(‘/opt/rh/cfme-appliance‘):

                if os.path.isdir(‘/opt/rh/cfme-gemset‘):

                    pass

            try:

........

#修改"license_date=253370764800L" 为 "license_date=253370764800"

........

    def _generate_cloudforms_subscription(self):

        self._attrs.update(dict(company_name=‘Red Hat CloudForms License‘, instance_count=9999999,

          license_date=253370764800,            # 只需要修改这一行

          license_key=‘xxxx‘,

          license_type=‘enterprise‘,

          subscription_name=‘Red Hat CloudForms License‘))

........

3)修改完重新编译一下

[[email protected] tower_license]# python -m py_compile __init__.py

[[email protected] tower_license]# python -O -m py_compile __init__.py

[[email protected] tower_license]#

4)重启服务

[[email protected] tower_license]# ansible-tower-service restart

5)最后打开url (https://your_ip/#/license) ,发现"Hosts Available"变成了"9999999"台, 到期时间变成了"01/01/9999", 说明破解成功了。

原文地址:https://www.cnblogs.com/jians/p/11940768.html

时间: 2024-10-10 02:20:23

Ansible-Tower自动化运维管理环境的相关文章

SUSE Linux 11编译安装Ansible自动化运维管理工具

ANSIBLE Ansible是一个使用Python语言开发的Linux平台下的自动化运维管理工具,它支持远程管理绝大多数Linux或Windows主机.Ansible默认通过SSH协议管理机器,即只需要在管理主机上安装Ansible就可以远程管理Linux主机,被托管节点主机不需要安装.对于Windows机器则是通过与Windows的Winrm Service服务(PowerShell3.0需要以上的版本)进行远程管理. Ansible需要Python2.6或Python2.7以上(包括3.0

CheungSSH 史上最牛的比Ansible更好用的自动化运维管理工具

CheungSSH自动化运维管理工具 说明:CheungSSH自动化运维管理工具是由[张其川 Cheung Kei-Chuen]开发的易于部署安装,操作简单.功能实用.无需安装任何插件.提供技术支持.授权免费使用的一款运维利器. 一.下载安装CheungSSH 特别提示:    CheungSSH由于是批量的管理操作, 所以暂时不支持交互式,比如vi,top,ping等等:当然,如果懂得如何取消交互,那么也是可以的. 使用平台介绍: CheungSSH只适用于Linux系统和Unix系统,因为是

开发自动化运维管理平台

开发环境: 操作系统:Cenots6.6 Web框架:tornado-4.0.2 数据库:mysql-5.1.73 相关软件包: tornado相关依赖包 backports.ssl_match_hostname-3.4.0.2.tar.gz setuptools-5.7.tar.gz certifi-1.0.1.tar.gz tornado-4.0.2.tar.gz torndb数据库环境需要软件包 MySQL-python-1.2.5.zip torndb-0.2.tar.gz window

教你如何用好这些IT运维管理必备工具

能熟练使用下面的两三个IT运维管理工具,你就是高手中的高手. 统一帐号管理 你还在自己写脚本批量增加机器的用户名.分组和修改密码或者同步主机的/etc/passwd吗?你还在使用脚本批量对用户设置权限吗?如果有一台帐号主机能够提供所有服务器的帐号.密码.权限控制,如此一来,如果想要增加.修改.刪除用户,只要到这台服务器上面处理即可,这样是不是很方便? 1. LDAP 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows.Linux),Linux系统sudo集成,系统用户分组,主机

搬砖-运维管理平台OpsMange安装部署

腾讯蓝鲸运维管理平台是一个很好的项目,但是比较庞大复杂,部署和维护比较繁琐,关键是按照产品手册部署出来的一直都有问题,可能是我技术比较low =.= 也试过刘天斯大神的OMserver,但是这个只是一个实验平台,应用不到生产上.后来发现opsManage项目比较好,就开始尝试部署使用,现在也支持docker版本. 一款代码部署.应用部署.计划任务.设备资产管理平台. 编程语言:Python2.7 + HTML + JScripts 前端Web框架:Bootstrap 后端Web框架:Django

云运维管理服务引领企业IT运维新理念

IT监控与运维管理是用户保障业务系统正常稳定运行的必要手段,是用户业务系统的支撑工具.随着IT建设的不断深入和完善,计算机硬软件系统的运行维护已经成为了各行各业各单位领导和信息服务部门普遍关注和不堪重负的问题. 本人在IT监控与运维服务管理领域耕耘十五年,从ITIL服务体系到SLA服务等级协议等理念的引入见证了IT运维管理服务领域的成长历程.IT运维管理发展到现今的水平还是存在着诸多的矛盾与问题,伴着IT在企业中的作用日益明显,IT建设和IT运维同时成为了企业效率的加速器.基础架构平台和软件系统

django实现Linux运维管理平台

老早之前就想做一个运维管理平台的项目了,但是一直没沉下来去做,上半年的时候毕设选择了这个课题,想着逼自己一把,不管做出来的怎么样,先把它搞起来..... django的工作原理: 文字说明: (1)Web服务器收到用户的http请求. (2) Django通过URL控制器来判断对应的视图(View)函数从而对http请求做处理. (3)视图函数调用相应的模型来存取数据.调用相应的模板把数据展示出来. (4)视图函数最终返回一个http的响应给Web服务器. (5)Web服务器把接收到的响应数据发

运维管理平台实现与学习心得

经过一段时间的学习,写了一个简单的运维管理平台小项目,先看看啥样吧! 下面说明下具体实现: 软件架构:HTML+CSS+Jquery+Bootstrap+Ajax+Python2.7+Django1.9+SaltStack+MySQL 功能描述: 数据可视化:采用百度开源的ECharts绘图,通过Python脚本每分钟统计Nginx日志分析PV/UV量写到数据库. 资产管理:采用SaltStack Restful API二次封装调用收集主机配置信息入库,并提供增删改查. 主机批量管理:也是调用S

云计算数据中心运维管理要点

在数据中心生命周期中,数据中心运维管理是数据中心生命周期中最后一个.也是历时最长的一个阶段.数据中心运维管理就是:为提供符合要求的信息系统服务,而对与该信息系统服务有关的数据中心各项管理对象进行系统的计划.组织.协调与控制,是信息系统服务有关各项管理工作的总称.数据中心运维管理主要肩负起以下重要目标:合规性.可用性.经济性.服务性等四大目标. 由于云计算的要求弹性.灵活快速扩展.降低运维成本.自动化资源监控.多租户环境等特性除基于ITIL的常规数据中心运维管理理念之外,以下运维管理方面的内容,也