xywuyiba8 发表于 2018-7-30 09:48:31

puppet 、saltstack 、ansible个人使用的一点比较

  许多企业使用云服务,自动化运维的工具也越来越火,安装和使用了三种自动化运维工具
  puppet、saltstack、ansible个人的一点心得看法;
  puppet c/s构架 服务端puppet master 客户端puppet agent进程 启动程序使用ruby进程
  有监听端口master 8140agent 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模块包含三个子目录filesmanifeststemplates其实就是对应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应该算是最优的自动化工具
页: [1]
查看完整版本: puppet 、saltstack 、ansible个人使用的一点比较