SaltStack入门(二)Grains、NoteGroup和State

开始前须知:

  SLS文件默认使用序列化数据格式-YAML,这个格式风格你要注意的是:不要使用Tab键缩进,通常开头缩进2个空格,字符后缩进1个空格,如冒号、逗号、横杠。

如果执行命令时,忘记语法,可以使用sys.doc模块查询salt模块相关使用方法。

# salt '*' sys.doc disk

如想看执行过程,可加-l debug,如下:

# salt '*' cmd.run 'ls' -l debug

1、执行命令时,查找minion目标(targeting)常用有三种方式:

 salt ‘bash’ command         #根据bash形式匹配主机(如host1、host2)

 例:# salt 'host*' test.ping       

 salt –E ‘RE’ command          #--pcre,使用正则表达式匹配主机  

 例:# salt -E '(web|mysql)' test.ping  

 salt –N group command           #--nodegroup,使用分组匹配,前提已经做好分组

 例:# salt -N web test.ping

 salt –L ‘host1,host2’command     #--list,根据主机名

 例:# salt -L 'host1,host2' test.ping

 salt -G 'os:CentOS' command        #--grains,根据grains获取的信息来查找

Grains是什么?

  grains是minion启动时采集服务器系统信息,运行过程中数据不会发生变化,如操作系统、内核、网卡等一些静态的数据。

Grains相关命令:

列出grains相关模块

# salt '*' grains.ls    

列出minion采集的grains静态数据

# salt '*' grains.items

列出某个grains信息

# salt '*' grains.item os

对grains有了初步了解,现在会用salt –G命令了吧!

# salt -G 'os:Ubuntu' test.ping

