当前位置: 首页 > 工具软件 > Saltstack > 使用案例 >

saltstack使用指南:saltstack组件之pillar

劳华灿
2023-12-01

saltstack组件

1. grains
2. pillar
3. state 

一、saltstack组件之pillar

1.什么是pillar?    
Pillar是在salt 0.9.8版本后才添加的功能组件。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。在Salt的设计中,Pillar使用独立的加密sessiion,所以Pillar可以用来传递敏感的数据,例如ssh-key,加密证书等。

2.查询pillar模块的操作命令:
[root@salt-master ~]# salt '*' sys.list_functions pillar
izwz9f8xrvty50quc2gq50z:
    - pillar.data
    - pillar.ext
    - pillar.get
    - pillar.item
    - pillar.items
    - pillar.raw

3.查询pliiar模块操作命令的用法:
[root@salt-master ~]# salt '*' sys.doc pillar.item
'pillar.item:'

New in version 0.16.2

Return one or more pillar entries

pillar : none
    if specified, allows for a dictionary of pillar data to be made
    available to pillar and ext_pillar rendering. these pillar variables
    will also override any variables of the same name in pillar or
    ext_pillar.

    New in version 2015.5.0

CLI Examples:

    salt '*' pillar.item foo
    salt '*' pillar.item foo bar baz


4.pillar相关的基本命令
[root@salt-master ~]# salt '*' pillar.items
izwz9f8xrvty50quc2gq50z:
    ----------
iZbp150ikdomqe3b32qaubZ:
    ----------
[root@salt-master ~]# salt '*' pillar.item foo
izwz9f8xrvty50quc2gq50z:
    ----------
iZbp150ikdomqe3b32qaubZ:
    ----------

5.设置pillar数据   

1.默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。
[root@salt-master srv]# vi /etc/salt/master
pillar_opts: True 

2.修改salt-master配置文件,设置pillar的roots目录,重启salt-master
[root@salt-master srv]# vi /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar

[root@salt-master srv]# /bin/systemctl restart salt-master.service
[root@salt-master srv]# mkdir  /srv/pillar

3.pillar的配置设定在/srv/pillar目录下,使用Pillar须有/srv/pillar/top.sls文件

[root@salt-master pillar]# tree
.
├── os_test.sls
├── test.sls
└── top.sls

[root@salt-master pillar]# vi top.sls 
base:
  '*':
    - test
    - os_test

[root@salt-master pillar]# vi test.sls 
info: test_data

[root@salt-master pillar]# vi os_test.sls 
{% if grains['os_family'] == 'RedHat' %}
www_root: /var/www
{% elif grains['os_family'] == 'Debian' %}
www_root: /var/data
{% endif %}

执行结果如下:
[root@salt-master pillar]# salt '*' pillar.items info
izwz9f8xrvty50quc2gq50z:
    ----------
    info:
        test_data
iZbp150ikdomqe3b32qaubZ:
    ----------
    info:
        test_data

[root@salt-master pillar]# salt '*' pillar.items www_root
izwz9f8xrvty50quc2gq50z:
    ----------
    www_root:
        /var/www
iZbp150ikdomqe3b32qaubZ:
    ----------
    www_root:
        /var/www

注:在master上修改Pilla文件后,需要用以下命令刷新minion上的数据
[root@salt-master pillar]# salt '*' saltutil.refresh_pillar

6. 同一参数根据系统的不同,设置为不同的参数值

下面我们使用Pillar在不同的系统采用不同的命令创建用户zhangjunchao。

[root@salt-master srv]# tree
.
├── pillar
│   ├── top.sls
│   └── useradd.sls
└── salt
    └── useradd.sls

2 directories, 3 files
[root@salt-master srv]# vi pillar/top.sls 
base:
  '*':
    - useradd

[root@salt-master srv]# vi pillar/useradd.sls 
useradd:  
  {% if grains['os'] == 'CentOS' %}  
  name: useradd zhangjunchao ; echo '123456aa' | passwd --stdin zhangjunchao  
  {% elif grains['os'] == 'SUSE' %}  
  name: useradd -m zhangjunchao ;echo '123456aa' | passwd --stdin zhangjunchao; passwd -x 9999 zhangjunchao  
  {% endif %}  

[root@salt-master srv]# vi salt/useradd.sls 
useradd:  
  cmd.run:  
    - name: {{ pillar['useradd']['name'] }}  
    - unless: id hyxc    #做判断,只有hyxc用户不存在的时候才执行

[root@salt-master srv]# salt '*' state.sls useradd
 类似资料: