早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用。

Saltstack知多少
Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中化管理平台,几分钟内便可运行起来,速度够快,服务器之间秒级通讯,扩展性好,很容易批量管理上万台服务器,显著降低人力与运维成本;它具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func;通过部署SaltStack环境,可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)(SaltStack的通信模式总共分为2种模式:ZeroMQ、REAT,鉴于REAT目前还不是太稳定,通常会选择ZeroMQ模式)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。

Saltstack运行模式
Local:本地,一台机器玩,不建议
Master/Minion:通过server/agent的方式进行管理,效率很高(批量管理1000台机器,25秒搞定)
Salt SSH:通过SSH方式进行管理,效率相对来说比较低(批量管理1000台机器,83秒搞定)

Saltstack三大功能
远程执行(执行远程命令)
配置管理(状态管理)
云管理

Saltstack特征
1)部署简单、方便;
2)支持大部分UNIX/Linux及Windows环境;
3)主从集中化管理;
4)配置简单、功能强大、扩展性强;
5)主控端(master)和被控端(minion)基于证书认证,安全可靠;
6)支持API及自定义模块,可通过Python轻松扩展。

Master与Minion认证
1)minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
2)master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

Master与Minion的连接
1)SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

2)minion与master之间的通信模式如下

SaltStack基础环境安装与配置记录
英文文档参考:https://docs.saltstack.com/en/latest/
两台centos6.8系统的机器,其中:
192.168.1.101  linux-node1  做主控端 master
192.168.1.102  linux-node2  做被控端 minion

1)两台机器的主机名要固定统一,要能相互ping通

1
2
3
4
5
6
固定好master和minion机器名,然后在master机器上做hosts绑定:
[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1   localhost wutao localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.101  linux-node1
192.168.1.102  linux-node2

2)下面采用源码安装的方式

a) master端安装 (为了测试效果,服务端也安装minion)
[root@linux-node1 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm 
[root@linux-node1 ~]# yum clean expire-cache

[root@linux-node1 ~]# sudo yum update -y

[root@linux-node1 ~]# yum -y install salt-master
[root@linux-node1 ~]# yum -y install salt-minion
[root@linux-node1 ~]# systemctl start salt-master
 #启动salt-master

[root@linux-node1 ~]# systemctl enable salt-master

b) minion端安装
[root@linux-node2 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm 
[root@linux-node2 ~]# yum clean expire-cache

[root@linux-node2 ~]# sudo yum update -y

[root@linux-node2 ~]# yum -y install salt-minion

3)SaltStack配置
a)master端的配置
[root@linux-node1 ~]# vim /etc/salt/master        //修改下面几行 (由于这个文件内容默认全部注释的,所以可以直接情清空该文件,然后复制下面内容。但是记住配置的格式不能错!!)                         
interface: 192.168.1.101    //绑定主控端master的ip,冒号后必须空一格
auto_accept: True             //当该项配置成True时表示自动认证,就不需要手动运行salt-key命令进行证书信任
file_roots:                          //指定saltstack文件根目录位置
  base:                              //前面必须留两个空格  
      - /srv/salt                    //前面必须留四个空格
[root@linux-node1 ~]# systemctl restart salt-master
Starting salt-master daemon: [ OK ]
[root@linux-node1 salt-2014.7.0]# netstat -ntlp
.......
tcp 0 0 192.168.1.101:4505 0.0.0.0:* LISTEN 12715/python
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1356/master
tcp 0 0 192.168.1.101:4506 0.0.0.0:* LISTEN 12727/python
......
[root@linux-node1 ~]# ps aux | grep python
root 8428 0.0 0.2 111704 8956 ? Ss Jan05 26:14 /data/paas/env/bin/python /data/paas/env/bin/supervisord -c /data/paas/open_paas/bin/supervisord.conf
root 12713 0.0 0.5 281772 22060 ? S 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 12714 0.7 0.9 319760 35700 ? S 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 12715 0.0 0.5 367796 22136 ? Sl 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 12716 0.0 0.5 367796 21912 ? Sl 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 12717 0.0 0.5 281772 21728 ? S 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 12722 2.4 1.0 413304 40952 ? Sl 17:39 0:01 /usr/local/bin/python /usr/bin/salt-master -d
root 12723 2.4 1.0 413308 40956 ? Sl 17:39 0:01 /usr/local/bin/python /usr/bin/salt-master -d
root 12724 2.4 1.0 413300 40968 ? Sl 17:39 0:01 /usr/local/bin/python /usr/bin/salt-master -d
root 12725 2.4 1.0 413324 40972 ? Sl 17:39 0:01 /usr/local/bin/python /usr/bin/salt-master -d
root 12726 2.3 1.0 413304 40972 ? Sl 17:39 0:01 /usr/local/bin/python /usr/bin/salt-master -d
root 12727 0.0 0.5 670916 22380 ? Sl 17:39 0:00 /usr/local/bin/python /usr/bin/salt-master -d
root 13124 0.0 0.0 103312 880 pts/3 R+ 17:40 0:00 grep python

