古城堡 发表于 2018-7-31 06:55:53

saltstack安装、认证

  写在前面:
  更该主机名,方便识别。更为了其他的方便。本次采用两台服务器测试。master端也同样可以安装minion作为客户端被管理。如果后续有需求,可以多增加几台服务器,或者虚拟机做测试。千万别用线上服务器。万一出问题就麻烦了。业务就挂了
  Saltstack(中国用户组www.saltstack.cn)
  基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
  三种工作方式:本地, c/s, 基于ssh(不用安装agent)
  三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理
  支持系统:大多数都支持,windows上不支持安装master
  参考博客:http://daixuan.blog.51cto.com/5426657/1899160
  实验主机:
  centos6.7-4:192.168.1.110作为master端
  centos6.7-3:192.168.1.107作为minion端
  主机名最好更改一下:
  master端:
  vim /etc/sysconfig/network
  HOSTNAME=master
  vim /etc/hosts
  192.168.1.110 master
  minion端:
  vim /etc/sysconfig/network
  HOSTNAME=minion
  vim /etc/hosts
  192.168.1.107 minion
  1.2.2 yum方式安装(采用epel源)
  两台机器最好更改一下/etc/hosts地址 保证可以ping通
  master端安装:
  rpm-ivhhttps://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  yum -y install salt-master//安装salt-master
  service salt-master start//启动salt-master
  ss -antlup | egrep "4505|4506"//查看端口或者
  ps -ef | grep salt-master
  vim /etc/salt/master
  auto_accept: True//可选,key通过‘salt-key -a keyname’命令手动进行认证
  minon端安装:
  rpm-ivhhttps://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  yum -y install salt-minion//安装salt-minion
  更改minion配置文件:
  vim /etc/salt/minion
  或者sed命令更改:
  sed -i 's/#master: salt/master: 192.168.1.110/g' /etc/salt/minion//增加master主机的配置,把ip指向master的ip。如果配置成主机名的话,需要在/etc/hosts文件中master主机对应的IP ,如果使用内部DNS的例外,可以在内部DNS上的统一配置。
  注意:192.168.1.110就是master服务器端的ip地址,master: 的后面有一个空格,空格后面才是ip地址,如果没有空格会提示出错 后面配置minion的ip也是一样有一个空格
  没有空格出现错误,错误如下:
  Starting salt-minion daemon: Error parsing configuration file: /etc/salt/minion - while scanning a simple key
  in &quot;<string>&quot;, line 44, column 1:
  id:host172
  ^
  could not found expected ':'
  in &quot;<string>&quot;, line 46, column 1:
  # Append a domain to a hostname ...
  ^
  找到#id改成
  id: minion_192.168.1.102//id后面这个名字可以自己取,最好别太复杂。这个ip是minion端的ip地址,为了方便,我就用minion加上minion端的ip来命名了
  还可以改成minion然后用ip的最后一段,如 minion102这样
  或者用sed更改 如下:
  sed -i 's/#id:/id: minon_192.168.1.102/g' /etc/salt/minion
  service salt-minion start//启动salt-minion
  ss -antlu | egrep &quot;4505|4506&quot;//查看salt-minion端口
  ps -ef | grep salt-minion
  注意:ID如果不指定的话,salt通过socket.getfqdn()来获取主机的名称来作为标识,指定给ID,作为minion与master交互的身份标识
  更改完salt-minion配置文件以后,一定要重启salt-minion,否则 在master端进行salt-key -A进行认证key的时候不能认证通过,会发现没有认证的key
  netstat -antlp | grep 4505                         确保消息发布端口正常
  netstat -antlp | grep 4506                         确保客户端与服务端通信端口正常
  salt-master -l debug                           debug模式,查看salt都进行哪些操作
  2. key认证
  server上执行:
  salt-key -a minion               #这里minion就是minion配置文件设置的id,-a指定具体的某一台minion客户端服务器
  认证完后,此时我们在minion端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件
  可以使用 salt-key 命令查看到已经签名的客户端
  salt-key可以使用-A签名所有主机,也可以使用-d删除指定主机的key
  salt-key的使用实例:
  更多证书管理方法使用:salt-key --help查看下面会有列出
  # 显示所有minion的认证信息
  salt-key -L
  # 接受192.168.0.100的认证信息   -a指定具体key
  salt-key -a 192.168.0.100
  # 接受192.168.0.100的认证信息,不需要手动验证
  salt-key -a 192.168.0.100 -y
  # 接受192.168.0.100的认证信息,即使该minion是Rejected Keys状态
  salt-key -a 192.168.0.100 --include-all
  # 接受所有 Unaccepted Keys 状态的minion的认证信息
  salt-key -A或者 salt-key -A -y
  # 拒绝认证192.168.0.100
  salt-key -d 192.168.0.100
  # 拒绝所有 Unaccepted Keys 状态的minion
  salt-key -D   #这样就删除了所有认证,最好不要做。但是删除了所有的认证以后,如果在此执行salt-key -A -L    会看到没有任何一个认证的key。 需要重启所有服务器上的minion,否则就会一直没有key被认证。
  可以salt-key*一下    # *号 代表所有
  *************查看哪些服务器的minion挂了****************
  salt-run manage.status
  3.远程执行
  示例1: salt '*' test.ping    这里的*表示所以已经签名的客户端,也可以指定其中一个
  示例2:salt '*' cmd.run   'df -h'
  说明1: 这里的*必须是在master上已经被接受过的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端web10web11, 那我们可以写成salt 'web*'    salt 'web1'salt -L 'web10,web11'   salt -E 'web(10|11) 等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,后面会介绍到。
  其他安装方式:
  1.2.3 pip方式安装
  master端安装:
  pip install salt
  mkdir/etc/salt/;wget -O /etc/salt/masterhttps://github.com/saltstack/salt/blob/develop/conf/master
  salt-master-d
  minion端安装:
  pipinstallsalt
  mkdir/etc/salt/;wget-SO /etc/salt/minionhttps://github.com/saltstack/salt/blob/develop/conf/minion
  sed -i ‘s/#master: salt/master: IPADDRESS/g’/etc/salt/minion
  #IPADDRESS是master服务器的ip地址
  salt-minion-d
  1.2.4源码安装
  master端安装:
  gitclonehttps://github.com/saltstack/salt.git
  pipinstall-rsalt/requirements/zeromq.txt
  mkdir/etc/salt/; cp salt/conf/master/etc/salt
  salt-master-d
  minion端安装:
  gitclonehttps://github.com/saltstack/salt.git
  pipinstall-rsalt/requirements/zeromq.txt
  pythonsalt/setup.pyinstall
  mkdir/etc/salt/; cpsalt/minion/etc/salt/
  sed -i‘s/#master: salt/master: IPADDRESS/g’ /etc/salt/minion
  注意:IPADDRESS为master的ip地址
  由于saltstack软件依赖包比较多,我们不建议用源码编译安装每个依赖包的方式全装,所以这里采用pip安装方式去安装依赖包。如果想学编译安装,百度上有很多教程
  1.2.5 salt-bootstrap安装
  salt-bootstrap是saltstack的一个单独项目,该项目主要用于解决多平台意见不熟saltstack环境。核心工程就是维护一个庞大的bash脚本
  master端安装:
  curl -L https://bootstrap.saltstack.com-oinstall_salt.sh
  shinstall_salt.sh-M-N       #只安装最新版master
  minion端安装:
  echo “IPADDRESSsalt” >> /etc/hosts   #IPADDRESS为master服务器的地址
  curl-L https://bootstrap.saltstack.com-oinstall_salt.sh

  shinstall_salt.sh-i minion             #只安装最新版minion并且指定minion >  关于salt-bootstrap脚本参数可以运行shinstall_salt.sh-h 查看,改脚本也提供非常方便的一键部署参数
  ----------部署环境完成,本人用epel方式进行yum安装的--------
  1.3.1 证书管理
  # salt-key-L          //查看当前证书签证情况
