运维配置自动化ansible
1.自动化列举
1.1 操作系统预备自动化
例如PXE
1.2.配置自动化
ansible
1.3.监控自动化
- 系统与应用监控 zabbix
- 日志监控 ELK
1.4.代码持续集成与代码持续发布自动化
git、Jenkins、docker等
2.配置自动化应用场景
2.1大量服务器快速配置应用部署,通过配置自动化实现。
- 提供配置效率
- 提高配置的准确性
- 降低人工参与度
2.2配置自动化的相关产品
序号 | 工具 | 描述 |
---|---|---|
1 | ansible | 开箱即用,使用ssh协议 |
2 | saltstack | 需要agent端配合,配置部署速度快 |
3 | puppet | 咯安排配置自动化,需要agent端配合 |
3.ansible工作原理
3.1原理
无主无从架构,开箱即用,用完即走。
modules:工具模块
host inventory:主机清单
play books:剧本,批量操作多台机器
3.2总结:
- 主机
- ansible
- 模块
- 主机清单
- ssh
- playbooks
4.ansible安装和主机配置
4.1安装ansible
寻找一台主机作为ansible controller,其它节点通过试试协议进行连接操作。
sudo apt install ansible -y
4.2主机清单
4.2.1主机清单的作用
ansible controller在对主机进行操作时,仅认主机清单中定义的主机列表,即从主机清单中读取到主机列表时,才可以进进行配置。
- 用于ansible controller配置主机时读取主机列表
- 实现主机分组
4.2.2 主机清单定义方法
主机清单存储位置:
/etc/ansible/hosts
在最后追加主机
[testservers]
192.168.108.135
192.168.108.136
4.2.3 总结:
作用:
- 读取主机ip或主机名称
- 实现主机分组操作
配置:
- 直接在主机清单文件中添加ip或主机名
- 在主机清单中添加一个分组,然后再添加ip或主机名但分组中
5.ansible应用案例
5.1开通远程免密登录
(PS:这里使用root用户,也可以使用普通用户,不通用户名称,需要在ssh-copy-id后面配置)
在ansible controller机器中(控制机),生成root的密钥对,并设置私钥密码为空
# 切换到root
sudo su
# 生成ansible controller机器的密钥对,并设置私钥密码为空
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''
# 同步密钥到对应主机
# 此时对应主机还没有密钥对(即/root/.ssh目录都没有)
# 一次认证,后面都是免密登录
ssh-copy-id sw1@192.168.108.135
ssh-copy-id sw2@192.168.108.136
免密登录设置完毕。
5.1.1免密登录注意事项
设置什么用户免密登录,只能该用户进行免密登录。
例如,ansible controller机器在用户sw用户下,设置sw1和sw2机器的免密登录,那么ansible controller机器只能sw用户免密登录到sw1和sw2,不能用root免密登录到sw1和sw2。
5.2设置主机清单
5.2.1编辑/etc/ansible/hosts
vim /etc/ansible/hosts
[testservers]
sw1@192.168.108.135
sw2@192.168.108.136
5.3 执行时钟同步
# ansible ip -m modeule<m> -a args
# 例如
ansible sw1@192.168.108.135 -m cron -a 'name="test cron" job="ntpdate time1.aliyun.com" minute=0 hour=*/1'
5.4 copy本地(ansible controller)文件到远程主机
ansible testservers -m copy -a 'src=/home/sw/copy_dir_test dest=/root/'
5.5 ping远程主机
ansible testservers -m ping