在主控端master上添加TCP 4505、TCP 4506的规则,而在被控端monion上就无需配置防火墙
原因是被控端直接与主控端的zeromq建立长连接,接收广播到的任务信息并执行。
即master端的iptables里添加下面两台规则:
[root@linux-node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 4505 -j ACCEPT
[root@linux-node1 ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 4506 -j ACCEPT
[root@linux-node1 ~]# iptables save
[root@linux-node1 ~]# /etc/init.d/iptables save
[root@linux-node1 ~]# /etc/init.d/iptables restart

b)minion端的配置(如果master端也想管控自己,可以配置自己的monion)
[root@linux-node2 ~]# vim /etc/salt/minion         //修改下面几行                      
master: 192.168.1.101          //指定主控端master的ip地址,冒号后必须空一格(可以是主机名)
id: minion-192-168-1-102     //唯一标识符,可以不配,不配默认就是主机名,修改被控端monion主机识别id,建议使用主机名或ip来设置,冒号后必须空一格
[root@linux-node2 ~]# systemctl start salt-minion
Starting salt-minion daemon: [ OK ]
[root@linux-node2 ~]# ps aux | grep python
root 16610 13.0 0.5 431116 23432 ? Sl 05:15 0:01 /usr/local/bin/python /usr/bin/salt-minion -d
root 16633 0.0 0.0 103312 884 pts/0 S+ 05:16 0:00 grep python

  1. minion配置中有一个id配置,默认是hostname,如果id配置和hostname不一致会导致无法进行通信,那么当hostname做了修改,或者错误的时候该怎么配置呢?
  2. ①关闭salt-minion
  3. salt-key -d id master上删除minionid
  4. minion上删除pki目录
  5. minion上删除minion_id文件
  6. ⑤修改完成,启动minion
  7. #此处必须先停掉minion修改,并删除相应的文件,否则会默认地去查找原先的配置,已踩坑
  8.  
  9. #以下是刚装完查看minion_id变成了www.test123.com。进行修改成linux-node2.example.com
  10. [root@linux-node2 salt]# cat minion_id
  11. www.test123.com
  12. [root@linux-node2 salt]# systemctl stop salt-minion
  13. [root@linux-node2 salt]# rm -rf pki
  14. [root@linux-node2 salt]# rm -rf minion_id
  15. [root@linux-node2 salt]# systemctl start salt-minion
  16. [root@linux-node2 salt]# cat minion_id
  17. linux-node2.example.com

4)SaltStack使用说明(在master机器上操作)

sat-key命令说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@linux-node1 ~]# salt-key --help
--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'
 
--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    强制开启输出颜色渲染
 
-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位,默认2048default=2048

a)查看当前的salt key信息
[root@linux-node1 ~]# salt-key -L      //或者直接salt-key
Accepted Keys:
minion-192-168-1-102
Unaccepted Keys:
Rejected Keys:

b)测试被控主机的连通性
[root@linux-node1 ~]# salt '*' test.ping
minion-192-168-1-102:
True

c)远程命令执行(cmd模块),格式:salt  'client配置的id' 模块.方法  '命令参数'           (其中'*'表示所有的client)
[root@linux-node1 ~]# salt '*' cmd.run 'uptime'
minion-192-168-1-102:
21:51:44 up 61 days, 16:44, 2 users, load average: 0.79, 0.55, 0.47

[root@linux-node1 ~]# salt 'minion-192-168-1-102' cmd.run 'uptime'
minion-192-168-1-102:
22:11:50 up 61 days, 17:05, 2 users, load average: 0.44, 0.59, 0.63

