一、Ansible Tower的高可用架构
Ansible tower可以配置集群,如果配置集群,至少有三个节点,并且是奇数个。例如下图:
三个ansibe tower组成的cluster共享一个postgreSQL数据库(当然也可以给数据库做高可用,如Hot standby/streaming replication或者Warm standby/log shipping方式);
每个节点上都有RabbitMQ,RabbitMQ可以连接所有的ansible toewer节点,并做任务下发的负载均衡(任务下发策略后面会提到);
一个任务下发到某一个tower上,任务执行过程中,如果节点出现故障,任务需要重新提交,在其他tower上执行;
Ansible tower集群中的任务有两类:
(1)决定去哪运行job
(2)处理playbook信息
Tower cluster判断tower成员健康状态调用:/api/v2/ping
二、Ansible Tower容量规划
一个Ansible tower最小配置:
2个CPU(硬件超线程)
2GB内存
每个CPU(硬件超线程)最大可以有10个forks,4GB内存可以运行100个forks。
所以:
当通过访问呢ansible tower发执行jod请求的时候,tower会计算这个运算这个jbos所需要的运算能capacity。
一个job运行所需要的运算能力公式:
(number of forks on the job) * 10 = (capacity consumed)
其中,number of forks on the job,指的是这个job执行的时候,并发执行节点的数量。例如,一个job是给100个Linux系统打补丁,如果每次对5个机器并发下发任务,那就需要下发20次。这个并发下发的数量,就是number of forks on the job。
那么,怎么计算一个tower的运算能力呢?参照公式:
50 + ((total memory in megabytes) / 1024) - 2) * 75
我们想象一个场景:运行一个job,需要50的运算能力,那么当job发起后,就会到tower集群中,寻找剩余运算能力不低于50的tower节点去执行。
因此,我们在给ansible tower做配置和设置job fork的时候,就需要尽量合理。
三、Ansible Tower的认证方式
Ansible tower的认证方式有:
Google OAuth2
GitHub OAuth2
Azure Active Directory
SAML authentication
RADIUS authentication
Kerberos authentication
Active Directory and Kerberos
四、Ansible Tower中的workflow
在Ansible tower中,可以配置workflow。
workflow是将tower中已有的多个job串联、并联起来,组成任务流。
workflow的每一步使用不同的Playbook、Inventory和Set of credentials。
局内内容,后面内容会涉及。
五、Ansible Tower安装
首先查看实验环境:
下载tower软件包:
配置ansible tower集群的清单文件:
执行ansible tower cluster的安装:
安装完毕:
通过浏览器访问tower1:
配置psotgres数据库复制:
在tower集群中tower1创建用户
tower2上也可以看到这个用户:
创建孤立节点:
执行playbook:
安装成功:
再度登录ansible tower,可以看到孤立组:
六、Ansible Tower配置与LDAP的认证
查看tower集群:
安装openldap的客户端:
查看ldap中的信息:
配置LDAP:
配置完成以后,可以使用ldap的用户登录Ansible tower。
魏新宇
"大魏分享"运营者、红帽资深解决方案架构师
专注开源云计算、容器及自动化运维在金融行业的推广
拥有红帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、ITIL V3、Cobit5、C-STAR、AIX、HPUX等相关认证。