介绍
SaltStack是为我们批量管理千万台机器的基础工具,拓展起来也十分方便。SaltStack可以进行动态的编辑,配置管理,远程执行命令等等。
Saltstack包括master和minion,master是控制端,minion是被管理节点。
安装
yum install salt-master
配置文件: /etc/salt/master
配置文件字段选项介绍: http://docs.saltstack.com/ref/configuration/master.html
最基本字段: interface (服务端监听端口)
运行: /etc/init.d/salt-master start
master默认监听两个端口, 4505(publish_port)为salt的消息发布系统,4506(ret_port)为salt客户端与服务端通信的端口,所以确保客户端能跟服务端的这2个端口通信
yum install salt-minion
配置文件: /etc/salt/minion
配置文件选项介绍: http://docs.saltstack.com/ref/configuration/minion.html
最基本字段: master: 服务端主机名 id: 客户端主机名(在服务端看到的客户端的名字)
运行: /etc/init.d/salt-minion start
注意事项:
1. minion 默认和主机名salt的主机通信
2. salt的配置文件均为yaml风格, $key: $value # 注意冒号后有一个空格
salt minion和master的认证过程:
minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成minion.pem(private key), minion.pub(public key),然后将minion.pub发送给master
master 在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 然后master就能对minion发送指令了
对minion进行分组:
文档: http://docs.saltstack.com/topics/targeting/nodegroups.html
在master的配置文件中按如下格式定义:
nodegroups:
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
在state或者pillar中引用的时候如下:
base:
group1:
- match: nodegroup
- webserver
命令使用: salt -N group1 test.ping #-N指定groupname
常用命令
服务端查看key: salt-key
服务端接受key: salt-key -a minion1, salt-key -A 接受所有key
测试某台机器是否联通: salt 'minion1' test.ping
测试所有机器是否联通: salt '*' test.ping # 引号中以实现很强大的minion的过滤与匹配技术, 文档:http://docs.saltstack.com/topics/targeting/compound.html
执行命令: salt '*' cmd.run 'hostname'
安装app: salt '*' pkg.install ftp
state.apply 的使用:
https://www.jianshu.com/p/90dd9024067c
/etc/salt/master 配置
file_roots:
base:
- /srv/salt
top.sls:
base:
'*':
- code_rsync
code_rsync.sls:
calc_sync:
file.recurse:
- source: salt://index_center_all/src/index_calculation
- name: /var/local/index_calculation/ # 这里可能是minion的目标目录
- user: amcuser
- group: amcuser
- dir_mode: 755
- file_mode: 644
- makedir: True
- backup: minion
- include_empty: True
- clean: True
/var/local/index_center/index_func_map.py:
file.managed:
- source: salt://index_center_all/src/index_func_map.py
- user: amcuser
- group: amcuser
- file_mode: 644
复制新的机器后需要修改的salt内容
### minion ###
/etc/salt/minion
修改 master ip 如果需要
删除 /etc/salt/pki/minion/minion_mster.pub
修改 /etc/salt/minion_id 中的host
重启 service salt-minion restart
需要的话master上删除 key
salt-key -d XXXX