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. 阿里云学生服务器购买以及使用入门教程(附案例学习)

    最新版本的阿里云学生服务器该名称为:轻量应用服务器 虽然改名字了,但是还是以前的阿里云学生服务器.这次不仅改名称了,价格降低了(以前是1年114元,现在是1年96元),配置也更好了(以前配置是1核2G ...

  2. 微信小程序入门教程+案例demo

    微信小程序入门教程+案例demo 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 首先摆在好姿态,--微信小程序开发也就那么回事.你只需要 ...

  3. Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解

    Flowable 快速入门教程:Flowable 入门开发案例,结合流程设计器详细讲解 前言 流程设计器集成 整体流程图 流程节点说明 第一审核人节点:实际设置审核人 配置信息 说明 第二审核人:参数 ...

  4. Android Things创客DIY第六课-Android Things入门配件包开发案例教程-4位数码管显示

    4位数码管显示 之前的<Android Things创客DIY第三课-Android Things入门配件包开发案例教程-数码管显示>中,介绍了如何使用Android Things控制1位 ...

  5. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区...

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  6. “音游制作实用插件-Koreographer入门教程”,“Unity2D 音游案例-节奏大师(基于Koreographer)”

    看着目录来阅读 第一个是免费视频 音游制作实用插件-Koreographer入门教程) 第二个是siki学院的收费视频 Unity2D 音游案例-节奏大师(基于Koreographer) Demo 音 ...

  7. kuka机器人焊接编程入门教程_套装 官方正版 KUKA工业机器人从入门到精通 共3册 库卡 基础入门与应用案例精析 编程高级教程 编程与实操技巧...

    <KUKA工业机器人基础入门与应用案例精析> 本书基于作者多年与KUKA机器人相关的从业经验来编写,全书共7章,主要围绕KUKA机器人的机械.电气.操作.配置软件.编程软件以及应用等方面展 ...

  8. python 三分钟入门_Cython 三分钟入门教程

    作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...

  9. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

最新文章

  1. git push 如何同时推送至两个git仓库
  2. 009_InputNumber计数器
  3. 中国开封菊花花会照片1
  4. LeetCode第19题;删除链表的倒数第N个节点
  5. [转]将Ubuntu默认的邮件客户端Evolution替换为Thunderbird
  6. POJ - 1847 Tram(最短路)
  7. 利用Java进行MySql数据库的导入和导出
  8. mysql bc_正则表达式——MySQL搜索过滤
  9. html检查输入为空,html input输入验证不为空
  10. delphi中的函数传参如何传枚举参数_我是这样使用SpringBoot(API传参)
  11. sklearn 常用模块及类与方法
  12. QT与opencv(二)开启摄像头
  13. 网页改成html后缀,自定义网页后缀名-网页后缀名HTML、HTM、SHTml、STHM的区别
  14. 2-PowerShell 对象,查询操作和格式化
  15. 论计算机的发展.doc,计算机的发展论文.doc
  16. StretchBlt()函数
  17. python随机森林回归_从零实现回归随机森林
  18. 复杂性思维第二版 三、小世界图
  19. C语言数字图像处理---1.6图像亮度对比度调节
  20. c语言里的函数和数学里面的函数有什么区别,计算机函数和数学函数有哪些区别和关系?...

热门文章

  1. this关键字的使用
  2. ※版本管理※=☆SVN工具=※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]...
  3. 一致性哈希算法原理(三)
  4. 涨薪秘籍之源码篇:Spring全家桶源码解读,大师晋级笔记
  5. 流水的“互联网老公”,铁打的女性消费
  6. 网络框架的封装(二)
  7. 服务器正在维护中王者荣耀s24,王者荣耀s24赛季更新到几点 王者荣耀更新进度条不动了是怎么回事...
  8. 佛经典籍,奇文共欣赏
  9. 什么是比特币?它有哪些重要的特征?
  10. 亚马逊和光环新网破裂_亚马逊光环人体扫描功能不仅危险,而且也没有用