在saltstack控制机上安装主控软件
安装yum源
[root@localhost yum.repos.d]# rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
获取https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
准备中... ################################# [100%]
正在升级/安装...
1:salt-repo-latest-2.el7 ################################# [100%]
安装主控软件
[root@localhost ~]# yum -y install salt-master salt-minion
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
myrepo | 4.1 kB 00:00:00
salt-latest | 2.9 kB 00:00:00
salt-latest/x86_64/primary_db | 40 kB 00:00:25
正在解决依赖关系
--> 正在检查事务
---> 软件包 salt-master.noarch.0.2019.2.3-1.el7 将被 安装
--> 正在处理依赖关系 salt = 2019.2.3-1.el7,它被软件包 salt-master-2019.2.3-1.el7.noarch 需要
--> 正在处理依赖关系 systemd-python,它被软件包 salt-master-2019.2.3-1.el7.noarch 需要
--> 正在检查事务
---> 软件包 salt.noarch.0.2019.2.3-1.el7 将被 安装
--> 正在处理依赖关系 python-tornado < 6.0,它被软件包 salt-2019.2.3-1.el7.noarch 需要
--> 正在处理依赖关系 python-tornado >= 4.2.1,它被软件包 salt-2019.2.3-1.el7.noarch 需
在主控机上修改名字
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash
[root@node1 ~]#
修改配置文件
加上主控机的ip是什么
[root@node1 ~]# vi /etc/salt/minion
master: 192.169.90.131
在被控制机上安装客户端
安装yum源
[root@localhost yum.repos.d]# rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
获取https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
准备中... ################################# [100%]
正在升级/安装...
1:salt-repo-latest-2.el7 ################################# [100%]
安装被控机软件
[root@localhost ~]# yum -y install salt-minion
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
在主机上修改名字
[root@localhost ~]# hostnamectl set-hostname minoin
[root@localhost ~]# bash
[root@node2~]#
修改配置文件
加上主控机的ip是什么
[root@node2~]# vi /etc/salt/minion
master: 192.169.90.131
在主控机上没批准时 主控机和被控机的公钥和私钥在minion_pre里面
[root@node1 salt]# tree
.
├── cloud
├── cloud.conf.d
├── cloud.deploy.d
├── cloud.maps.d
├── cloud.profiles.d
├── cloud.providers.d
├── master
├── master.d
├── minion
├── minion.d
├── minion_id
├── pki
│ ├── master
│ │ ├── master.pem
│ │ ├── master.pub
│ │ ├── minions
│ │ ├── minions_autosign
│ │ ├── minions_denied
│ │ ├── minions_pre
│ │ │ ├── node1
│ │ │ └── node2
│ │ └── minions_rejected
│ └── minion
│ ├── minion.pem
│ └── minion.pub
├── proxy
├── proxy.d
└── roster
16 directories, 12 files
master收到minion的公钥后,通过salt-key命令接受该公钥 然后公钥就会放在minions里面代表已经接受了被控机的公钥
[root@node1 salt]# salt-key -a 'node*'
The following keys are going to be accepted:
Unaccepted Keys:
node1
node2
Proceed? [n/Y] y
Key for minion node1 accepted.
Key for minion node2 accepted.
[root@node1 salt]# tree
.
├── cloud
├── cloud.conf.d
├── cloud.deploy.d
├── cloud.maps.d
├── cloud.profiles.d
├── cloud.providers.d
├── master
├── master.d
├── minion
├── minion.d
├── minion_id
├── pki
│ ├── master
│ │ ├── master.pem
│ │ ├── master.pub
│ │ ├── minions
│ │ │ ├── node1
│ │ │ └── node2
│ │ ├── minions_autosign
│ │ ├── minions_denied
│ │ ├── minions_pre
│ │ └── minions_rejected
│ └── minion
│ ├── minion.pem
│ └── minion.pub
├── proxy
├── proxy.d
└── roster
SaltStack远程执行
测试所有被控主机是否存活
[root@node1 salt]# salt '*' test.ping
node1:
True
node2:
True
用saltstack执行命令,
[root@node1 salt]# salt 'node2*' cmd.run 'mkdir /tmp/haha'
node2:
[root@node1 salt]# salt '*' cmd.run 'ls /tmp'
node1:
ks-script-zdfvEf
systemd-private-85217f4e60c94a57a6e1f290b3d43cc3-chronyd.service-Vc0MzR
vmware-root
vmware-root_5320-3133879259
yum.log
node2:
haha
ks-script-c67Uor
systemd-private-98835d864f514c8f938bbd859170fcc7-chronyd.service-m5D9Bg
systemd-private-98835d864f514c8f938bbd859170fcc7-vgauthd.service-vfu0Dn
systemd-private-98835d864f514c8f938bbd859170fcc7-vmtoolsd.service-Fgs84j
yum.log
salt命令使用
查看版本
[root@node1 ~]# salt -v '*' test.ping
Executing job with jid 20200211203423829398
-------------------------------------------
node2:
True
node1:
True
加-E是正则表达式
[root@node1 ~]# salt -E 'nod*' test.ping
node1:
True
node2:
True
加L列表匹配
[root@node1 ~]# salt -L node1,node2 test.ping
node1:
True
node2:
True
加S是网段匹配
[root@node1 ~]# salt -S '192.168.90.0/24' test.ping
node1:
True
node2:
True
加G是系统平台匹配
[root@node1 ~]# salt -G 'os:redhat' test.ping
node2:
True
[root@node1 ~]# salt -G 'os:centos' test.ping
node1:
True