您的位置:首页 > 其它

Salt States 入门三篇

2017-06-02 15:46 169 查看
如何使用 Salt State?
Extend:扩展被引用的SLS数据
include:
- apache

extend:
apache:
service:
- watch:
- pkg: mod_python

mod_python:
pkg.installed

yaml_jinja: 默认的渲染器
moosefs/chunk.sls

简单介绍Python和PyDSL渲染器

运行和调试 Salt States
salt '*' state.apply
salt-call state.aply -l debug
minion还可以直接在前台以debug模式运行:salt-minion -l debug
Salt States 基本法之一
使用 Salt 配置一个 minion,使之运行 Apache 服务器,并确保该服务正常运行。
准备 top 文件
base:
'*':
- webserver
top 文件可以区分多个运行环境(这个以后会再详细论述),默认的运行环境是 base。在 base 环境下,定义了一系列的 minion,对于上面这个例子来说,它适用于所有(*) minion 主机。
salt '*' state.apply
master 通知所有的目标 minions 来执行 state.apply 方法。当 state.apply方法不带任何 sls 文件作为参数时,minion 将下载 master 的 top 文件并尝试去匹配里面的表达式(top.sls 的第 2 行),如果匹配上,它将下载对应的 sls 文件(webserver.sls),编译(还记得yaml_jinja 吗?),运行

SLS命名空间
webserver/dev.sls 可以用 webserver.dev 表示
webserver_1.0 将匹配webserver_1/0.sls

salt -t 60
salt-minion -l debug        # On the minion
salt '*' state.apply -t 60  # On the master
Salt States 基本法之三
首先熟悉以下的命令
更新所有的minion的状态
salt '*' state.highstate

salt-call '192.168.0.100' state.sls webserver

调试
salt-minion -l debug

设置默认超时
salt '*' state.highstate -t 60

grains
salt 'linux-node1*' grains.ls
salt 'slaver.test.com' grains.item role env myname
salt 'slaver.test.com' pillar.items
salt '*' saltutil.refresh_pillar
salt -I 'conf:/etc/123.conf' test.ping

主机匹配
salt -G roles:cgt cmd.run 'uptime'

介绍如何使用 file_roots 来建立一套可同时用于研发、测试、生产线的运行环境。
/etc/salt/master:
file_roots:
base:
- /srv/salt/
prod:
- /srv/salt/prod
dev:
- /srv/salt/dev

实用案例
/srv/salt/prod/top.sls:
base:
'web*prod*':
- webserver.foobarcom
qa:
'web*qa*':
- webserver.foobarcom
dev:
'web*dev*':
- webserver.foobarcom

通过 pillar,给不同的主机设置不同的角色
/srv/pillar/top.sls:
base:
'web*prod*':
- webserver.prod
'web*qa*':
- webserver.qa
'web*dev*':
- webserver.dev

/srv/pillar/webserver/prod.sls:
webserver_role: prod

最后,是部署网站的 sls 文件:
/srv/salt/prod/webserver/foobarcom.sls:
{% if pillar.get('webserver_role', '') %}
/var/www/foobarcom:
file.recurse:
- source: salt://webserver/src/foobarcom
- saltenv: {{ pillar['webserver_role'] }}
- dir_mode: 755
- file_mode: 644
{% endif %}

salt '*' pillar.items
salt '*' saltutil.refresh_pillar
salt -I 'webserverrole:dev' state.apply webserver.foobarcom saltenv=prod
salt -I 'webserverrole:prod' state.apply webserver.foobarcom saltenv=prod
上面的例子说明,后面的source可以引用非prod的file。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Salt States