salt-ssh介绍
salt-ssh可以让我们不需要在受控机上安装salt-minion客户端也能够实现管理操作。
salt-ssh特点
1.远程系统需要Python支持,除非使用-r选项发送原始ssh命令
2.salt-ssh是一个软件包,需安装之后才能使用,命令本身也是salt-ssh
3.salt-ssh不会取代标准的Salt通信系统,它只是提供了一个基于SSH的替代方案,不需要ZeroMQ和agent
请注意,由于所有与Salt SSH的通信都是通过SSH执行的,因此它比使用ZeroMQ的标准Salt慢得多
salt-ssh远程管理的方式
salt-ssh有两种方式实现远程管理,一种是在配置文件中记录所有客户端的信息,诸如 IP 地址、端口号、用户名、密码以及是否支持sudo等;另一种是使用密钥实现远程管理,不需要输入密码。
salt-ssh管理
在 master 上安装 salt-ssh
[root@node01 ~]# yum -y install salt-ssh
通过使用用户名密码的SSH实现远程管理
修改配置文件,添加受控机信息
[root@node01 ~]# vim /etc/salt/roster
添加下面内容
vm1:
host: 192.168.175.152 //写受控端的IP
user: root
passwd: 123456
重启
[root@node01 ~]# systemctl restart salt-master
测试连通性
[root@node01 ~]# salt '*' test.ping
node03:
True
从上面的信息可以看出,第一次访问时需要输入 yes/no ,但是 saltstack 是不支持交互式操作的,所以为了解决这个问题,我们需要对其进行设置,让系统不进行主机验证。
[root@node01 ~]# vim ~/.ssh/config
添加以下内容
StrictHostKeyChecking no
[root@node01 ~]# salt '*' test.ping
node03:
True
通过salt-ssh初始化系统安装salt-minion
[root@node01 ~]# cd /srv/salt/base
[root@node01 base]# tree
.
├── modules
│ ├── app
│ │ ├── files
│ │ │ ├── apache-tomcat-9.0.37.tar.gz
│ │ │ ├── tomcat.service
│ │ │ └── tomcat.sh
│ │ └── tomcat.sls
│ ├── common
│ │ └── init.sls
│ ├── database
│ │ ├── files
│ │ │ ├── mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
│ │ │ ├── mysql.service
│ │ │ └── mysql.sh
│ │ └── install.sls
│ ├── framework
│ │ ├── files
│ │ │ ├── httpd.conf
│ │ │ └── httpd-vhosts.conf
│ │ └── lamt.sls
│ ├── web
│ │ ├── apache
│ │ │ ├── files
│ │ │ │ ├── apr-1.7.0.tar.bz2
│ │ │ │ ├── apr-util-1.6.1.tar.bz2
│ │ │ │ ├── httpd-2.4.43.tar.bz2
│ │ │ │ └── install.sh
│ │ │ ├── httpd.service
│ │ │ └── httpd.sls
│ │ └── httpd.sls
│ └── yum
│ ├── files
│ │ ├── CentOS-7.repo
│ │ └── epel-7.repo
│ └── init.sls
└── top.sls
13 directories, 23 files
[root@node01 ~]# ls
anaconda-ks.cfg salt-repo-latest-2.el7.noarch.rpm
root@node01 ~]# cd /srv/salt/base/
[root@node01 base]# mkdir salt
[root@node01 base]# cd
[root@node01 ~]# cp salt-repo-latest-2.el7.noarch.rpm /srv/salt/base/salt/
[root@node01 ~]# cd /srv/salt/base/salt/
[root@node01 salt]# ls
salt-repo-latest-2.el7.noarch.rpm
[root@node01 salt]# mkdir minion
[root@node01 salt]# ls
minion salt-repo-latest-2.el7.noarch.rpm
[root@node01 salt]# vim minion.sls //编写安装salt-minion的脚本
[root@node01 salt]# cat minion.sls
/root/salt-repo-latest-2.el7.noarch.rpm:
file.managed:
- source: salt://salt/salt-repo-latest-2.el7.noarch.rpm
- user: root
- group: root
- mode: 0644
cmd.run:
- name: yum -y localinstall salt-repo-latest-2.el7.noarch.rpm
salt-minion-install:
pkg.installed:
- name: salt-minion
/etc/salt/minion:
file.managed:
- source: salt://salt/minion
- user: root
- group: root
- mode: 0644
- require:
- pkg: salt-minion-install
salt-minion-service:
service.running:
- name: salt-minion
- enable: True
- watch:
- file: /etc/salt/minion
[root@node01 salt]# salt-ssh '*' cmd.run 'systemctl restart salt-minion'
vm1:
[root@node01 salt]# salt '*' test.ping
node03:
True
[root@node01 salt]# salt '*' cmd.run 'rpm -qa| grep salt-minion'
node03:
salt-minion-3000.3-1.el7.noarch