转载

通过 SaltStack 管理服务器配置

通过 SaltStack 管理服务器配置

我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如:

要通过Salt来更新所有服务器,你只需运行以下命令即可

  1. salt '*' pkg . upgrade

安装SaltStack到Linux上

如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从这里添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。

Salt采用服务器-客户端模式,服务器端称为领主,而客户端则称为下属。

安装并配置Salt领主

  1. [ root@salt - master ~]# yum install salt - master

Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但我还是建议你将日志配置得更详细点,以方便日后排除故障。

  1. [ root@salt - master ~]# vim / etc / salt / master
  2. # 默认是warning,修改如下
  3. log_level : debug
  4. log_level_logfile : debug
  5.  
  6. [ root@salt - master ~]# systemctl start salt - master

安装并配置Salt下属

  1. [ root@salt - minion ~]# yum install salt - minion
  2.  
  3. # 添加你的Salt领主的主机名
  4. [ root@salt - minion ~]# vim / etc / salt / minion
  5. master : salt - master . com
  6. # 启动下属
  7. [ root@salt - minion ~] systemctl start salt - minion

在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。

在Salt领主服务器上列出并接受密钥

  1. # 列出所有密钥
  2. [ root@salt - master ~] salt - key - L
  3. Accepted Keys :
  4. Unaccepted Keys :
  5. minion . com
  6. Rejected Keys :
  7.  
  8. # 使用id 'minion.com'命令接受密钥
  9. [ root@salt - master ~] salt - key - a minion . com
  10.  
  11. [ root@salt - master ~] salt - key - L
  12. Accepted Keys :
  13. minion . com
  14. Unaccepted Keys :
  15. Rejected Keys :

在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。

Salt命令行实例

  1. # 检查下属是否启动并运行
  2. [ root@salt - master ~] salt 'minion.com' test . ping
  3. minion . com :
  4. True
  5. # 在下属客户机上运行shell命令
  6. [ root@salt - master ~]# salt 'minion.com' cmd . run 'ls -l'
  7. minion . com :
  8. total 2988
  9. - rw - r -- r --. 1 root root 1024 Jul 31 08 : 24 1g . img
  10. - rw -------. 1 root root 940 Jul 14 15 : 04 anaconda - ks . cfg
  11. - rw - r -- r --. 1 root root 1024 Aug 14 17 : 21 test
  12. # 安装/更新所有服务器上的软件
  13. [ root@salt - master ~]# salt '*' pkg . install git

salt命令需要一些组件来发送信息,其中之一是下属客户机的id,而另一个是下属客户机上要调用的函数。

在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。

‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。

颗粒实例

Salt使用一个名为 颗粒(Grains) 的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。

  1. [ root@vps4544 ~]# salt - G 'os:Centos' test . ping
  2. minion :
  3. True

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2015-02/113823p2.htm

正文到此结束
Loading...