saltstack可用于批量管理集群,用的是c/s架构,master管理多个minion
测试系统:debian8.7
一.安装master
1.添加apt key
wget -O - https://repo.saltstack.com/apt/debian/8/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
2.将saltstack源添加进apt源
vi /etc/apt/sources.list #添加saltstack源 deb http://repo.saltstack.com/apt/debian/8/amd64/latest jessie main
3.更新apt
apt-get update
4.安装master端相关组件
apt-get install salt-api apt-get install salt-cloud apt-get install salt-master apt-get install salt-minion apt-get install salt-ssh apt-get install salt-syndic
5.配置master
vi /etc/salt/master ####################常见配置如下#################### #指定master,冒号后有一个空格 user: root #自动接收minion auto_accept: True #-------以下为可选-------------- #自动接收minion auto_accept: True #salt的运行线程,开的线程越多一般处理的速度越快,但一般不要超过CPU的个数 worker_threads: 10 # master的管理端口 publish_port : 4505 # master跟minion的通讯端口,用于文件服务,认证,接受返回结果等 ret_port : 4506 # 如果这个master运行的salt-syndic连接到了一个更高层级的master,那么这个参数需要配置成连接到的这个高层级master的监听端口 syndic_master_port : 4506 # 指定pid文件位置 pidfile: /var/run/salt-master.pid # saltstack 可以控制的文件系统的开始位置 root_dir: / # 日志文件地址 log_file: /var/log/salt_master.log # 分组设置 nodegroups: group_all: '*' # salt state执行时候的根目录 file_roots: base: - /srv/salt/ # 设置pillar 的根目录 pillar_roots: base: - /srv/pillar
6.启动master
systemctl start salt-master
二.安装minion
1.安装salt-minion
apt-get install salt-minion
2.配置minion相关信息
vi /etc/salt/minion ###################以下为常见设置########################### #指定master,冒号后有一个空格 master: 10.32.80.121 #-------以下为可选-------------- # minion的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串 id: xx # salt运行的用户权限 user: root # master的识别ID,可以是IP,域名,或是可以通过DNS解析的字符串 master : ip # master通讯端口 master_port: 4506 # 备份模式,minion是本地备份,当进行文件管理时的文件备份模式 backup_mode: minion # 执行salt-call时候的输出方式 output: nested # minion等待master接受认证的时间 acceptance_wait_time: 10 # 失败重连次数,0表示无限次,非零会不断尝试到设置值后停止尝试 acceptance_wait_time_max: 0 # 重新认证延迟时间,可以避免因为master的key改变导致minion需要重新认证的syn风暴 random_reauth_delay: 60 # 日志文件位置 log_file: /var/logs/salt_minion.log # 文件路径基本位置 file_roots: base: - /etc/salt/minion/file # pillar基本位置 pillar_roots: base: - /data/salt/minion/pillar
3.启动minion
systemctl start salt-minion
三.通过master管理minion
1.配置key
#查看当前所有的key salt-key #注册所有key salt-key -A #注册某个key salt-key -a minion_id #删除全部key salt-key -D #删除某个key salt-key -d minion_id
2.测试是否连通
#测试所有minion的连通性 salt '*' test.ping #测试某个minion的连通性 salt 'minion_id' test.ping
3.常用命令
#salt cmd.run用于让minion批量执行命令 salt '*' cmd.run 'ifconfig' salt 'minion_id' cmd.run 'ifconfig' #salt-run manage查看minioni信息 salt-run manage.status #查看所有minion状态 salt-run manage.down ##查看down掉的minion salt-run manage.up ##查看up的minion #salt-key管理密钥 salt-key [options] salt-key -L ##查看所有minion-key salt-key -a <key-name> ##接受某个minion-key salt-key -d <key-name> ##删除某个minion-key salt-key -A ##接受所有的minion-key salt-key -D ##删除所有的minion-key #salt-call在minion上执行某命令 salt-call [options] <function> [arguments] salt-call test.ping ##自己执行test.ping命令 salt-call cmd.run 'ifconfig' ##自己执行cmd.run函数 #salt-cp分发文件给minion(不支持目录分发) salt-cp '*' testfile.html /tmp #把testfile.html发送到所有minion的/tmp文件夹 salt-cp 'test*' index.html /tmp/a.html #把index.html发送到所有test*的minion并重命名为/tmp/a.html #目标minion分组 修改/etc/salt/master nodegroups: testgroup1: 'L@test82.salt.cn,test83.salt.cn' testgroup2: '192.168.2.84' #-N为分组命令符 salt -N testgroup1 test.ping #分组分为多种类型: G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS) L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100 R -- 针对客户端范围做匹配,例如: R@%foo.bar