许多企业使用云服务,自动化运维的工具也越来越火,安装和使用了三种自动化运维工具

puppet、saltstack、ansible个人的一点心得看法;


puppet c/s构架 服务端puppet master 客户端puppet agent进程 启动程序使用ruby进程 

有监听端口master 8140  agent 8139 

原理 agent客户端puppet.conf配置master服务端的IP地址、runinterval = 10(客户端每10秒向master发送请求接收执行)、listen = true,当master 和agent服务都启动后

agent客户端自动发送一个认证到master服务器 puppet cert list 可以看到agent发来的认证请求,需要master端sign(签名)后,master端才能开始对agent进行操作:文件发送、目录发送、服务开启/关闭、制定任务计划、执行shell脚本

puppet cert list -all  --//查看已签名agent

master服务器的puppet目录下有三个目录environments manifests modules一开始都是空的

manifests下创建一个site.pp(系统默认) 里面配置全局变量

modules  下创建web 模块, web模块包含三个子目录files  manifests  templates其实就是对应puppet下的三个目录

files--放分发的文件、 目录

manifests--创建一个init.pp输入远程执行的操作命令 将命令关联到site.pp上就可以了

客户端agent会自动监控master的改动每10s做出一次调整


saltstatck c/s构架 采用pathon进程 服务端是salt-master客户端salt-minion

只有master端开启监控端口,而且是两个4505/4506

认证机制和puppet差不多 salt-key查看认证key Accepted Keys:下的key对应的agent都可以正常通信

puppet能实现的功能saltstack都能实现 

优于puppet的方面

1,可以直接对agent发送指令

salt '*' cmd.run 'w' 查看所有agent的负载情况
salt '*' test.ping

2,grains 用于对服务器进行分组
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip等。 使用命令
salt 'test.com.cn' grains.ls 列出所有的grains项目名字
salt 'test.com.cn' grains.items 列出所有grains项目以及值
grains的信息并不是动态的,并不会时时变更,它只是在minion启动时收集到的。
grains可以做配置管理 

举例单独对10台web服务器进行统一管理 在 在每个web服务器下

vim /etc/salt/grains

添加role:web

重启salt-minion服务

在master服务器执行 salt -G reole:web cmd.run 'w'    ---//实现对着10台web的单独管理


ansible 相比与前两个更加轻便

首先他不是c/s构架不需要客户端 只要安装服务端就可以

而且在/etc/ansible/hosts里直接可以对客户端进行分组

也支持直接执行命令

ansible testhosts -m command -a 'w'    --//testhosts是我创建的分组 


对比上面三种ansible应该算是最优的自动化工具