2、NodeGroup(minion分组


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# vi /etc/salt/master       #不用重启salt服务,修改后即生效

nodegroups:

  web: 'L@host1'        #以列表形式写,多个主机以逗点分割

  db: 'L@host2'

 

注:也可以使用通配符,如web: 'host*'

   

#测试分组后效果

# salt -N db test.ping

host2:

   True

    

# salt -N web test.ping

host1:

True

3、States(配置管理)

要想启用配置管理功能,首先要对受控端进行设置,让minion以root用户接受主空端管理指令:


1

2

# vi /etc/salt/minion

user: root

开启主控端配置管理功能:


1

2

3

4

# vi /etc/salt/master

file_roots:

  base:

    /srv/salt/               #默认存放管理指令和文件位置

手动创建目录和默认入口配置文件(top.sls)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# mkdir /srv/salt

# cd /srv/salt

# vi top.sls          #使用YAML语言格式定义

base:            #默认的起点配置

 '*':           #匹配所有在线minion,指定组直接写组名

    - web.httpd    #web是默认/srv/salt下目录,http是state文件名字,以sls结尾

 

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

如果想使用分组定义,如下:

base:

  web:       #组名

     - match: nodegroup

     - web.httpd

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

 

# mkdir web

# vi web/httpd.sls      #创建目录或文件名根据自己情况定义

httpd:                  #说明

 pkg:                  #包管理

   -name: apache2           #包名称

- installed               #包的状态,卸载是removed


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

36

# salt '*' state.sls web.httpd    #只执行单个sls文件(/srv/salt/web/httpd.sls)

# salt '*' state.highstate      #给minion永久添加状态,读top关联的sls文件

host1:

----------

         ID: httpd

   Function: pkg.installed

       Name: apache2

     Result: True

    Comment: The following packages were installed/updated: apache2.

    Started: 11:30:40.994840

   Duration: 103211.119 ms

    Changes:  

                  省略.....

Summary

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

Succeeded: 1 (changed=1)

Failed:   0

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

Total states run:     1

host2:

----------

         ID: httpd

   Function: pkg.installed

       Name: apache2

     Result: True

    Comment: The following packages were installed/updated: apache2.

    Started: 11:30:41.458100

   Duration: 122426.802 ms

    Changes:  

                 省略.....

Summary

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

Succeeded: 1 (changed=1)

Failed:   0

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

Total states run:     1

Apache已安装完毕并启动,然后将修改后的配置文件推送到minion(apache服务器),配置文件已修改好,位置在/srv/salt/web/httpd.conf,修改内容是添加个虚拟主机,在httpd.sls添加文件分发信息。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# vi httpd.sls           

httpd:

 pkg:

   -name: apache2

   -installed

 service:

   -name: apache2           #服务脚本名

   -running              #运行状态

   -reload: True           #如watch监控项发生变化,则重新加载配置

   -watch:               #监控文件变化

    file/etc/apache2/httpd.conf

/etc/apache2/httpd.conf:         #分发到minion位置

 file.managed:              #文件管理操作

   -source: salt://web/httpd.conf  #修改好的配置文件位置

   -user: root

   -group: root

   -mode: 644


1

# salt '*' state.sls web.httpd         #再执行下

使用下面命令查看minion服务器apache配置文件已经更新完成:


1

# salt '*' cmd.run 'cat /etc/apache2/httpd.conf'


时间: 2024-09-15 02:09:59

SaltStack入门(二)Grains、NoteGroup和State的相关文章

Kinect for Windows SDK开发入门(二)基础知识 上

上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素.应用程序必须探测和发现链接到设备上的Kinect传感器.在使用这些传感器之前,必须进行初始化,一旦初始化成功后,就能产生数据,我们的程序就能处理这些数据.最后当应用程序关闭是,必须合理的释放这些传感器. 本文第一部分将会介绍如何探测初始化几释放传感器,这是非常基础的话题,但是对于基于Kinect开

Windows 8风格应用开发入门 二十九 捕获图片与视频

一.相机 关于相机 1.相机对话框提供了触屏优化的全屏体验,你可从嵌入的或附加 的相机中捕获照片和视频. 2.全屏对话框处理显示相机 UI 的工作. 3.通过此对话框, 你可以使用对 Windows.Media.Capture.CameraCaptureUI.captureFileAsyncAPI 的一种方法调用捕获 照片或视频. 4.作为捕获体验的一部分,用户可对其捕获的照片进行修剪,对捕获的视频进行 剪辑,然后再将它们返回至调用应用程序. 5.用户在捕获照片或视频前,还可调整一些相机设 置,

Windows 8风格应用开发入门 二十七 漫游应用数据

一.漫游应用数据概览 1.若应用当中使用了漫游应用数据,用户可以很轻松的在不同的设备间保持应用数据的同步. 2.Windows会将更新的漫游数据同步到云端,并将数据更新到其他安装此应用的设备上. 3.Windows 限制了每个应用可漫游的应用数据大小.若我们的应用达到漫游数据大小的限制,在应用的总漫游数据再次少于该限制之前,不会将应用的任何数据更新到云端,因此最好的做法是仅为用户首选项.链接和小型数据文件使用漫游数据. 4.只要用户在所需的时间间隔内从某个设备访问应用的漫游数据,这些数据将存在云

Windows 8风格应用开发入门 二十五 数据绑定

数据绑定是一种简单方式来显示数据,UI元素与数据对象之间的连接或绑定是允许数据在两者之间 流动的.另外建立了绑定且数据发生变化时,相应的UI元素会自动显示变化. 如何将UI元素与 数据进行绑定 开发入门 二十五 数据绑定-windows开发入门"> 从上面图可以知道,每个绑定必须指定一个源和一个目标. 其中源对象可以是任何CLR对象,包括目标元素自身和其他UI元素.目标可以是 FrameworkElement的任何DependencyProperty(依赖属性). 数据绑定引擎从Bindi

Windows 8风格应用开发入门 二十四 App Bar构建

构建应用栏的目的的显示导航.命令和始终隐藏不需要的使用的工具.我们可以把应用栏放在页面 顶部或底部或同时存在顶部和底部. 默认情况在AppBar是隐藏的,当用户单击右键.按下Win+Z .或从屏幕的顶部或底部边缘轻松时可显示或关闭AppBar.当然我们也可以通过编程的方式将AppBar设 置为当用户做选择或与应用交互时显示. 构建AppBar基本步骤 通常我们构建一个应用的 AppBar,只需要三步就可以完成: 开发入门 二十四 App Bar构建-jenkins构建自由风格"> 如何构建

Windows 8风格应用开发入门 二十三 App Bar概述及使用规范

App Bar概述 Windows 8 Store应用中的App Bar(应用程序工具栏)起到的作用和Windows Phone中AppBar一样.我们可以向用户提供各种操作接口,实现导航或者触发命令等. AppBar一 般默认是隐藏的,也可以设置为始终可见.我们可以通过清扫屏幕上边缘或下边缘时显示AppBar, AppBar被点击之后或失去焦点后隐藏,当然我们也可以通过编程方式控制AppBar显示或隐藏. Windows 8 Store应用中通常包含两种AppBar: 1)底部AppBar 底

Windows 8风格应用开发入门 二十二 MessageDialog

MessageDialog概述 MessageDialog指的就是对话框. 对话框的命令栏中最多包含三个命令.如果我们指定任何命令,将会有一个默认命令添加到对话框中,目的是关闭对话框. 对话框弹出后界面中所有元素将在对话框下面显示,并且将会阻塞任何触摸事件直到用户进行响应对话框. 另外对话框应该尽量少用. 注意:Windows 8风格应用中取消了MessageBox对象,取而代之的是MessageDialog对象. MessageDialog常用属性和方法 MessageDialog类包含两类构

AppleWatch开发入门二——界面布局

AppleWatch开发入门二--界面布局 一.简介         在iphone开发中,最基本的布局方式是通过frame,将控件的位置和大小固定在屏幕上,后来,由于手机屏幕的尺寸有了略微变化,有了autoresizing的布局框架,我们可以设置子视图随父视图的改变做一些相应的变化,再后来,iphone的尺寸与分辨率也越来越多,适配各个屏幕也成为了iOS开发者遇到的新的问题,幸运的是,autolayout机制的出现,大大减小了开发者在适配方面的成本.以上提到的两种布局方式,在以前博客中有讨论:

DevExpress XtraReports 入门二 创建 data-aware(数据感知) 报表

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

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问"魔术方法__call()" 用户访问一个不存在的操作->解决:给每个控制器都定义个_empty()方法来处理   第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处