0x00 背景
OS : CentOS 7
SaltStack : 2015.5.10 (Lithium)
0x01 基础环境安装
- 按照官方文档(yum方式安装)
- 首先安装EPEL
sudo rpm -Uvh epel-release-latest-7.noarch.rpm
- 安装salt-master
sudo yum install salt-master
- 安装salt-minion
sudo yum install salt-minion
- 配置开机自启,并启动salt-master
sudo systemctl enable salt-master
sudo systemctl enable salt-minion
sudo systemctl start salt-master
- 配置salt-minion
sudo vim /etc/salt/minion
master:x.x.x.x
- 启动salt-minion
sudo systemctl start salt-minion
- master添加minion
sudo salt-key
sudo salt-key -A
0x02 执行命令
- 一般命令
sudo salt '*' cmd.run 'ifconfig'
- 通过配置文件执行
sudo vim /etc/salt/master
file_roots:
base:
- /srv/salt
apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel
sudo vim apache.sls
apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
sudo salt '*' state.sls apache
在有入口文件top.sls时可以使用
sudo salt '*' state.highstate
直接调用top.sls
base:
'*':
- apache
例子是调用apache.sls
0x03 数据系统Grains & Pillar
- Grains
sudo salt '*' grains.items
sudo salt 'linux-node1*' grains.get fqdn_ip4
sudo salt '*' grains.get os
sudo salt -G os:CentOS cmd.run 'last'
sudo vim /etc/salt/minion
grains:
roles:
- webserver
- memcache
systemctl restart salt-minion.service
sudo salt -G 'roles:memcache' cmd.run 'ifconfig'
sudo vim /etc/salt/grains
web: nginx
systemctl restart salt-minion.service
sudo salt -G 'web:nginx' cmd.run 'ifconfig'
- Pillar
sudo vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
......
pillar_opts: False
systemctl restart salt-master.service
sudo vim /srv/pillar/apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
sudo vim /srv/pillar/top.sls
base:
'*':
- apache
sudo salt '*' saltutil.refresh_pillar
sudo salt -I 'apache:httpd' test.ping
sudo salt '*' pillar.items
-
对比
名称 存储位置 数据类型 数据采集更新方式 应用 Grains Minion端 静态数据 Minion启动时收集,也可以使用saltutil.sync_grains进行刷新. 存储Minion基本数据.比如用于匹配Minion,自身数据可以用来做资产管理等. Pillar Master端 动态数据 在Master端指定给对应的Minion,可以使用saltutil.refresh_pillar刷新 存储Master指定数据,只有指定的Minion可以看到,用于敏感数据保存.