SaltSack入门(三)Salt相关命令和Pillar应用

1.先了解下管理端(master)常用相关命令

 1.1 salt     #主要管理命令

   命令格式:salt [options]  <target> [arguments]

    例:salt ‘*’ test.ping

 1.2 salt-key #证书管理


1

2

3

4

5

    # salt-key –L           #查看所有minion-key

    # salt-key –a  <keys-name>   #接受某个minion-key

    # salt-key –d  <keys-name>   #删除某个minion-key

    # salt-key –A           #接受所有的minion-key

    # salt-key –D           #删除所有的minion-key

 1.3 salt-run #管理minion


1

2

3

4

    # salt-run manage.up           #显示当前活着的minion

    # salt-run manage.down           #显示未存活的minion

    # salt-run manage.status         #显示当前up和down 的minion   

    # salt-run manage.downremovekeys-True   #显示未存活的minion,并将其移除

 1.4 salt-cp #将master文件复制到minion,不支持复制目录

   命令格式:salt-cp [options]<target> SRC DST

   例:salt-cp '*'/root/test.sh  /root/test.sh

 1.5 salt-ssh   

   #通过ssh连接被管理端,被管理端不用安装minion,管理端也不用安装master,salt-ssh是一个独立的包,安装后即可使用saltstack大部分功能,没有通讯机制ZeroMQ,命令执行速度会下降。一般没有客户端没有安装minion时候才考虑先用salt-ssh批量安装minion。

   # apt-get install salt-ssh sshpass   #salt-ssh用的sshpass进行密码交互,必须要安装

   1.5.1 salt-ssh常用参数

    -r,-raw-shell :执行shell命令  

    --key-deploy   :配置keys

    -i,-ignore-host-keys  :当ssh连接时,忽略keys

     -passwd      :指定默认密码

     -roster-file   :指定roster文件

   1.5.2 salt-ssh使用

    1.5.2.1 sat-ssh通过调用roster配置文件实现,所以先定义roster,让salt-ssh生效,就可以执行操作了


1

2

3

4

5

6

7

    # vi /etc/salt/roster

    db:

      host: 192.168.18.212

      user: root

      passwd: 123456

      port: 22

      timeout: 10

    1.5.2.1 测试


1

2

3

    # salt-ssh 'db' test.ping

    db:

        True

    1.5.2.3 执行shell命令及salt本身的模块

    #第一次运行时会提示是否接受秘钥,如果不想再提示可以加入—key-deploy参数


1

2

3

    # salt-ssh 'db' -r 'uptime'     

    # salt-ssh 'db' disk.usage          #调用salt本身的模块

    # salt-ssh 'db' grains.itemcpu_model   #获取grains信息

2、Pillar

 上节讲过Salt State,Salt状态系统的核心SLS,也可叫做配置管理,SLS描述了系统的目标状态,由简单的格式来包含这些数据。

 Pillar是Salt最重要的系统之一,可用于提供开发接口,用于在master端定义数据,然后再minion中使用,一般传输敏感的数据,例如ssh key,加密证书等。

 pillar和states建立方式类似,由sls文件组成,有一个入口文件top.sls,通过这个文件关联其他sls文件,默认路径在/srv/pillar,可通过/etc/salt/master里面pillar_roots:指定位置。

 pillar到底什么作用呢?那么下面介绍一个简单的例子,你就明白了。

 用zabbix监控新上架的服务器(10台),需要将zabbix_agentd.conf分发到被监控主机,这个文件中hostname的ip每台都不同,我们不可能写10分配置文件吧!那么如何让hostname在分发的时候就根据被监控主机IP,修改成自己的呢?这时就用到渲染了,默认渲染器是jinja,支持for in循环判断,格式是{%...%}{% end* %},这样一来salt会先让jinja渲染,然后交给yaml处理。

 2.1 创建pillar目录和top.sls文件


1

2

3

4

5

 # mkdir /srv/pillar

 # vi /srv/pillar/top.sls

 base:

   '*':

 - ip

 2.2 先通过pillar获取minion主机IP


1

