saltstack-states

这里用 ubuntu 中安装 redis 作为示例

创建 top.sls

/srv/salt/top.sls

1
2
3
4
base:
'server-01':
- roles.redis

阅读更多

saltstack-event

示例salt_event.py

1
2
3
4
5
6
7
8
import salt.utils.event
__opts__ = salt.config.client_config('/etc/salt/master')
event = salt.utils.event.MasterEvent(__opts__['sock_dir'])
for eachevent in event.iter_events(full=True):
print eachevent
print '---------------'


阅读更多

saltstack-cp模块

git_file

1
2
sudo salt   '*'   cp.get_file    salt://files/1.txt      /srv/1.txt   [template=jinja]   [gzip=5]

其中salt: 所指定的位置为 /srv/salt ,可以指定模板 和 压缩等级

阅读更多

saltstack-returners

return 是在 minion 端运行的一个回调

创建return目录

1
2
mkdir /srv/salt/_returners

创建一个local_return
/srv/salt/_returners/local_return.py

阅读更多

saltstack-pillar

Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillar data的管理类似于Salt State Tree。

创建 pillar 目录和 top.sls 文件

1
2
mkdir /srv/pillar/ && vim  /srv/pillar/top.sls

内容为

1
2
3
4
5
base:
‘*'
- cache


1
2
3
4
5
6
7
8
{% if grains['os'] == 'RedHat' %}
apache: httpd
git: git
{% elif grains['os'] == 'Debian' %}
apache: apache2
git: git-core
{% endif %}

阅读更多

saltstack-grains

用来匹配minion的grains,是指那些关于minion主机的静态信息,比如OS,软件版本,虚拟化,CPU,内存等等。

查看grains

1
2
3
salt ‘*’ grains.items  #打印grains
salt ‘*’ grains.item [keyname] #打印指定的值

在minion 中配置grains

/etc/salt/grains 自定义 grains
/etc/salt/minion 自定义 grains

1
2
3
4
5
6
7
8
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15

阅读更多

saltstack-自定义模块

创建 modules 目录

1
2
mkdir  /srv/salt/_modules  && cd /srv/salt/_modules

在 _modules 目录创建一个模块 test.py

代码如下

1
2
3
def foo():
return 'foo'

阅读更多

saltstack-安装

导入saltstack PPA key

Ubuntu下最新版本的包发布在saltstack PPA。如果你有 add-apt-repository 工具,你可以一键添加软件源仓库并导入PPA的key。

1
2
sudo add-apt-repository ppa:saltstack/salt

如果提示以下错误

1
2
add-apt-repository: command not found?

需要安装下面两个东西

1
2
3
sudo apt-get install python-software-properties
sudo apt-get install software-properties-common

阅读更多