SaltStack连接Linux&Windows机器

来源:互联网 发布:优化企业家发展环境 编辑:程序博客网 时间:2024/06/05 04:01

搭建Saltstack环境,在过程中发现,跟ansible有很大的区别,功能分成了module和state,变得复杂了。首先需要在安装master、minion端,在通信方式上因为采用的Zeromq,需要获取机器的fqdn,这边虚拟机由于网卡问题容易踩坑,再之后还有hostname,端口访问等问题,总的来说,比ansible严格很多,毕竟ansible只要ssh OK就行了。下面记录遇到的errors和solutions。

Linux环境

1、因为不能连外网,用的rpm安装,pkg在salt官方repo里面都有。
官方repo链接【version: centos7.1/saltstack2017.7.0】:
https://repo.saltstack.com/yum/redhat/7.1/x86_64/latest/

注:以下vagrant1为salt-master端,vagrant4为salt-minion端,

[root@vagrant1 latest]# rpm -ivh salt-2017.7.0-1.el7.noarch.rpmwarning: salt-2017.7.0-1.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID de57bfbe: NOKEYPreparing...                          ################################# [100%]Updating / installing...   1:salt-2017.7.0-1.el7              ################################# [100%][root@vagrant1 latest]# rpm -ivh salt-master-2017.7.0-1.el7.noarch.rpmwarning: salt-master-2017.7.0-1.el7.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID de57bfbe: NOKEYPreparing...                          ################################# [100%]Updating / installing...   1:salt-master-2017.7.0-1.el7       ################################# [100%][root@vagrant1 latest]# salt --versionsalt 2017.7.0 (Nitrogen)

注:中间可能需要一些依赖包,在官方repo里基本都能找到,minion端安装类似,此处不赘述。

2、配置master和minion端的config文件

#salt-master end[root@vagrant1 ~]# grep -E -v '^$|#' /etc/salt/masterinterface: 10.11.12.13          #绑定master ipauto_accept: True               #设置自动签发证书log_file: /var/log/salt/masterkey_logfile: /var/log/salt/key
#salt-minion end[root@vagrant4 ~]# cat /etc/hostnamevagrant4[root@vagrant4 ~]# grep -E -v '^$|#' /etc/salt/minionmaster: 10.11.12.13             #设置master ipid: vagrant4                    #设置minion的fqdnlog_file: /var/log/salt/minionkey_logfile: /var/log/salt/key

排错:minion配置中的id要和机器的hostname一致,可以在/etc/hostname中修改本机的hostname,如果id写的不对,后面需要清空/etc/salt/minion_id的内容(不需要删除文件),重新启动minion。因为如果你已经启动过了,它会直接去读取 /etc/salt/minion_id 的缓存。

3、在master端获取minion端key

[root@vagrant1 ~]# salt-key -LAccepted Keys:Denied Keys:Unaccepted Keys:Rejected Keys:

这边在salt-master和minion都启动的时候,还是get不到key,开始排错。
使用debug模式启动minion:

[root@vagrant4 ~]#salt-minion -l debug#巴拉巴拉这边显示了一堆,下面挑出关键errorsSaltReqTimeoutError  while bringing up minion for multi-master.Error while bringing up minion for multi-master. Is master at 10.11.12.13 responding?

看报错,应该是没连上master机器,但是我的两机器是可以ping通的。

排错1:查看机器的ip和fqdn是否配置正确

[root@vagrant1 ~]# cat test.py#!/usr/bin/python envimport socketmyname = socket.getfqdn(socket.gethostname())myaddr = socket.gethostbyname(myname)print"myname= %s"% mynameprint"myaddr= %s"% myaddr[root@vagrant1 ~]#[root@vagrant1 ~]# python test.pymyname= vagrant1myaddr= 10.11.12.13

用python代码在master端运行,确认机器的fqdn是否与minion配置文件中设置的master一致;在minion端运行,确认name是否与minion配置文件中设置的id一致,如果是id不一致,记得清空/etc/salt/minion_id再重启。

排错2:用telnet命令在minion端检测master端的salt端口【4505&4506】并没有开启,需要设置防火墙开启master端口。

[root@vagrant1 ~]# netstat -anp | grep 4506tcp        0      0 10.167.223.21:4506      0.0.0.0:*               LISTEN      15388/python[root@vagrant1 ~]# netstat -anp | grep 4505tcp        0      0 10.167.223.21:4505      0.0.0.0:*               LISTEN      15382/python#查看防火墙开启的端口[root@vagrant1 ~]# firewall-cmd --list-ports80/tcp 10051/tcp#设置打开salt端口[root@vagrant1 ~]# firewall-cmd --zone=public --add-port=4505/tcp --permanentsuccess[root@vagrant1 ~]# firewall-cmd --zone=public --add-port=4506/tcp --permanentsuccess#重新加载防火墙[root@vagrant1 ~]# firewall-cmd --reloadsuccess[root@vagrant1 ~]# firewall-cmd --list-ports4505/tcp 80/tcp 4506/tcp 10051/tcp

重启salt-master,获取并自动签发minion-key成功:

[root@vagrant1 ~]# salt-key -LAccepted Keys:vagrant4Denied Keys:Unaccepted Keys:Rejected Keys:[root@vagrant1 ~]# salt vagrant4 test.pingvagrant4:    True

Windows环境

如果以上排错就完成的话,windows搭建非常简单,我的环境是windows7。
1、安装minion端
在官网repo中https://repo.saltstack.com/#windows,找到相应版本的安装包,然后就像普通软件一样安装一下,注意中间需要在界面设置master【设为master的ip】,minion id【设为windows的fqdn】。这边如果设置的不对也没关系,在minion配置文件中可以修改,因为不能上传截图,所以自己摸索摸索哈。。。
注:如果不确定windows主机名的话,也可以用上面Linux环境的测试脚本test.py在cmd里面python命令跑一下,就能看到域名了。

2、安装最后一步可以点击直接启动minion服务,然后在控制面板=》管理工具=》服务中就能查看到salt-minion。

3、在master端确认是否get到windows minion端的key,ping也能成功。

[root@vagrant1 ~]# salt-key -LAccepted Keys:windows.local       #windows机器域名vagrant4Denied Keys:Unaccepted Keys:Rejected Keys:[root@vagrant1 ~]# salt-key '*' test.pingAccepted Keys:windows.local       #windows机器域名vagrant4Denied Keys:Unaccepted Keys:Rejected Keys:[root@vagrant1 ~]#

以上,就是saltstack环境搭建,后期还要好好学习,放上我排错时用到的参考链接。
https://segmentfault.com/a/1190000000505397
https://github.com/saltstack/salt/issues/39490
http://www.cnblogs.com/binyue/p/4701262.html
http://blog.csdn.net/jack85986370/article/details/51169203

原创粉丝点击