bmwm3 发表于 2018-8-1 09:36:11

Saltstack中关于ID的那些故事

  今儿个来说说关于ID设置这些事儿,以及碰到问题解决过程。希望对大家有用....
  在前期主机名规划当中,我们会根据业务特定设计出一套主机名识别方法。。
  有一天,一台测试机器安装完毕,但在Saltstack认证key时,会发现master和minions对接时,发现minion传过来的ID是localhost.localdomain,就奇怪了,这是为什么呢。?

  默认主机操作系统安装完毕,/etc/sysconfig/network配置文件的hostname是localhost.localdomain,当你在salt master和minion认证时(未显示指定minion>  minion和master认证过程
  1.minion在启动时,会在/etc/salt/pki/minion下自动生成minion.pem和minion.pub,然后将minion.pub发送给master。

  2.master在收到minion的public key,我们在通过salt-key -a允许minion key,这样就会在master的/etc/salt/pki/master/minions下面存放以minion>
  上述认证过程不难发现,master是在收到minion传过来的public key,然后以minion>
  前期未在salt minion的配置文件中显示指定minion>
  在配置文件中有这么一段话, if left commented the>  那么我们可以写个小脚本来验证fqdn
cat a.py  
#!/usr/bin/python env
  
import socket
  
print socket.getfqdn(socket.gethostname())
  验证
  # python a.py
  localhost.localdomain
  在执行脚本验证时,发现FQDN不正确,这就需要重新配置Hostname#重现场景
  Hostname配置方法
  1. /etc/sysconfig/network
  NETWORK = XXXX
  配置完毕,重新network服务
  2./etc/hosts,做映射
  内网IPHOST
  hostname -f进行验证fqdn,在执行a.py脚本验证,在删除缓存minion_id(为什么请看下面)
  这里又碰到个小问题,在未重新配置hostname而直接连接salt master,传过去的key会是localhost.localdomain,这个时候你重新设置完hostname,从master上删除localhost.localdomain这个ID,再认证永远都是这个id,除非你强制指定id(minion端配置文件的ID项)。为什么呢.?我们来看下minion启动过程


  第二行,他使用了cache的minion>  文件内容为
  cat /etc/salt/minion_id
  localhost.localdomain

  上述解决办法,删除minion>  minion#rm -f /etc/salt/minion_id
  minion#/etc/salt/minion restart
  重新认证,即可解决问题~~
  好啦。关于id这个,碰到的问题都在这。。
  推荐:在连接master时配置好Hostname,并能解析FQDN,再进行salt master认证;希望对你有帮助
页: [1]
查看完整版本: Saltstack中关于ID的那些故事