Ansible 中文权威指南
1.运维自动化应用场景
- 操作系统预备自动化:快速实现应用配置,软件配置,提高准确性
- 配置自动化:ansible 开箱即用,使用ssh 协议
- 监控自动化
系统和应用监控
日志监控 - 代码持续集成与代码持续发布自动化
2.ansible :无主无从架构,开箱即用,用完即走
需要对主机进行操作那么就要加到host inventotary 里面,不认识的主机是不会操作,是ssh 协议进行操作;ansible 使用模块来进行操作,有core module 也有custom module;playbook-剧本,完成复杂应用的部署
3.ansible 安装
安装epel-release YUM 源–> 安装ansible
yum -y install epel-release
yum -y install ansible
rpm -qa |grep ansible 或者ansible 按tab 补全就可以看到了
-
主机清单
如果主机清单里面没有的时候,就没办法操作主机
-用于ansible controller 配置主机的时候读取主机列表
-实现主机分组
主机清单存储位置:
/etc/ansible/hosts
**方法一:**直接在主机清单里面写入主机IP或者主机名(需要DNS 来解析)
192.1.1.1
#或
web1**方法二:**在主机清单文件中添加主机分组,然后把主机IP或者主机名写入分组即可 [webgroup] 192.168.2.4 #或 [webgroup] web1
5.ansible 应用案例一:免密登录,ping 模块
ansible controller 是通过ssh 协议与其他主机进行通信的,如果主机较多,使用用户名和密码合适吗?
ansible controller 是对其他主机操作时,仅识别主机清单中的主机,那么如何定义主机清单呢?
ansible 模块中使用的格式是怎样的?
第一步:实现多主机之间免密码登录
**如果想要实现从A免SSH密码登录B,那么就把A的公钥放到B上。**
#在ansible controller 生成秘钥
**ssh-keygen -t esa -f /root/.ssh/id_rsa -N ''**
**ls /root/.ssh** --> id_rsa 私钥 id_rsa.pub 公钥, 以后当下主机只要一免密码登录就会known_hosts 里 面添加一个
#实现秘钥同步/usr/bin/ssh-copy-id , 复制的是公钥
**ssh-copy-id remotehostname1**
-->authorized_keys
第二步:定义主机清单
/etc/ansible/hosts
第三步:ping 模块使用
ansible 主机清单IP/分组名称 -m 模块
**ansible 192.168.216.33 -m ping**
其实不是真ping ,只是ssh 能连接上了
6.ansible 应用案列二:cron 模块实现配置多主机时间同步
第一步:选择时钟源服务器
国内建议用time1.aliyun.com
国外建议用time.windows.com
第二步:cron模块应用
time.windows.com
ansible 主机清单中IP 或分组名称 -m 模块 -a "参数"
**ansible 192.168.216.33 -m cron -a 'name="test" job="ntpdate time1.aliyun.com" minute=0 hour=*/1'**
#每个小时同步一次
#批量周期性服务器计划任务定义
**crontab -l**
7.ansible 应用案列三:copy 模块 实现多主机配置文件同步
第一步:准备本地域名解析文件
cat /etc/hosts
第二步:copy 模块应用
ansible 命令格式
ansible 主机清单中IP 或分组名称 -m 模块 -a “参数”
#copy模块应用,仅仅用于本地文件copy 到远程主机
ansible 192.168.216.20 -m copy -a “src=/etc/hosts dest=/etc/hosts”
#远程主机验证
cat /etc/hosts
总结
1.有大量应用部署的时候或者软件配置更改的时候会用到,提高效率和准确性,降低用工成本
2.ansible(无主无从架构,任何一台主机安装了ansible 就是controller ;开箱即用,ssh),saltstack,puppet
3.ansible 工作原理是模块化加主机清单的形式