saltstack入门教程精华案例
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到非根目录下时如何下发配置
[root@Admin1-saltstack etc]# cd /srv/salt/
[root@Admin1-saltstack salt]# ls
etc hosts.sls top.sls
[root@Admin1-saltstack salt]# mkdir hosts
[root@Admin1-saltstack salt]# mv hosts.sls hosts
[root@Admin1-saltstack salt]# echo "bbbbbbb" >> etc/hosts
[root@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上去测试:
[root@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.下发安装指令[root@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端看服务是否起来:
[root@Admin2-saltstack tmp]# /etc/init.d/nginx status
nginx (pid 3046) is running...
[root@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
[root@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上的最新配置。
saltstack入门教程精华案例相关推荐
- 阿里云学生服务器购买以及使用入门教程(附案例学习)
最新版本的阿里云学生服务器该名称为:轻量应用服务器 虽然改名字了,但是还是以前的阿里云学生服务器.这次不仅改名称了,价格降低了(以前是1年114元,现在是1年96元),配置也更好了(以前配置是1核2G ...
- 微信小程序入门教程+案例demo
微信小程序入门教程+案例demo 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 首先摆在好姿态,--微信小程序开发也就那么回事.你只需要 ...
- Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解
Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解 前言 流程设计器集成 整体流程图 流程节点说明 第一审核人节点:实际设置审核人 配置信息 说明 第二审核人:参数 ...
- Android Things创客DIY第六课-Android Things入门配件包开发案例教程-4位数码管显示
4位数码管显示 之前的<Android Things创客DIY第三课-Android Things入门配件包开发案例教程-数码管显示>中,介绍了如何使用Android Things控制1位 ...
- ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区...
原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...
- “音游制作实用插件-Koreographer入门教程”,“Unity2D 音游案例-节奏大师(基于Koreographer)”
看着目录来阅读 第一个是免费视频 音游制作实用插件-Koreographer入门教程) 第二个是siki学院的收费视频 Unity2D 音游案例-节奏大师(基于Koreographer) Demo 音 ...
- kuka机器人焊接编程入门教程_套装 官方正版 KUKA工业机器人从入门到精通 共3册 库卡 基础入门与应用案例精析 编程高级教程 编程与实操技巧...
<KUKA工业机器人基础入门与应用案例精析> 本书基于作者多年与KUKA机器人相关的从业经验来编写,全书共7章,主要围绕KUKA机器人的机械.电气.操作.配置软件.编程软件以及应用等方面展 ...
- python 三分钟入门_Cython 三分钟入门教程
作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
最新文章
- git push 如何同时推送至两个git仓库
- 009_InputNumber计数器
- 中国开封菊花花会照片1
- LeetCode第19题;删除链表的倒数第N个节点
- [转]将Ubuntu默认的邮件客户端Evolution替换为Thunderbird
- POJ - 1847 Tram(最短路)
- 利用Java进行MySql数据库的导入和导出
- mysql bc_正则表达式——MySQL搜索过滤
- html检查输入为空,html input输入验证不为空
- delphi中的函数传参如何传枚举参数_我是这样使用SpringBoot(API传参)
- sklearn 常用模块及类与方法
- QT与opencv(二)开启摄像头
- 网页改成html后缀,自定义网页后缀名-网页后缀名HTML、HTM、SHTml、STHM的区别
- 2-PowerShell 对象,查询操作和格式化
- 论计算机的发展.doc,计算机的发展论文.doc
- StretchBlt()函数
- python随机森林回归_从零实现回归随机森林
- 复杂性思维第二版 三、小世界图
- C语言数字图像处理---1.6图像亮度对比度调节
- c语言里的函数和数学里面的函数有什么区别,计算机函数和数学函数有哪些区别和关系?...
热门文章
- this关键字的使用
- ※版本管理※=☆SVN工具=※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]...
- 一致性哈希算法原理(三)
- 涨薪秘籍之源码篇:Spring全家桶源码解读,大师晋级笔记
- 流水的“互联网老公”,铁打的女性消费
- 网络框架的封装(二)
- 服务器正在维护中王者荣耀s24,王者荣耀s24赛季更新到几点 王者荣耀更新进度条不动了是怎么回事...
- 佛经典籍,奇文共欣赏
- 什么是比特币?它有哪些重要的特征?
- 亚马逊和光环新网破裂_亚马逊光环人体扫描功能不仅危险,而且也没有用