saltstack部署
环境准备
[root@server elasticsearch]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@server elasticsearch]# uname -r
2.6.32-504.el6.x86_64
配置表:
环境配置:
master:
[root@master ~]# tail -2 /etc/hosts 192.168.30.151 master.nulige.com 192.168.30.152 node0l.nulige.com
node01:
[root@node01 ~]# tail -2 /etc/hosts 192.168.30.151 master.nulige.com 192.168.30.152 node0l.nulige.com
安装软件:
1、添加repo源
阿里源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
官网源:
#CentOS6.x yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm #CentOS7.x yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
2、安装master
[root@linux-node1 ~]# yum install salt-master -y<br><br>设置开启自启动 [root@linux-node1 ~]# chkconfig salt-master on<br> 启动salt master [root@linux-node1 ~]# /etc/init.d/salt-master start startStarting salt-master daemon: [ OK ]<br><br>[root@master ~]# vi /etc/salt/master <br>interface: 192.168.14.67
3、安装minion
[root@linux-node2 ~]# yum install -y salt-minion 修改配置文件,告诉他master ip地址 [root@linux-node2 ~]# vim /etc/salt/minion master: 192.168.14.67 配置开机自启动,然后启动minion服务 [root@linux-node2 ~]# chkconfig salt-minion on [root@linux-node2 ~]# /etc/init.d/salt-minion start 至此,服务安装完毕!
高级玩法:
更改master和node01主机下面的vi /etc/hosts文件,指向master主机的ip地址,其它配置文件都不用修改。就可以直接node01连到master。
192.168.30.151 salt
a、更改日志级别:
[root@master salt]# vi /etc/salt/master #log_level: warning log_level: debug #把上面的warning 改成debug ,这样就可以输出更详细日志
更改配置文件,需要重启服务。
#在master上面重启服务 /etc/init.d/salt-master restart
b、查看日志
[root@master salt]# cat /var/log/salt/master 2017-04-14 00:06:03,008 [salt.client ][ERROR ][1345] Unable to connect to the salt master publisher at /var/run/salt/master 2017-04-14 00:33:07,670 [salt.log.setup ][ERROR ][2361] An un-handled exception was caught by salt's global exception handler: UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 163: ordinal not in range(128) Traceback (most recent call last): File "/usr/bin/salt", line 10, in <module> salt_main() File "/usr/lib/python2.6/site-packages/salt/scripts.py", line 349, in salt_main client.run()
4、在master机器上面操作#接受所有客户端授权[root@master ~]# salt-key -A
The following keys are going to be accepted: Unaccepted Keys: node0l.nulige.com Proceed? [n/Y] y Key for minion node0l.nulige.com accepted. <br>#授权某台机授权<br>[root@master salt]# salt-key -A node0l.nulige.com -y<br> #查看主机 [root@master ~]# salt-key -L Accepted Keys: node0l.nulige.com Denied Keys: Unaccepted Keys: Rejected Keys: #在master上面执行命令 [root@master ~]# salt 'node0l.nulige.com' cmd.run 'ifconfig' node0l.nulige.com: eth0 Link encap:Ethernet HWaddr 00:0C:29:9C:BC:75 inet addr:192.168.14.66 Bcast:192.168.14.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe9c:bc75/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:26978 errors:0 dropped:0 overruns:0 frame:0 TX packets:6178 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:32649669 (31.1 MiB) TX bytes:659601 (644.1 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
常用命令
#检查端口
<em id="__mceDel">[root@master ~]# netstat -lnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.30.151:4505 0.0.0.0:* LISTEN tcp 0 0 192.168.30.151:4506 0.0.0.0:* LISTEN tcp 0 0 :::22 </em>
#测试ping
[root@master ~]# salt '*' test.ping node0l.nulige.com: True
#salt-key --help
[root@localhost ~]# salt-key --help Usage: salt-key [options] Salt key 用于管理认证key Options: --version 显示版本号后退出 --versions-report 显示程序的所有依赖包版本号,并退出 -h, --help 帮助信息 -c CONFIG_DIR, --config-dir=CONFIG_DIR 指定配置目录,默认 :/etc/salt/ -q, --quiet 安静模式,不输出信息到控制台 -y, --yes 对所有询问是否继续,回答yes,默认:false Logging Options: 设置loggin选项会覆盖掉配置文件中对日志的配置. --log-file=LOG_FILE 指定日志文件路径,默认: /var/log/salt/key. --log-file-level=LOG_LEVEL_LOGFILE 日志文件等级,可设置下面中的一个值 'all', 'garbage', 'trace', 'debug', 'info', 'warning', 'error', 'quiet'. 默认: 'warning'. --key-logfile=KEY_LOGFILE 将所有的输出发送到指定的文件,默认: '/var/log/salt/key' Output Options: 配置输出格式 --out=OUTPUT, --output=OUTPUT 把salt-key命令的输出信息发送给指定的outputer. 可设置为下面参数值 'no_return', 'virt_query'. 'grains', 'yaml', 'overstatestage', 'json', 'pprint', 'nested', 'raw', 'highstate', 'quiet', 'key', 'txt', --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT 设置输出行缩进的空格数. 负数取消输出缩进编排.仅对使用的outputer有效. --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE 把显示输出到指定的文件 --no-color, --no-colour 关闭字体颜色 --force-color, --force-colour 强制开启输出颜色渲染 Actions: -l ARG, --list=ARG 打印公钥key. 可设置下面三个值 "pre", "un", and "unaccepted" 会显示 不许可/未签名 keys. "acc" or "accepted"会显示 许可/已签名 keys. "rej" or "rejected"会显示拒绝的 keys. "all" 会显示所有 keys. -L, --list-all 会显示所有公钥,相当月: "--list all" -a ACCEPT, --accept=ACCEPT 许可指定的公钥(使用--include-all选项 可以指定除了挂起的key外的所有reject状态的公钥) -A, --accept-all 许可所有pending的公钥 -r REJECT, --reject=REJECT 拒绝指定的公钥 (使用--include-all选项 可以指定除了挂起的key外的所有accept状态的公钥) -R, --reject-all 拒接所有pending的公钥 --include-all 配合 accepting/rejecting 选项使用,指定所有非pending状态的公钥 -p PRINT, --print=PRINT 打印指定的公钥 -P, --print-all Print all public keys -d DELETE, --delete=DELETE 根据公钥的名称删除公钥 -D, --delete-all 删除所有 keys -f FINGER, --finger=FINGER 打印指定key的指纹信息 -F, --finger-all 打印所有key的指纹信息 Key 常用选项: --gen-keys=GEN_KEYS 对生成的key配置设置一个salt使用的名称。 --gen-keys-dir=GEN_KEYS_DIR 设置生成key对的放置目录,默认当前目录。default=. --keysize=KEYSIZE 为生成key设置位数, 仅跟--gen-keys选项配合时有效, 数值大小必须大于2048,否则会被提升至2048位,默认2048 default=2048
4、生产业务场景
一、已经加入master的主机,需要修改node客户端的主机名称,再加入master,就加入不了。
在node02.nulige.com客户端上面操作:
1、hostname node02.nulige.com 2、vi /etc/sysconfig/network HOSTNAME=node02.nulige.com 3、重启服务 [root@node01 ~]# /etc/init.d/salt-minion restart 4、还是加不进去,因为他还有生成了一个缓存文件 [root@node01 ~]# cd /etc/salt/ [root@node01 salt]# ll 总用量 40 -rw-r----- 1 root root 26374 4月 14 00:06 minion drwxr-xr-x 2 root root 4096 4月 13 14:03 minion.d -rw-r--r-- 1 root root 17 4月 13 13:59 minion_id drwxr-xr-x 3 root root 4096 4月 13 13:59 pki [root@node01 salt]# cat minion_id node0l.nulige.com 原因: 这里有两种情况,一种是生成一个缓存文件,别一种是生成了一个pki的key文件 a、清空缓存文件 [root@node01 salt]# >minion_id b、查看pki文件下面key文件 [root@node01 salt]# tree pki/ pki/ └── minion ├── minion_master.pub ├── minion.pem └── minion.pub 1 directory, 3 files #删除minion_id和pki文件下面的key [root@node01 salt]# rm -rf minion_id pki/ c、再重启服务 [root@node01 salt]# /etc/init.d/salt-minion restart [root@node01 salt]# ps -ef|grep salt [root@node01 salt]# /etc/init.d/salt-minion start
在master服务端操作:
#删除之前加入的客户端名称 [root@master salt]# salt-key -d node0l.nulige.com -y
测试:
[root@master salt]# salt 'node0l.nulige.com' test.ping #有时候会出现没有返回结果的情况,因为网络沿时的问题导致的 node0l.nulige.com: True
查看master端key保存目录
[root@master master]# ll /etc/salt/pki/master 总用量 28 -r-------- 1 root root 1679 4月 13 13:59 master.pem -rw-r--r-- 1 root root 451 4月 13 13:59 master.pub drwxr-xr-x 2 root root 4096 4月 13 14:03 minions drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_autosign drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_denied drwxr-xr-x 2 root root 4096 4月 13 14:03 minions_pre drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_rejected [root@master ~]# cd /etc/salt/pki/master/minions [root@master minions]# ll 总用量 4 -rw-r--r-- 1 root root 451 4月 13 13:59 node0l.nulige.com [root@master minions]# cat node0l.nulige.com -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcjP/RWw/SDW6JVd2iUC oMLfKQNnK0Aw7b8DXN/C80n8cjz+49qFlQfVmnxYCQn5elys26rMPxZ2e0eobo2x IOstAOw+XRhCoWesqV1mpZfOGgY0VcrdCAbffb9HM6na+0uHB21NtM1mC69BodMj 3959I63KltPcgZ2M1WSqJ+4/RscKHTa5DolRySnMlzH6Gr4yrb1RYrK0qTq9qcoC 6pMYUTh/PPm1aQ66pXSwYYk5FwqFOicvdzesvIGKenKNwtp3bBaVL/iSzhkXCuF4 iuQ9TtBe3g5HwSbihuuv5CGCAR3kgxiFc2twMKTx3o708wB+11j/Gkn9h/yMguDH SQIDAQAB -----END PUBLIC KEY-----