saltstack最最基础的东西(grains,pillar)

1、grains组件:

Grains是SaltStack的一个组件,存放在SaltStack的minion端。 当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。 由于grains是静态数据,因此不推荐经常去修改它。

应用场景:

  • 信息查询,可用作CMDB。
  • 在target中使用,匹配minion。
  • 在state系统中使用,配置管理模块。

信息查询:

用于查询minion端的IP、FQDN等信息
默认可用的grains:
     salt '*' grains.ls	
查看每一项的值:    
    salt '*' grains.items
取单项的值:
    salt server2 grains.item ipv4
    salt server2 grains.item fqdn

自定义grains项:

vim /etc/salt/minion
  grains:
    roles:
      - apache
      - httpd
systemctl restart salt-minion
vim /etc/salt/grains
    deployment:  datacenter1
同步数据:
    salt server3 saltutil.sync_grains
查询自定义项:
    salt server3 grains.item deployment

编写grains模块:

mkdir /srv/salt/_grains
vim /srv/salt/_grains/my_grain.py
    def my_grain()
        grains = {}
        grains['roles'] = nginx
        grains['hello'] = 'world'
        return grains
#同步grains到minion端
    salt '*' saltutil.sync_grains	

在top文件中匹配

vim /srv/salt/top.sls
    base:
        'server3':
          - match: grain    
          - apache.install

2、pillar组件

pillar和grains一样也是一个数据系统,但是应用场景不同。 pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。 pillar更加适合在配置管理中运用

声明pallar

vim /etc/salt/master
  pillar_roots:
    base:
      - /srv/pillar
systemctl restart salt-master
mkdir /srv/pillar

自定义pallar项

vim /srv/pillar/top.sls
  base:
    '*':
      - packages

vim /srv/pillar/apache.sls
  {% if grains['fqdn'] == 'server3' %}
  package: httpd
  {% elif grains['fqdn'] == 'server2' %}
  package: mairadb
  {% endif %}
刷新pillar数据:
  salt '*' saltutil.refresh_pillar
查询pillar数据:
  salt '*' pillar.items
  salt '*' grains.item  roles

pillar数据匹配

命令行中匹配:
  salt -I 'roles:apache' test.ping

state系统中使用:
  vim /srv/salt/apache.sls
    apache:
      pkg.installed:
        - name: {{ pillar['package'] }}

3、jinja模版

Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作

通过jinja模板可以为不同服务器定义各自的变量。
两种分隔符: {% ... %} 和 {{ ... }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上

Jinja最基本的用法是使用控制结构包装条件:

vim /srv/salt/test.sls
/mnt/testfile:
  file.append:
    {% if grains['fqdn'] == 'server2' %}
    - text: server2
    {% elif grains['fqdn'] == 'server3' %}
    - text: server3
    {% endif %}

Jinja在普通文件的使用:

vim /srv/salt/apache.sls
/etc/httpd/conf/httpd.conf:
  file.managed:
  - source: salt://httpd.conf
  - template: jinja
  - context:
    bind: 172.25.27.1

jinjia模版的使用方式:

import方式,可在state文件之间共享:
定义变量文件:
    vim lib.sls
        {% set port = 80 %}
        导入模板文件:
    vim httpd.conf
        {% from 'lib.sls' import port %}
        ...
        Listen {{ prot }}		

引用变量:

直接引用grains变量:
    Listen {{ grains['ipv4'][1] }}

直接引用pillar变量:
    Listen {{ pillar['ip'] }}

在state文件中引用:
    - template: jinja
        - context:
          bind: {{ pillar['ip'] }}

4、JOB

job是指master在下发任务的时候的任务jid,minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。指令执行完毕将结果传送给master后,删除该临时文件。

我们可以将job保存到数据库中去。

默认job cache:

Job缓存默认保存24小时:
  vim /etc/salt/master
    keep_jobs: 24

master端Job缓存目录:
    /var/cache/salt/master/jobs

job管理方法

查看所有minion当前正在运行的jobs(在所有minions上运行saltutil.running)
    salt-run jobs.active

列出当前master jobs cache中所有job
    salt-run jobs.list_jobs

从master jobs cache中查询指定jid的运行结果
    salt-run jobs.lookup_jid <jid>

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值