Ansible及Ansible Tower安装

Ansible及Ansible Tower安装

一、架构介绍

1. 基础环境

Linux版本:CentOS 7.5

​Ansible版本:2.5.3

Ansible Tower版本:3.2.5

Ansible 服务器:共三台,ans-01,ans-02,ans-03​​

使用VMware Fusion虚拟化环境进行模拟,所有服务器2 Cores,2GB RAM。​

2. Ansible Tower架构

Ansible本质上是一个进行了封装的Shell。优点在于它是去中心化的工具,可以直接通过ssh管理远程主机,实现无Agent的部署(ssh+python环境已经原生集成在Linux中)。

Ansible的缺点也在于其去中心化的特点,​​本身不支持高可用和分布式架构,无法实现Server-Proxy-Client的架构。在比较复杂或者多区域的网络区域中,无法实现统一的集中式管理(如多个ansible管理端的配置同步),也没有前端UI,对ansible的技能要求比较高。

Redhat提供为Ansible提供了一个前端UI,Ansible Tower。使用它可以免费管理10台以内的主机。

Ansible Tower提供了通过WEB端管理其他主机的方式。本身也支持Cluster群集方式(需要在每个节点上都安装ansible和ansible tower),通过修改配置文件来实现多个Ansible Tower组成一个或者多个群集。

Ansible Tower是目前唯一(除了自研发方式外)能够实现底层Ansible高可用、水平扩展的解决方案。Ansible Tower的功能比较简单,群集配置逻辑(Instance Group分组)通过配置文件实现,没有一个前端维护的界面。因此每次重新配置逻辑都需要在更新配置文件后重跑ansible tower的setup文件。​​​​

二、Ansible安装

1. 配置Ansible的YUM源

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2. 安装Ansible

yum install ansible​

验证ansible --version​

3. 生成公钥

ssh-keygen -N "" -b 4096 -t rsa -C "Ansible Public Key" 

生成的秘钥默认为id_rsa,可以通过-f参数指定其他路径,但需要修改ssh_config的默认秘钥文件名,才能实现免密登陆。​​

4. 复制公钥

ssh-copy-id -i /root/.ssh/id_rsa root@localhost​

​​

5. 添加主机到Ansible的hosts列表

修改/etc/ansible/hosts文件,将管理服务器的信息加入到这个文件,也可以按需分组。

ans-[01:99] 表示ans-01, ans-02, ... , ans-99所有的服务器

6.验证免密码登陆及Ansible管理功能

​运行ssh host或者ansible远程执行命令(如ansible "localhost" -m command -a "ip addr")来检测是否可进行免密码登陆。

7. 对于其他要进行管理的服务器,可以重复第4步,进行公钥下发,下发后,便可以实现通过ssh进行远程操作。ansible的远程管理需要进行一定的配置后才能进行。

8.重复上述步骤,使得ans-01,ans-02,ans-03可以相互进行管理(即:每台服务器的/root/.ssh/authorized_keys文件存在这三台服务器的密钥信息)。

三、Ansible Tower安装

1. 下载Ansible Tower

在ans-01(或者任意一台ansible服务器上)下载Ansible Tower的tar包,路径为https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz

wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz

2. 解压tar包

tar -xzf ansible-tower-setup-latest.tar.gz

3. 修改Ansible Tower的配置文件

1) Ansible Tower配置文件

Ansible Tower配置文件位于解压目录的根目录下,文件名为inventory。所有Ansible Tower的管理员密码、数据源PostgreSQL、消息队列RabbitMQ以及Instance Group配置都通过该文件维护。详细的配置文档可查看:https://docs.ansible.com/ansible-tower/latest/html/administration/clustering.html

2) Instance和Instance Group

所谓的Instance就是具体执行Ad-Hoc命令或者Playbook的Ansible服务器,一个或者多个服务器组成一个Instance Group;一个Instance Group包含一台或者多台的Instance,一个Instance可以属于不同的Instace Group(即多对多的关系)。

​可以按一定的维度(Job Templates,Inventories,Organizations)和Instance Group进行关联,使得按区域、按功能的分组管理。

默认必须存在一个叫做Tower的全局Instance Group,且需要至少有一个Instance。这个Instance Group中的服务器负责一些全局管理操作(清理过期任务),或者作为执行Ad-Hoc命令或者Playbook的默认Instance Group(如未指定其他Instance Group的话)。​

3)修改配置文件

Instance Group分组直接在Inventory中修改,以[instance_group_NAME]进行分组。

另外还需要为Ansible Tower指定数据库和消息队列名称(如没有安装数据库,Ansible Tower会自行安装)。

如果使用公共的数据库,需要将其加入[database]字段中。​

该配置文件的其他配置保持默认,或参考https://docs.ansible.com/ansible-tower/latest/html/administration/clustering.html​进行修改。

​以下是一个inventory的demo文件。​

​​​

​[tower]

ans-01

[instance_group_ans1]

ans-01

[instance_group_ans2]

ans-02

[instance_group_ans3]​​​​​​

​ans-03

[instance_group_ans12]

ans-01

ans-02​​​

[instance_group_ans13]

ans-01

ans-0​​​​3

​​

[instance_group_ans23]

ans-02

ans-03

[instance_group_ansALL]

ans-01

ans-02​​​​​

ans-03​

​​

[database]

ans-01​

[all:vars]

admin_password='admin'

pg_host='ans-01'

pg_port='5432'

pg_database='awx'

pg_username='awx'

pg_password='awx'

rabbitmq_port=5672

rabbitmq_vhost=tower

rabbitmq_username=tower

rabbitmq_password='tower'

rabbitmq_cookie=cookiemonster

# Needs to be true for fqdns and ip addresses

rabbitmq_use_long_name=false

# Isolated Tower nodes automatically generate an RSA key for authentication;

# To disable this behavior, set this value to false

# isolated_key_generation=true

4. 安装Ansible Tower

1)运行 setup.sh

切换到解压后的目录(inventory文件的同级目录),运行 setup.sh

2)安装

安装过程中,Ansible会通过Playbook安装Ansible Tower。整个过程中会检测相关组件是否安装,并自动安装配置,可能需要10分钟左右。

安装过程中可能会出现一些fail,主要是因为selinux或者防火墙的问题。可以通过下列命令关闭并禁止自动启动(也可以配置防火墙规则解决)

getenforce #查看Selinux 状态,通过修改/etc/selinux/config,禁用selinux​

​​systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

如果没有配置本地repo,下载Tower RPM时可能会比较慢。如遇到安装失败,解决响应问题后,重新运行setup.sh即可。​

3)完成安装

如显示上述样式的输出结果,则表明Ansible已经安装成功。

​​​

4)验证安装

通过访问三台主机的http服务,即可进入ansible tower的管理界面。

​三个主机都提供了前端web服务和API调用,后端的数据一致。​​​

​​

5)安装完成

导入license后,即可进入Ansible Tower的管理控制台。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259