saltstack2 grains模块

###Grains模块:###


grains的应用场景:

1、信息查询

2、在远程执行里面匹配minion

比如我想要在所有centos的机器上执行一个命令

3、在top.sls里面匹配minion

4、在配置文件的模板里使用

1、信息查询

###把所有grains的key列出来,grains支持的所有模块

[[email protected]_master ~]# salt ‘minion.saltstack.com‘ grains.ls

minion.saltstack.com:

- SSDs

- cpu_flags

- cpu_model

- cpuarch

- domain

- fqdn

- fqdn_ip4

- fqdn_ip6

- gpus

- host

- hwaddr_interfaces

- id

- init

- ip4_interfaces

- ip6_interfaces

- ip_interfaces

- ipv4

- ipv6

- kernel

- kernelrelease

- locale_info

- localhost

- lsb_distrib_codename

- lsb_distrib_id

- lsb_distrib_release

- master

- mdadm

- mem_total

- nodename

- num_cpus

- num_gpus

- os

- os_family

- osarch

- oscodename

- osfinger

- osfullname

- osmajorrelease

- osrelease

- osrelease_info

- path

- ps

- pythonexecutable

- pythonpath

- pythonversion

- saltpath

- saltversion

- saltversioninfo

- selinux

- server_id

- shell

- virtual

- zmqversion

##把所有grains的内容显示出来

[[email protected]_master ~]# salt ‘minion.saltstack.com‘ grains.items

minion.saltstack.com:

----------

SSDs:

cpu_flags:

- fpu

- vme

- de

- pse

- tsc

- msr

- pae

- mce

- cx8

- apic

- sep

- mtrr

- pge

- mca

- cmov

- pat

- pse36

- clflush

- dts

- mmx

- fxsr

- sse

- sse2

- ss

- syscall

- nx

- pdpe1gb

- rdtscp

- lm

- constant_tsc

- up

- arch_perfmon

- pebs

- bts

- xtopology

- tsc_reliable

- nonstop_tsc

- aperfmperf

- unfair_spinlock

- pni

- pclmulqdq

- ssse3

- fma

- cx16

- pcid

- sse4_1

- sse4_2

- x2apic

- movbe

- popcnt

- tsc_deadline_timer

- aes

- xsave

- avx

- f16c

- rdrand

- hypervisor

- lahf_lm

- abm

- ida

- arat

- epb

- xsaveopt

- pln

- pts

- dts

- fsgsbase

- bmi1

- avx2

- smep

- bmi2

- invpcid

cpu_model:

Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz

cpuarch:

x86_64

domain:

saltstack.com

fqdn:

minion.saltstack.com

fqdn_ip4:

- 10.20.23.124

fqdn_ip6:

gpus:

|_

----------

model:

SVGA II Adapter

vendor:

unknown

host:

minion

hwaddr_interfaces:

----------

eth1:

00:0c:29:6e:29:0d

lo:

00:00:00:00:00:00

id:

minion.saltstack.com

init:

upstart

ip4_interfaces:

----------

eth1:

- 10.20.23.124

lo:

- 127.0.0.1

ip6_interfaces:

----------

eth1:

- fe80::20c:29ff:fe6e:290d

lo:

- ::1

ip_interfaces:

----------

eth1:

- 10.20.23.124

- fe80::20c:29ff:fe6e:290d

lo:

- 127.0.0.1

- ::1

ipv4:

- 10.20.23.124

- 127.0.0.1

ipv6:

- ::1

- fe80::20c:29ff:fe6e:290d

kernel:

Linux

kernelrelease:

2.6.32-431.el6.x86_64

locale_info:

----------

defaultencoding:

UTF8

defaultlanguage:

zh_CN

detectedencoding:

UTF-8

localhost:

salt_minion

lsb_distrib_codename:

Final

lsb_distrib_id:

CentOS

lsb_distrib_release:

6.5

master:

salt_master

mdadm:

mem_total:

474

nodename:

salt_minion

num_cpus:

1

num_gpus:

1

os:

CentOS

os_family:

RedHat

osarch:

x86_64

oscodename:

Final

osfinger:

CentOS-6

osfullname:

CentOS

osmajorrelease:

6

osrelease:

6.5

osrelease_info:

- 6

- 5

path:

/sbin:/usr/sbin:/bin:/usr/bin

ps:

ps -efH

pythonexecutable:

/usr/bin/python2.6

pythonpath:

- /usr/bin

- /usr/lib64/python26.zip

- /usr/lib64/python2.6

- /usr/lib64/python2.6/plat-linux2

- /usr/lib64/python2.6/lib-tk

- /usr/lib64/python2.6/lib-old

- /usr/lib64/python2.6/lib-dynload

- /usr/lib64/python2.6/site-packages

- /usr/lib/python2.6/site-packages

pythonversion:

- 2

- 6

- 6

- final

- 0

saltpath:

/usr/lib/python2.6/site-packages/salt

saltversion:

2015.5.10

saltversioninfo:

- 2015

- 5

- 10

- 0

selinux:

----------

enabled:

True

enforced:

Permissive

server_id:

748666745

shell:

/bin/bash

virtual:

VMware

zmqversion:

3.2.5

####想查看某一项的,把items改为单数item,并在后面加上某一项的名称:

[[email protected]_master ~]# salt ‘minion.saltstack.com‘ grains.item os

minion.saltstack.com:

----------

os:

CentOS

####get参数:相对于items,get只显示值的内容

[[email protected]_master ~]# salt ‘minion.saltstack.com‘ grains.get os

minion.saltstack.com:

CentOS

2、在远程执行里面匹配minion

比如我想要在所有centos的机器上执行一个命令

[[email protected]_master ~]# salt --help |grep grain

-G, --grain         Instead of using shell globs to evaluate the target

use a grain value to identify targets, the syntax for

the target is the grain key followed by a

--grain-pcre        Instead of using shell globs to evaluate the target

use a grain value to identify targets, the syntax for

the target is the grain key followed by a pcre regular

[[email protected]_master ~]# salt -G ‘os:CentOS‘ test.ping         ##-G表示使用grains进行匹配,,参数必须紧跟salt

minion.saltstack.com:

True

minion1.saltstack.com:

True

[[email protected]_master ~]# salt -G ‘fqdn:minion.saltstack.com‘ test.ping

minion.saltstack.com:

True

[[email protected]_master ~]# salt ‘minion.saltstack.com‘ grains.get fqdn   ###反查minion.saltstack.com的fqdn,用来定位

minion.saltstack.com:

minion.saltstack.com

所以通过grains插件可以实现在什么条件的机器侠执行一条相同的命令,都可以通过grains进行匹配。

若是内置的grains满足不了我们的需求,,我们也可以自定义grains,,通过在minion端修改配置文件的方式来自定义grains

###minion端###

[[email protected]_minion ~]# vim /etc/salt/minion    ####切到文件结尾

grains:

roles: nginx

env: prod

[[email protected]_minion ~]# /etc/init.d/salt-minion restart

Stopping salt-minion daemon:                               [确定]

Starting salt-minion daemon:                               [确定]

[[email protected]_master ~]# salt -G ‘env:prod‘ test.ping

minion.saltstack.com:

True                        ###成功匹配

[[email protected]_master ~]# salt -G ‘roles:nginx‘ test.ping

minion.saltstack.com:

True

若是感觉grains写在minion配置文件里不方便,,也可以写在/etc/salt/grains文件下

前提是和配置文件里的不能冲突

###区别:加入到配置文件/etc/salt/minion上面必须指明为grains,,第二种方法为在/etc/salt/下创建一个名为grains的文件,不指明grains,直接写就好###

[[email protected]_minion ~]# vim /etc/salt/grains

cloud: openstack

[[email protected]_minion ~]# /etc/init.d/salt-minion restart            #####添加完后必须重启

Stopping salt-minion daemon:                               [确定]

Starting salt-minion daemon:                               [确定]

[[email protected]_minion ~]# cat /etc/salt/grains

cloud: openstack

[[email protected]_minion ~]# tail /etc/salt/minion

#

mysql.host: ‘10.20.23.209‘

mysql.user: ‘salt‘

mysql.pass: ‘salt‘

mysql.db: ‘salt‘

mysql.port: 3306

grains:

role: nginx

env: prod

###匹配一下:

[[email protected]_master ~]# salt -G ‘cloud:openstack‘ test.ping

minion.saltstack.com:

True

###使用salt ‘*‘ saltutil.sync_grains刷新grains,就不需要minion端重启,测试:####

[[email protected]_minion ~]# vim /etc/salt/grains

cloud: openstack

test: salt              ###添加了这一行,保存退出,不重启minion端

###切到master端###

[[email protected]_master ~]# salt ‘*‘ saltutil.sync_grains

minion.saltstack.com:

minion1.saltstack.com:

[[email protected]_master ~]# salt -G ‘test:salt‘ test.ping

minion.saltstack.com:

True

3、在top.sls里面匹配minion

[[email protected]_master ~]# vim /srv/salt/top.sls    ###切到最后,添加如下内容:

‘role:nginx‘:

- match: grain

- init.pkg

[[email protected]_master ~]# cat /srv/salt/top.sls

base:

‘(minion|minion1).saltstack.com‘:

- match: pcre

- init.pkg

- init.limit

#  ‘role:nginx‘:

#    - match: grain

#    - init.pkg              ###先注释掉,注释用#号,知道写法即可

时间: 2024-10-02 22:27:55

saltstack2 grains模块的相关文章

saltstack grains模块自定义

简单来说grains就是收集客户端的静态信息,然后返回给服务端,但是只有重启了salt-minion,客户端采取会去收集东西. 1.先看默认都有哪些信息.salt '*' grains.items显示所有. 可以看到很多客户端的相关信息,但是有时候我们需要自己自定义去收集信息,那么我们就要自己去定义这个模板了.举一个收集客户端ulimit -n的例子. 步骤 1.vim /etc/salt/master file_roots: base: - /srv/salt/ 2.建立自定义模块: cd /

自动化运维Saltstack系列(三)之YAML和自定义Grains、Pillar

先来看看Saltstack的配置文件 Master [[email protected] ~]# vim /etc/salt/master Minion [[email protected] ~]# vim /etc/salt/minion 两者里面的配置项大同小异,其中master是我们需要重点配置的对象 大部分配置都可以保持默认无需改动,在部署大规模Saltstack环境需要自定义一些参数的时候才需要根据实际需求修改:其中一些比较重要的配置项: publish_port: 4505 # Sa

【2】Saltstack handbook:Grains and Pillar

写在前面的话 上一节谈及了 Saltstack 的安装和初始化配置,本节将谈谈 Saltstack 中两个重要的东西,Grains 和 Pillar. 数据系统 Grains 入门 Grains 是静态数据,其数据来源于 Minion 启动的时候收集的有关客户端本地的相关信息. 包括操作系统,内核,CPU,内存,硬盘,设备型号等等.这就意味着我们可以使用 Saltstack 做资产管理. 这些静态数据除非是  Minion 重启或者 Master 端主动同步更新,否则不会改变. 1. 查看 gr

saltstack知识点

1 file server configuration salt有一个用ZeroMQ编写的高性能文件服务,它可以用很小的负载快速管理大量的文件.salt的文件服务是一个感知环境(environment aware)的文件服务,什么是环境感知?就是文件可以被分配在多个根目录下,可以在访问时指定文件路径和搜索路径.独特的环境可以跨越多个根目录覆盖,并以灵活的方式来组织文件.  salt默认的文件服务强制使用base环境,这个base环境必须被定义,当没有写明环境定义的时候,就是从这个base环境下载

Saltstack的API接口与调用方式

saltstack看起来是成为一个大规模自己主动化运维和云计算管理的一个框架,类似于SDK,并非像puppet仅仅成为一个工具.基于良好设计的API和清楚的思路,让salt的二次开发变得非常easy.写非常少的代码就能够将salt跟现有的运维系统结合.saltstack是用python语言实现的,假设对saltstack本身进行二次开发,就必须得会python语言. Saltstack是通过多个独立的模块构成的,这些都能够当做saltstack的api.然后在上层做基础开发能够通过调用这些sal

saltstack学习笔记4-Grains

Grains是saltstack记录minion静态信息的一个组件,我们可以简单地理解为Grains里面记录着每台Minion的一些常用属性,比如CPU.内存.磁盘.网络信息等,我们可以通过grains.items查看某台Minion的所有Grains信息,Minions的Grains信息是Minions启动的时候采集汇报给Master的,在实际应用环境中我们需要根据自己的业务需求去自定义一些Grains. 定义minion有三种方式: minion端通过配置文件定义 minion端通过模块定义

saltstack从简单到入门详解(二)

六.grains使用以及cmd.run grains.items主要用来收集minion端的信息,方便进行信息采集,后续的pillar使用,根据硬件信息自动匹配配置文件等,基本用法: #salt "*" grains.ls            #显示所有minion的item #salt "*" grains.items         #显示所有minion的item值 #salt "*" grains.item osshell   #显示o

优云实践:巧用Salt,实现CMDB配置自动发现

随着互联网+新形势的发展,越来越多的企业步入双态(稳敏双态)IT时代,信息化环境越来越复杂,既有IOE三层架构,也有VCE.Openstack等云虚拟化架构和互联网化的分布式大数据架构.所以,企业急需建立一套合适的配置管理库(CMDB),像人类"大脑"一样统一存储从基础架构到业务应用各层面的配置信息,以便协调"身体"(运维系统)各部分完成复杂的运维工作. CMDB如此重要,但又是运维中最难建设好的部分,就连很多IT运维界大佬都感叹CMDB是运维人的最痛点,他们总结C

Saltstack的sls(7)

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots:    base:      - /srv/salt    dev:     - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vi