2

 # vi /srv/pillar/ip.sls

 ip: {{ grains['ipv4'][1] }}

 #写完后,执行sls命令,可以看到已经获取到IP


1

2

3

4

5

6

7

8

9

 # salt '*' pillar.item ip

 host2:

     ----------

     ip:

         192.168.18.213

 host1:

     ----------

     ip:

         192.168.18.212

 2.3 随后写个sate文件,将文件分发到minion上


1

2

3

4

5

6

7

8

9

 # mkdir /srv/salt/zabbix

 # vi /srv/salt/zabbix/agentd_conf.sls

 zabbix:

   file.managed:

     source: salt://zabbix/zabbix_agentd.conf

     - name: /usr/local/zabbix/conf/zabbix_agentd.conf

     - template: jinja

     - defaults:

      ip: {{ pillar['ip'] }}

 2.4 修改zabbix_agentd.conf要渲染的IP


1

2

3

4

5

 # vi /srv/salt/zabbix/zabbix_agentd.conf

 LogFile=/tmp/zabbix_agentd.log

 Server=192.168.18.214

 ServerActive=127.0.0.1

 Hostname={{ ip }}

 2.5 执行单sls命令,不用将sls文件关联到top.sls文件                         


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

 # salt '*' state.sls zabbix.agentd_conf

 host1:

 ----------

           ID: zabbix

     Function: file.managed

         Name:/usr/local/zabbix/conf/zabbix_agentd.conf

        Result: True

       Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state

      Started: 11:48:35.261683

     Duration: 139.733 ms

      Changes:  

  

 Summary

 ------------

 Succeeded: 1

 Failed:    0

 ------------

 Total states run:     1 

 host2:

 ----------

          ID: zabbix

    Function: file.managed

        Name:/usr/local/zabbix/conf/zabbix_agentd.conf

      Result: True

     Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state

     Started: 11:31:41.906766

    Duration: 141.928 ms

     Changes:  

  

 Summary

 ------------

 Succeeded: 1

 Failed:    0

 ------------

 Total states run:     1

 #这时再通过命令查看,已经更新成功


1

2

3

4

5

6

7

8

9

10

11

 # salt '*' cmd.run 'cat/usr/local/zabbix/conf/zabbix_agentd.conf'      

 host1:

    LogFile=/tmp/zabbix_agentd.log

    Server=192.168.18.214

    ServerActive=127.0.0.1

    Hostname=192.168.18.212

 host2:

    LogFile=/tmp/zabbix_agentd.log

    Server=192.168.18.214

    ServerActive=127.0.0.1

    Hostname=192.168.18.213

pillar相关命令:

#刷新pillar数据到minion

# salt "*" saltutil.refresh_pillar

#查看所有pillar信息

# salt "*" pillar.items

#查看某个pillar信息

# salt "*" pillar.item ip

既然grains与pillar类似,就说下区别:

1.grains是minion每次加载时获取本地系统信息数据,是静态的,固定的,而pillar是动态加载数据,随时变化的,比grains更灵活。

2.grains数据存储在minion本地,pillar存储在master。

时间: 2016-05-06
Tags: SSH, salt, pillar

SaltSack入门(三)Salt相关命令和Pillar应用的相关文章

轻松入门Android直播相关技术 从0搭建直播系统

本文讲的是轻松入门Android直播相关技术 从0搭建直播系统,我立马实践了下,所以首先给大家分享下整个搭建的流程: 本人的操作系统为mac,其他系统的同学可以根据提示,自行安装软件. 一个简易的直播系统,大致可以由三部分组成: 搭建一个rtmp媒体服务器 推流端 拉流端 现在目标是快速搭建起来,所以当然是借助开源项目和一些软件: rtmp媒体服务器:这里使用srs 推流端:这里使用obs 拉流端:这里使用播放器vlc rtmp媒体服务器的搭建 这里使用srs,srs的链接为: https://

AppleWatch开发入门三——代码交互与控制器生命周期