[root@linux-node1 ~]# salt 'minion-192-168-1-102' cmd.run 'w'
minion-192-168-1-102:
22:14:20 up 61 days, 17:07, 2 users, load average: 0.46, 0.52, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 124.165.97.64 04:50 57:20 0.32s 0.32s -bash
root pts/3 124.165.97.64 Mon20 8:46 0.20s 0.20s -bash
[root@linux-node1 ~]# salt 'minion-192-168-1-102' cmd.run 'who'
minion-192-168-1-102:
root pts/0 Feb 7 04:50 (124.165.97.64 )
root pts/3 Feb 6 20:41 (124.165.97.64 )

[root@linux-node1 ~]# salt '*' cmd.run 'df -h'
minion-192-168-1-102:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
8.1G 6.8G 901M 89% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/vda1 190M 67M 113M 38% /boot
[root@linux-node1 ~]# salt '*' cmd.run 'touch /root/test'
minion-192-168-1-102:
[root@linux-node1 ~]# salt '*' cmd.run 'echo "monion-server" >> /root/test'
minion-192-168-1-102:
到monion机器上查看是否有/root/test文件创建及其内容
[root@linux-node2 ~]# ll /root/test
-rw-r--r--. 1 root root 0 Feb 7 21:51 /root/test
[root@linux-node2 ~]# cat /root/test
monion-server

远程批量传输文件(salt-cp命令)
下面表示将master主控端的/mnt/aa文件传输到所有minion被控端的/opt下
[root@linux-node1 ~]# salt-cp '*' /mnt/aa /opt/
{'minion-192-168-1-102': {'/opt/aa': True}}

注意上面命令只用于文件的传输,目录的传输需要用到cp模块,模块用法详见Saltstack自动化操作记录(2)-模块使用

---------------------------------------------------------顺便说一下-------------------------------------------------------
minion端的认证

1
2
3
4
5
6
/etc/salt/master文件里没有配置auto_accept:True时,需要通过salt-key命令来进行证书认证操作,其中:
salt-key -L:显示已经或未认证的被控端id,Acceptd Keys为已认证清单,Unaccepted Keys为未认证清单
salt-key -D:删除所有认证主机id证书
salt-key -d id:删除单个id证书
salt-key -A:接受所有id证书请求
salt-key -a id:接受单个id证书请求

minion启动的时候会创建KEY
[root@linux-node2 ~]# ll /etc/salt/pki/minion/
total 12
-rw-r--r--. 1 root root 800 Feb 7 05:16 minion_master.pub
-r--------. 1 root root 3247 Feb 7 05:16 minion.pem
-rw-r--r--. 1 root root 800 Feb 7 05:16 minion.pub

master启动的时候会创建KEY
[root@linux-node1 ~]# ll /etc/salt/pki/master/
total 28
-r--------. 1 root root 3243 Feb 7 17:39 master.pem
-rw-r--r--. 1 root root 800 Feb 7 17:39 master.pub
drwxr-xr-x. 2 root root 4096 Feb 8 12:02 minions
drwxr-xr-x. 2 root root 4096 Feb 7 17:39 minions_autosign
drwxr-xr-x. 2 root root 4096 Feb 7 17:39 minions_denied
drwxr-xr-x. 2 root root 4096 Feb 7 17:39 minions_pre
drwxr-xr-x. 2 root root 4096 Feb 7 17:39 minions_rejected

先检查一下所有的key信息,发现没有等待统一的key(Unaccepted Keys下面没有信息)
[root@linux-node1 master]# salt-key
Accepted Keys:
minion-192-168-1-102
Unaccepted Keys:
Rejected Keys:

模拟等待同意的Key:把minions目录下的文件传输到minions_pre目录下
[root@linux-node1 ~]# ll /etc/salt/pki/master/minions
total 4
-rw-r--r--. 1 root root 800 Feb 8 12:02 minion-192-168-1-102
[root@linux-node1 ~]# cp /etc/salt/pki/master/minions/* /etc/salt/pki/master/minions_pre/
[root@linux-node1 ~]# ll /etc/salt/pki/master/minions_pre/
total 4
-rw-r--r--. 1 root root 800 Feb 8 12:07 minion-192-168-1-102