http://blog.51cto.com/12262646/D:/Program%20Files%20%28x86%29/Youdao/YoudaoNotefile/qq64065361A6B9BDDE9B6CF838146BC083/2747b904bace402899b7f55cfadbb575/lip_image001.png
  Accepted Keys:已接收的密钥
  Denied Keys:      被决绝的密钥
  Unaccepted Keys:   未接受的密钥
  Rejected Keys:          被丢弃的密钥
  # salt-key -A –y            //同意签证所有没接收的签证请求
http://blog.51cto.com/12262646/D:/Program%20Files%20%28x86%29/Youdao/YoudaoNotefile/qq64065361A6B9BDDE9B6CF838146BC083/2d6ae6cadc604ed193ebceea5bc06b60/lip_image002.png
  提示告诉我们:没有未签证的主机(因为我们只有一台master一台minion,minion接受签证了)
  运行第一条saltstack命令,检测master和minion之间通信是否正常
  salt '*' test.ping
  更多证书管理命令可以通过salt-key-h查看
  -l    显示指定状态的key(支持正则表达式)
  -L   显示所有publickeys
  -a   接受制定等待恩正的key(支持正则表达式)
  -A接受所有等待认证的key
  -r    拒绝等待认证的key(支持正则表达式)
  -R   拒绝所有等到认证的key,
  --include-all      显示所有状态的key(包含non-pending状态)
  -p(小写的)    打印指定的publickey(支持正则表达式)
  -P(大写的)    打印所有的publickey
  -d   删除指定的key
  -D删除所有key
  -f    显示指定的key指纹信息(支持正则表达式)
  -F   现实所有key指纹信息
  第一条测试命令:
  salt 'minion_192.168.1.107' test.ping
http://blog.51cto.com/12262646/D:/Program%20Files%20%28x86%29/Youdao/YoudaoNotefile/qq64065361A6B9BDDE9B6CF838146BC083/2a1ed2a6d24c401bb64b8312162ee904/lip_image003.png
  1.3.2 日常命令参数
  查看安装的时候分别安装了那些命令(yum安装方式)
  # rpm -ql salt-master
  /etc/rc.d/init.d/salt-master          //salt-master服务启动脚本
  /etc/salt/master                         //salt master配置文件
  /usr/bin/salt                              //salt master核心操作命令
  /usr/bin/salt-cp                        //salt文件传输命令
  /usr/bin/salt-key                     //salt证书管理命令
  /usr/bin/salt-master               //salt master服务命令
  /usr/bin/salt-run                  //salt master runner命令
  /usr/bin/salt-unity
  ………
页: [1]
查看完整版本: saltstack安装、认证