salt ssh
执行salt commands及states通过ssh,不需要安装salt-minion.
开始
salt ssh方式使用非常简单,通过配置/etc/salt/roster文件定义系统需要连接的主机,salt-ssh命令使用方式跟salt相同.
- salt ssh在2014.7.0版本产品化
- 远端需要有至少python2.6(也可以使用-r选项发送原子的ssh命令)
- 大多数系统中都是使用salt-ssh命令执行
- salt ssh并不是用来替代标准的salt通信系统,它提供了不需要zeromq和远程agent的一个选择.由于所有通信都是通过ssh会在速度上慢于salt+zeromq
- 目前fileserver选项必须会封装,确保关联的文件会使用salt-ssh交付.state模块是例外,在master端编译,进程会找到所有salt://路径指向然后复制打tar包,fileserver封装还在开发中.
salt ssh roster
salt roster系统轻松定义远程minions.https://docs.saltstack.com/en/latest/topics/ssh/roster.html#ssh-roster
默认roster文件是在/etc/salt/roster:
1 | web1: |
1 | Note |
salt-ssh部署ssh key
默认salt-ssh将为ssh生成密钥对,默认路径是/etc/salt/pki/master/ssh/salt-ssh.rsa.密钥对将在第一次运行salt-ssh命令时生成.
之后使用ssh-copy-id命令部署公钥到minions.
1 | ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa.pub user@server.demo.com |
可以创建一个简单的脚本:
1 | #!/bin/bash |
1 | ./salt-ssh-copy-id.sh user@server1.host.com |
当公钥部署完成后,salt-ssh就可以控制这些minions了.
调用salt-ssh
RHEL/centos 5 python2.6
1 | salt-ssh centos-5-minion -r 'yum -y install epel-release ; yum -y install python26' |
python3.x
在2017.7.0版本之前,salt是不支持python3.x,最好使用-r参数.
salt-ssh的使用方法跟salt基本相同,有着相似的语法
默认salt-ssh使用在远程minions上使用salt执行模块,使用-r会使用raw shell命令
1 | salt-ssh '*' test.ping |
salt ssh 使用state
salt ssh 使用state系统与salt一样抽象了相同的接口.
salt ssh 使用target
只支持glog与regex targets
配置salt ssh
还是在/etc/salt/master中.
Minion 配置选项可以在master配置中的ssh_minion_opts中配置,也可以在roster中的minion_opts中配置.
salt-ssh使用非root用户
默认salt读取/etc/salt配置.如果你使用普通用户必须修改pki_dir和cachedir路径,否则会报权限错误.
推荐为普通用户创建单独的配置文件并使用-c加载.
使用saltfile定义命令行参数
使用saltfile定义命令行参数,可以在一台服务器上管理多个不同的salt项目.
可以cd到saltfile的目录执行
1 | salt-ssh: |
salt-ssh –config-dir=path/to/config/dir –max-procs=30 –wipe * test.ping
使用saltfile可简化成
salt-ssh * test.ping.
saltssh debug
salt-ssh 加 -ltrace 参数或定义SALT_ARGV变量.