再次查看key,发现有了等待同意的key
[root@linux-node1 ~]# salt-key
Accepted Keys:
minion-192-168-1-102
Unaccepted Keys:
minion-192-168-1-102
Rejected Keys:

执行同意操作:-A选项表示全部同意
[root@linux-node1 ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
minion-192-168-1-102
Proceed? [n/Y] y
[root@linux-node1 ~]# salt-key //发现key已经被同意了
Accepted Keys:
minion-192-168-1-102
Unaccepted Keys:

如果不用上面的-A选项,可以使用-a选项,自定义匹配,也可以使用*通配符。上面命令也可以是:
[root@linux-node1 ~]# salt-key -a minion-*
The following keys are going to be accepted:
Unaccepted Keys:
minion-192-168-1-102
Proceed? [n/Y] y

通过认证的主机位置会发生改变,原本在minion_pre下面(yum install -y tree )
[root@linux-node1 ~]# tree /etc/salt/pki/master/
/etc/salt/pki/master/
├── master.pem
├── master.pub
├── minions
│   └── minion-192-168-1-102
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected

5 directories, 3 files

其实上面的master下面minion中的文件是minion端的公钥,同时在master认证通过的时候,master也偷偷的把他的公钥放到了minion端一份。用事实说话,在minion端上查看。
[root@linux-node2 ~]# ll /etc/salt/pki/minion/
总用量 12
-rw-r--r-- 1 root root 451 12月 28 23:11 minion_master.pub
-r-------- 1 root root 1675 12月 28 23:03 minion.pem
-rw-r--r-- 1 root root 451 12月 28 23:03 minion.pub
----------------------------------------------------------------------------------------------------------------------------------------

一、SaltStack概述

Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。

salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.

多种配置管理工具对比: 
Puppet(rubby开发,现在很少使用) 
ansible(python开发,轻量级,没有agent,大规模环境下使用ssh会很慢,串行传输) 
Saltstack(python开发,远程执行、配置管理、事件驱动基础设施、使用saltcloud可以管理私有云和公有云)

官方文档:https://docs.saltstack.com/en/getstarted/
官方提供官方yum源:repo.slatstack.com–>可以使用cobbler自定义yum仓库进行同步 
官方安装源:http://repo.saltstack.com/2016.11.html#rhel
Saltstack组件: 
SaltMaster 
SaltMinion 
Execution Modules

环境说明:

  1. 主机名               IP地址     说明       系统
  2. linux-node1.example.com 192.168.56.11 模式:master Centos 7.4 x86_64
  3. linux-node2.example.com 192.168.56.12 模式:minion Centos 7.4 x86_64

二、SaltStack安装

1.安装指定的yum源

  1. [root@linux-node1 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm
  2. [root@linux-node2 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm

2.安装salt-master和salt-minion

  1. [root@linux-node1 ~]# yum install -y salt-master
  2. [root@linux-node1 ~]# yum install -y salt-minion
  3. [root@linux-node2 ~]# yum install -y salt-minion

3.修改minion配置并启动

  1. [root@linux-node1 ~]# systemctl start salt-master #启动salt-master
  2. [root@linux-node1 ~]# vim /etc/salt/minion #配置salt-minion
  3. master: 192.168.56.11 #可以是主机名需要解析(指定服务端的IP地址),冒号有空格
  4. id 唯一标识符,可以不配,不配默认就是主机名
  5. [root@linux-node1 ~]# systemctl start salt-minion #启动salt-minion
  6. [root@linux-node2 salt]# vim minion
  7. master: 192.168.56.11 #可以是主机名需要解析(指定服务端的IP地址),冒号有空格
  8. id 唯一标识符,可以不配,不配默认就是主机名
  9. [root@linux-node2 salt]# systemctl start salt-minion
  10.  
  11. minion配置中有一个id配置,默认是hostname,如果id配置和hostname不一致会导致无法进行通信,那么当hostname做了修改,或者错误的时候该怎么配置呢?
  12. ①关闭salt-minion
  13. salt-key -d id master上删除minionid
  14. minion上删除pki目录
  15. minion上删除minion_id文件
  16. ⑤修改完成,启动minion
  17. #此处必须先停掉minion修改,并删除相应的文件,否则会默认地去查找原先的配置,已踩坑
  18.  
  19. #以下是刚装完查看minion_id变成了www.test123.com。进行修改成linux-node2.example.com
  20. [root@linux-node2 salt]# cat minion_id
  21. www.test123.com
  22. [root@linux-node2 salt]# systemctl stop salt-minion
  23. [root@linux-node2 salt]# rm -rf pki
  24. [root@linux-node2 salt]# rm -rf minion_id
  25. [root@linux-node2 salt]# systemctl start salt-minion
  26. [root@linux-node2 salt]# cat minion_id
  27. linux-node2.example.com

4.配置说明

  1. [root@linux-node2 salt]# ll
  2. 总用量 124
  3. -rw-r----- 1 root root 2624 9 15 23:19 cloud
  4. drwxr-xr-x 2 root root 6 9 16 00:41 cloud.conf.d
  5. drwxr-xr-x 2 root root 6 9 16 00:41 cloud.deploy.d
  6. drwxr-xr-x 2 root root 6 9 16 00:41 cloud.maps.d
  7. drwxr-xr-x 2 root root 6 9 16 00:41 cloud.profiles.d
  8. drwxr-xr-x 2 root root 6 9 16 00:41 cloud.providers.d
  9. -rw-r----- 1 root root 46034 9 15 23:19 master
  10. drwxr-xr-x 2 root root 6 9 16 00:41 master.d
  11. -rw-r----- 1 root root 35101 1 16 10:29 minion
  12. drwxr-xr-x 2 root root 27 1 16 11:47 minion.d
  13. -rw-r--r-- 1 root root 23 1 16 11:45 minion_id
  14. drwxr-xr-x 3 root root 19 1 16 11:45 pki
  15. -rw-r----- 1 root root 26984 9 15 23:19 proxy
  16. drwxr-xr-x 2 root root 6 9 16 00:41 proxy.d
  17. -rw-r----- 1 root root 344 9 15 23:19 roster
  18.  
  19. 说明:
  20. 1salt-minion首次启动会在/etc/salt/pki/minion目录下生成公钥和秘钥
  21. [root@linux-node2 salt]# ll /etc/salt/pki/minion/
  22. 总用量 12
  23. -rw-r--r-- 1 root root 450 1 16 11:47 minion_master.pub
  24. -r-------- 1 root root 1674 1 16 11:45 minion.pem
  25. -rw-r--r-- 1 root root 450 1 16 11:45 minion.pub
  26.  
  27. 2)并且在salt-master的/etc/salt/pki/master/minion_pre中存放了salt-minion的公钥。
  28. [root@linux-node1 ~]# ll /etc/salt/pki/master/minions_pre/
  29. linux-node1.example.com
  30. linux-node2.example.com

5.配置salt-master和slat-minion通信

  1. [root@linux-node1 salt]# salt-key
  2. Accepted Keys: 同意的
  3. Denied Keys: 拒绝的
  4. Unaccepted Keys: 等待同意的
  5. linux-node1.example.com
  6. linux-node2.example.com
  7. Rejected Keys:
  8.  
  9. 同意认证的方法:
  10. 分为三种:
  11.  
  12. [root@linux-node1 salt]# salt-key -A
  13. [root@linux-node1 salt]# salt-key -a 指定id
  14. [root@linux-node1 salt]# salt-key -a 支持通配符
  15. [root@linux-node1 master]# salt-key -a linux*
  16. The following keys are going to be accepted:
  17. Unaccepted Keys:
  18. linux-node1.example.com
  19. linux-node2.example.com
  20. Proceed? [n/Y] Y
  21. Key for minion linux-node1.example.com accepted.
  22. Key for minion linux-node2.example.com accepted.
  23.  
  24. salt-key 命令参数介绍
  25. -L 列出所有
  26. -d 删除指定的支持通配符
  27. -D 删除所有
  28. -A 添加所有
  29. -a 指定添加
  30.  
  31. 同意之后生成的文件
  32. pki/
  33. ├── master
  34. ├── master.pem
  35. ├── master.pub
  36. ├── minions
  37. ├── linux-node1.example.com
  38. └── linux-node2.example.com
  39. ├── minions_autosign
  40. ├── minions_denied
  41. ├── minions_pre
  42. └── minions_rejected
  43. └── minion
  44. ├── minion_master.pub 同意之后master发送公钥
  45. ├── minion.pem
  46. └── minion.pub

001-SaltStack入门篇(一)之SaltStack部署的更多相关文章

  1. SaltStack入门篇(七)之架构部署实战

    模块:https://docs.saltstack.com/en/2016.11/ref/states/all/index.html 实战架构图: 实验环境设置: 主机名 IP地址 角色 linux- ...

  2. SaltStack入门篇(六)之部署Redis主从实现和Job管理

    一.部署Redis主从 需求: 192.168.56.11是主,192.168.56.12是从 redis监听自己的ip地址,而不是0.0.0.0 分析: linux-node1 安装 配置 启动 l ...

  3. SaltStack入门篇(五)之salt-ssh的使用以及LAMP状态设计部署

    1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html ()安装salt-ssh [root@li ...

  4. SaltStack入门篇(一)之SaltStack部署

    一.SaltStack概述 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...

  5. SaltStack入门篇(四)之深入理解SaltStack远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

  6. SaltStack入门篇(三)之数据系统Grains、Pillar

    1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...

  7. SaltStack入门篇(二)之远程执行和配置管理

    1.远程执行 第一条命令: [root@linux-node1 master]# salt '*' test.ping linux-node2.example.com: True linux-node ...

  8. SaltStack 入门到精通第三篇:Salt-Minion配置文件详解

    SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ  发布日期:2014-06-09 17:52:16   ##### 主要配置设置 ##### 配置 默认值 ...

  9. SaltStack 入门到精通第二篇:Salt-master配置文件详解

    SaltStack 入门到精通第二篇:Salt-master配置文件详解     转自(coocla):http://blog.coocla.org/301.html 原本想要重新翻译salt-mas ...

  10. SaltStack入门到精通第一篇:安装SaltStack

    SaltStack入门到精通第一篇:安装SaltStack 作者:纳米龙  发布日期:2014-06-09 17:50:36   实际环境的设定: 系统环境: centos6 或centos5 实验机 ...

随机推荐

  1. Kotlin之定义函数

    java: int add (int m ,int n){ return m+n; } void process(int m){ Systrm.out.println(m); } kotlin: fu ...

  2. 代码实现:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 (包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

    import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.ut ...

  3. Jenkins发布回滚方案

    Jenkins回滚可以通过每次发布从主干打tag,然后发布的时候发tag,比如tag, v1, v2,v3 如果我发布了v3,想要回滚回v2,直接在Jenkins中选择v2的tag地址重新构建就可以回 ...

  4. Bresenham’s algorithm( 布兰森汉姆算法)画直线

    Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点.这个算法只会用到较为快速的整数加法.减法和位元移位,常用于绘制电脑画面中的直线.是计算机图形学 ...

  5. 深入浅出JavaScript(中文版)__莫里森 初读笔记

    创建变量,使用关键字var; 创建常量,使用关键字const; 大驼峰用于对象,小驼峰用于变量和函数. 在试图相加数字时意外做了字符串相连,是种常见的JavaScript错误.如果想做数字相加,请确定 ...

  6. java:LeakFilling(Servlet,JSP)

    1.web-inf中的  .jsp 文件不会运行,其他都根据web.xml文档中的自然顺序进行运行 2.keep-alive 长连接(持续)  UDP,TCP短连接 3.状态码:1(消息异常) 2(成 ...

  7. 原生js之addEventListener,removeEventListener

    使用addEventListener添加事件 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. P1319 【压缩技术】

    题面嘤嘤嘤 刚做完P1320,突然发现这里有一个没有括号的压缩技术,就抱着试一试的心态来做一做... 洛谷真有趣,让我正着做一遍,反着做一遍... 好,进入正题 这题比较便捷的是边读边做 具体细节看代 ...

  9. 【深度聚类】Superpixel Sampling Networks

    Superpixel Sampling Networks 原始文档:https://www.yuque.com/lart/papers/ssn 本文的思想很简单,传统的超像素算法是一种有效的低/中级的 ...

  10. Linux系统中使用Nignx配置反向代理负载均衡

    目录 使用nginx实现动静分离的负载均衡集群 使用nginx实现负载均衡和动静分离 使用nginx实现动静分离的负载均衡集群 Nginx官网源码包下载链接:http://nginx.org/en/d ...