AppleWatch开发入门三--代码交互与控制器生命周期 一.引言         在前两篇博客中,讨论了关于watch开发中框架与界面布局相关,然而主要的逻辑,终究还是要通过代码来实现的,在我们创建了项目之后,就会生成InterfaceController这个文件,它就是我们storyBoard中的入口视图控制器. 二.代码交互与控制器声明周期         storyBoard中的控件我们可以通过拖拽的方式关联到文件中,Action和Outlet两种关联方式基本可以达到我们修改控件和处理

linux网络配置相关命令、虚拟网络接口eth0:0

网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口是 pppX,比如ppp0等:  机器中所有可用网卡.名字.配置文件:  dmesg | grep eth :可以看到系统启动时,网卡启动的信息及相应网卡的名字,然后就可以手动添加相应的/etc/sysconfig/network-scripts/ifcfg-ethX文件对网卡进行配置 ifconf

Windows 8风格应用开发入门 三十五 触控输入

Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击. 拖动或收缩等手势操作.另外Windows 8中将触摸.鼠标和笔/触笔交互是作为指针输入进行接收.处理 和管理. 一.手势处理 首先我们来汇总一下Windows 8中常用的手势都有哪些. 开发入门 三十五 触控输入-windows10触控板手势"> 1,点击:用一个手指触摸屏幕,然后抬起手指. 2,长按:用一个手指触摸屏幕并保持不动 . 3,滑动:用一个或多个手指触摸屏幕并向着同一方向移动. 4

Windows 8风格应用开发入门 三十一 构建磁贴

磁贴是吸引用户经常使用应用重要手段之一.我们可将应用程序内较好的内容使用磁贴进行展示. 另外应用程序磁贴是应用程序中的核心部分,而且很可能也是用户最常见到的部分,因此利用 动态磁贴来吸引用户经常使用我们的应用程序! 开发入门 三十一 构建磁贴-磁贴风格"> 本篇博文主要介绍如何创建基本磁贴(也就是默认磁贴)以及如何使用本地通知更新磁贴. 一.创建基本磁贴 基本磁贴也可以叫做默认磁贴.通常我们点击基本磁贴来启动或者切换应用 . 我们可以在应用程序清单文件中设置默认的静态磁贴,并且该静态磁贴分

Windows 8风格应用开发入门 三十 应用生命周期管理

开发入门 三十 应用生命周期管理-风格型产品生命周期"> Windows 8 中可以启动多个应用并在其中切换,我们没有必要担心降低系统速 度或消耗电池电量. 因为系统会自动挂起(有时会终止)在后台正在运行的应用.设计良好的应用可 以由系统挂起.终止以及重新启动,并且这些过程看起来该应用一直在运行中. 一.原理 1.当激活了应用时,无论任何原因,系统都会发送 Activated 事件 2.每当用户切换到桌面 或其他应用时,系统都会挂起你的应用,系统会发送Suspending事件 3.每当用户

Windows 8风格应用开发入门 三 打包发布应用

如何打包Windows 8风格应用程序呢? 首先我们需要使用Windows 8内置Administrator账户才能进行打包,若使用本地普通账户或者Hotmail账号是无法正常打包的. 那么我们如何启用内置的Administrator账户呢?步骤如下: 1) 打开控制面板: 2) 打开管理工具: 3) 打开计算机管理: 4) 在系统工具中打开"本地用户和组": 5) 打开用户文件夹: 6) 选择Administrator: 7) 在Administrator属性中"账户已禁用

Linux组、用户、权限相关命令练习

任务要求 研发部开发人员David和Peter属于组A: 行政部人员Jack 和Mike属于组B: 1.建立共享目录"/project_a",该目录里面的文件只能由 研发部开发人员读取.增加.删除.修改以及执行,其他用户不能对该目录进行 任何的访问操作: 2.建立目录"/project_b",该目录里面的文件只能由行 政部人员读取.增加.删除.修改以及执行,其他用户不能对该目录进行任何的 访问操作: 3.建立目录"/project",该目录里面的

DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表

原文:DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 一.添加从表  启动 MS Visual Studio (2005.2008.或 2010). 打开有数据感知报表的