|
1.在/srv/salt目录下创建top.sls文件
cd /srv/salt
touch top.sls
2.编辑sls文件
vim hosts.sls
/tmp/aaa.hosts : //name,可以宿便写,但是如果这里不写同步路径信息的话,需要在后面加上- name: /tmp/aaa.hosts file.managed: //指定使用的salt模块的名称 - source: salt://etc/hosts //同步的源在哪
- user: root
- group: root
- mode: 600
保存退出
vim top.sls
base: //这个是top.sls文件的固定格式,总共有三个:base dev和prod,跟你之前在master配置文件使用哪个级别的根目录有关(参看salt的文件系统配置)
'*': //代表使用sls的机器 - hosts //代表使用的自定义sls文件的名称是什么
保存退出
3.下发配置文件
cp /etc/hosts /srv/salt/etc/hosts //创建/etc/hosts文件
salt '*' state.highstate //调用top.sls
salt '*' state.sls hosts //直接调用hosts.sls
以上两种方法都可以下发配置文件到minion端
4.测试,当hosts.sls文件mv到非根目录下时如何下发配置
[iyunv@Admin1-saltstack etc]# cd /srv/salt/
[iyunv@Admin1-saltstack salt]# ls
etc hosts.sls top.sls
[iyunv@Admin1-saltstack salt]# mkdir hosts
[iyunv@Admin1-saltstack salt]# mv hosts.sls hosts
[iyunv@Admin1-saltstack salt]# echo "bbbbbbb" >> etc/hosts
[iyunv@Admin1-saltstack salt]# salt '*' state.sls hosts.hosts
Admin3-saltstack.littlebee.com:
----------
ID: /tmp/aaa.hosts
Function: file.managed
Result: True
Comment: File /tmp/aaa.hosts updated
Started: 14:52:35.309405
Duration: 7.627 ms
Changes:
----------
diff:
---
+++
@@ -1,3 +1,4 @@
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
aaaaaaaaaa
+bbbbbbb
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Admin2-saltstack.littlebee.com:
----------
ID: /tmp/aaa.hosts
Function: file.managed
Result: True
Comment: File /tmp/aaa.hosts updated
Started: 14:52:34.936313
Duration: 7.775 ms
Changes:
----------
diff:
---
+++
@@ -1,3 +1,4 @@
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
aaaaaaaaaa
+bbbbbbb
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
5.关于init.sls
当目录下找不到sls文件时,会默认执行init.sls文件里的内容
1.查看grains
salt 'Admin2-saltstack.littlebee.com' grains.ls
salt 'Admin2-saltstack.littlebee.com' grains.items //查看所有item
salt 'Admin2-saltstack.littlebee.com' grains.item os //单独查看os这个item
2.自定义grains
在minion的配置文件上进行自定义grains配置
grains: //必须以grains开头
roles: //值得定义(自定义的)
- webserver //值对应的属性定义(自定义的)
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15
保存退出并重启minion服务:
/etc/init.d/salt-minion restart
然后再在master上去测试:
[iyunv@Admin1-saltstack salt]# salt '*' grains.item roles
Admin3-saltstack.littlebee.com:
----------
roles:
- webserver
- memcache
Admin2-saltstack.littlebee.com:
----------
roles:
- webserver
- memcache
1.需求
使用sls安装nginx并管理nginx的配置文件,当nginx配置文件被修改时,自动更新配置文件,并重启nginx。
2.配置
1.在master端上写好nginx.sls文件
mkdir -p /srv/salt/nginx
cd /srv/salt/nginx
vim init.sls
nginx:
pkg:
- installed
service:
- running
- enable: True
- reload: True
- watch:
- pkg: nginx
- file: /etc/nginx/nginx.conf
- file: /etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf:
file.managed:
- source: salt://etc/nginx/nginx.conf
- user: root
- group: root
- mode: 644
/etc/nginx/conf.d/default.conf:
file.managed:
- source: salt://etc/nginx/conf.d/default.conf
- user: root
- group: root
- mode: 644
保存退出
2.在master端上安装nginx,方便生成nginx的配置文件(生产环境中其实是不需要安装的)
yum -y install nginx
3.创建nginx同步目录
mkdir /srv/salt/etc/nginx/conf.d -p
4.拷贝nginx的配置文件到/srv/salt/etc/nginx/目录下
cp /etc/nginx/nginx.conf /srv/salt/etc/nginx/
5.拷贝default.conf配置文件到/srv/salt/nginx/conf.d/目录下
cp /etc/nginx/conf.d/default.conf /srv/salt/etc/nginx/conf.d/
6.下发安装指令[iyunv@Admin1-saltstack nginx]# salt '*' state.sls nginx
Admin3-saltstack.littlebee.com:
----------
ID: nginx
Function: pkg.installed
Result: True
Comment: The following packages were installed/updated: nginx
Started: 16:00:54.241160
Duration: 100771.423 ms
Changes: http://www.188bet188bet.net/;http://www.mywww188bet.com/
----------
GeoIP:
----------
new:
1.6.5-1.el6
old:
GeoIP-GeoLite-data:
----------
new:
2015.04-2.el6
old:
GeoIP-GeoLite-data-extra:
----------
new:
2015.04-2.el6
old:
gd:
----------
new:
2.0.35-11.el6
old:
geoipupdate:
----------
new:
2.2.1-2.el6
old:
libXpm:
----------
new:
3.5.10-2.el6
old:
libxslt:
----------
new:
1.1.26-2.el6_3.1
old:
nginx:
----------
new:
1.0.15-11.el6
old:
nginx-filesystem:
----------
new:
1.0.15-11.el6
old:http://www.8bo360.com/;http://www.zqpeilv.net/;http://www.duqiu2015.com/;http://www.dqwzpm007.com/
----------
ID: /etc/nginx/nginx.conf
Function: file.managed
Result: True
Comment: File /etc/nginx/nginx.conf is in the correct state
Started: 16:02:35.422030
Duration: 3.826 ms
Changes:
----------
ID: /etc/nginx/conf.d/default.conf
Function: file.managed
Result: True
Comment: File /etc/nginx/conf.d/default.conf is in the correct state
Started: 16:02:35.430801
Duration: 2.863 ms
Changes: http://www.888zhenrengw.com/;http://www.macauwnsr.com/;http://www.aomenpjylc.com/
----------
ID: nginx
Function: service.running
Result: True
Comment: Service nginx has been enabled, www.adwi.net and is running
Started: 16:02:35.440698
Duration: 583.024 ms
Changes:
----------
nginx:
True
Summary
------------
Succeeded: 4 (changed=2)
Failed: 0
------------
Total states run: 4
Admin2-saltstack.littlebee.com:
----------
ID: nginx
Function: pkg.installed
Result: True
Comment: The following packages were installed/updated: nginx
Started: 16:00:53.829498
Duration: 145884.537 ms
Changes: http://www.lawyesr.com/;http://www.leehomesun.com/;http://www.sikayi.com/
----------
GeoIP:
----------
new:
1.6.5-1.el6
old:
GeoIP-GeoLite-data:
----------
new:
2015.04-2.el6
old:
GeoIP-GeoLite-data-extra:
----------
new:
2015.04-2.el6
old:
gd:
----------
new:
2.0.35-11.el6
old:
geoipupdate:
----------
new:
2.2.1-2.el6
old:
libXpm:
----------
new:
3.5.10-2.el6
old:
libxslt:
----------
new:
1.1.26-2.el6_3.1
old:
nginx:
----------
new:
1.0.15-11.el6
old:
nginx-filesystem:
----------
new:
1.0.15-11.el6
old:
----------
ID: /etc/nginx/nginx.conf
Function: file.managed
Result: True
Comment: File /etc/nginx/nginx.conf is in the correct state
Started: 16:03:20.181447
Duration: 5.708 ms
Changes:
----------
ID: /etc/nginx/conf.d/default.conf
Function: file.managed
Result: True
Comment: File /etc/nginx/conf.d/default.conf is in the correct state
Started: 16:03:20.198217
Duration: 4.887 ms
Changes:
----------
ID: nginx
Function: service.running
Result: True
Comment: Service nginx has been enabled, and is running
Started: 16:03:20.214405
Duration: 340.608 ms
Changes:
----------
nginx:
True
http://www.pk104.com/;http://www.bjlwanfa.net/;http://www.aomendcpaiming.com/
Summary
------------
Succeeded: 4 (changed=2)
Failed: 0
------------
Total states run: 4
出现上面的信息则表示安装成功了
也可以在minion端看服务是否起来:
[iyunv@Admin2-saltstack tmp]# /etc/init.d/nginx status
nginx (pid 3046) is running...
[iyunv@Admin3-saltstack nginx]# /etc/init.d/nginx status
nginx (pid 2876) is running...
1.pillar的介绍
pillar是salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被salt的其他组件使用。salt在0.9.8版本中引入了pillar。pillar在解析完成以后,是一个嵌套的dict结构;最上层的key是minion ID,其值是该minoin所拥有的pillar数据;每一个值也都是key/value格式。这里可以看出pillar的一个特点,pillar数据是与特定的minion关联的,也就是说每一个minion都只能看到自己的数据,所以pillar可以用来传递敏感数据(在salt的设计中,pillar使用独立的加密session,也是为了保证敏感数据的安全性)。
2.pillar可以用在哪些地方?
1.敏感数据
例如ssh key,加密证书等,由于pillar使用独立的加密session,可以确保这些敏感数据不被其他minion看到。
2.变量
可以在pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在state中引用
3.其他任何数据
可以在pillar中添加任何需要用到的数据,比如定义拥护和UID的对应关系,minion的角色等等。
4.用在Targetting中
pillar可以用来选择minon,使用-l选项
默认情况下,master配置文件中的所有数据都添加到pillar中,且对所有minion可用。如果要禁用这一默认值,可以在master配置文件中添加如下数据,重启服务后生效。
3.pillar的示例
1.pillar中定时执行操作的格式
schedule:
highstate:
function:state.highstate
minutes:1
2.实际配置步骤
1.在master上修改配置文件
vim /etc/salt/master
查找pillar_roots
pillar_roots:
base:
- /srv/pillar
pillar_opts: True
保存退出
2.创建/srv/pillar/目录
mkdir /srv/pillar -p
3.写pillar文件
cd /srv/pillar
vim top.sls
base:
'*':
- nginx
保存退出
mkdir -p /srv/pillar/nginx
cd /srv/pillar/nginx
vim init.sls
schedule:
nginx:
function: state.sls
minutes: 1
args:
- 'nginx'
保存退出
PS1:如果这里的sls文件名字是nginx.sls那么args的值应该是- 'nginx.nginx',切记切记并且top.sls里的值也应该是nginx.nginx!
PS2:如果不想全部minion都执行而只希望执行某个指定的组的话,则进行如下配置:
vim top.sls
base:
test1: //这个是自定义的组名
-match: nodegroup
- nginx
保存退出
4.查看pillar
salt "*" pillar.items
[iyunv@Admin1-saltstack nginx]# salt '*' pillar.items
Admin2-saltstack.littlebee.com:
----------
schedule:
----------
nginx:
----------
args:
- nginx
functions:
state.sls
minutes:
1
Admin3-saltstack.littlebee.com:
----------
schedule:
----------
nginx:
----------
args:
- nginx
functions:
state.sls
minutes:
1
出现如上提示表示配置成功了
salt '*' saltutil.refresh_pillar //每修改一次pillar都要执行以下刷新命令
5.更改配置文件然后到minion上进行验证
将/srv/salt/etc/nginx/conf.d/default.conf文件中的监听端口改成777,然后1分钟以后到客户端上去看(netstat -lnt),正常的话应该看到监听端口被改成777了
6.pillar值设置以后如果想要取消掉,可以在minion上重启salt-minion服务
把之前的配置删除,然后执行salt '*' pillar.items和salt '*' saltutil.refresh_pillar命令刷新pillar值,最后再在其中一台minion上重启salt-minion服务,最后再把/srv/salt/etc/nginx/conf.d/default.conf文件中的监听端口改回80,一分钟以后会发现重启过服务的minion不会把端口改回80,而没有重启过服务的minion还是会继续抓取master上的最新配置。 |
|