1、Ansible介绍
Ansible是一个自动化运维工具,大规模节点化管理。
优点:
(1)简单,SHELL脚本能做的事情,Ansible都能做。Playbook可读性很强。
(2)强大,模块化实现,约2000多模块,如copy模块。
(3)YAML格式文件,严格的缩进。
(4)真正实现自动化运维的基础(docker是针对应用做容器化,而Ansible针对全局),有CI和CD的集成思想。
(5)最大的优点,puppet saltstack 被管理节点一定需要安装客户端的,但是ansible是agentless无客户端,完全ssh管理。
2、Ansible架构
【注】类CI和CD的无缝集成。测试、质量管理、具体操作者、管理人员、外包,所有人员都可以通过ansible playbook实现想要的功能。
Ansible集成内容:
(1)CMDB即配置管理数据库。
(2)INVENTORY即清单,被管理节点信息。分静态和动态(Python脚本实现)。
(3)MODULES即模块,搞清楚常用模块,如安装install,拷贝copy等模块。
(4)PLUGINS即插件,用来实现ansible和客户端连接的功能。
重点:如何引用和设置清单inventory,如何查找和使用modules。
架构:
管理节点:安装了ansible的管理节点,通过ssh到被管理节点,执行任务任务task。
(1)停止监控
(2)移除负载均衡
(3)停止服务
(4)部署应用
【注】如上图,一个服务器需要执行以上6步,那么100台服务器的工作量是相当可怕的,可以通过ansible进行批量部署。
3、Ansible安装部署
(1)安装部署和授权
[root@ansible ~]# yum install ansible -y [root@ansible ~]# useradd devops [root@ansible ~]# passwd devops [root@ansible ~]# cp -ir /etc/ansible /home/devops/ [root@ansible ~]# cd /home/devops/ [root@ansible devops]# chown -R devops:devops ansible/
(2)两台待管理主机添加devops用户
[root@blogs ~]# useradd devops [root@blogs ~]# passwd devops [root@hsd ~]# useradd devops [root@hsd ~]# passwd devops
(3)配置免密登录
[devops@ansible ~]$ ssh-keygen -t rsa
[devops@ansible ~]$ ssh-copy-id blogs [devops@ansible ~]$ ssh-copy-id hsd
(4)修改visudo配置
[root@blogs ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL devops ALL=(ALL) NOPASSWD:ALL [root@hsd ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL devops ALL=(ALL) NOPASSWD:ALL
4、修改Ansible主配置文件
Ansible的配置文件:定义相关的属性、设置清单。
(1)Ansible配置文件优先级
/etc/ansible/ansible.cfg # /etc下的默认ansible配置文件优先级最低 ~/ansible.cfg # 当前家目录ansible配置文件,优先级其次 ./ansible.cfg # 当前目录ansible配置文件,优先级最高
(2)修改当前目录下的ansible.cfg配置文件
[devops@ansible ansible]$ vim ansible.cfg [defaults] inventory=/home/student/dep-dynamic/inventory # 设置动或静态清单所在目录,无需-i remote user=devops # 远程以devops身份操作 [privilege_escalation] # 提权参数 become=True # 允许用户做权限提升 become_method=sudo # 提升的方式是sudo become_user=root # 提权到root用户 become_ask_pass=False # 不需要输入密码
5、验证测试,编辑hosts
[devops@ansible ansible]$ vim hosts [blogs] blogs [hsd] [all] blogs [devops@ansible ansible]$ mkdir inventory [devops@ansible ansible]$ mv hosts inventory # 测试blogs主机和hsd主机是否有做过修改 [devops@ansible ansible]$ ansible all -m ping
【注】出现上面返回信息,说明ansible已经配置成功,可以管理blogs主机和hsd主机。
作者:UStarGao
链接:
https://www.starcto.com/devops/78.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