saltstack的pillar定义以及使用

本文介绍Salt Stack中的Pillar组件,解释如何使用Pillar为特定Minion定义配置数据,并展示如何根据不同条件自定义配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。这里可以看出Pillar的一个特点,Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。 另外还可以在Pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在State中引用等。

定义pillar数据

默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。默认如下:

#pillar_opts: True 

master上配置文件中定义pillar_roots,用来指定pillar的数据存储在哪个目录

pillar_roots:
   base:
    - /srv/salt/pillar 

首先,和state系统一样,pillar也是需要一个top.sls文件作为一个入口,用来指定对象。

base:
  '*':
    - pillar #这里指定了一个pillar模块 

pillar.sls文件:

############IDC################
{% if grains['ip_interfaces'].get('eth0')[0].startswith('10.10') %}
nameservers: ['10.10.9.31','10.10.9.135']
zabbixserver: ['10.10.9.234']
{% else %}
nameservers: ['10.20.9.75']
zabbixserver: ['10.20.9.234']
{% endif %}

######## nginx ########
ngx_home_dir: /var/cache/nginx 

上文的IDC这块是我自己整理的通过ip来划分不同的nameserver等,这里只是放出来参考,在State文件中将可以引用Pillar数据,比如引用ngx_home_dir:

nginx:
  pkg:
    - installed
  user.present:
    - home: {{ pillar['ngx_home_dir'] }}
    - shell: /sbin/nologin
    - require:
      - group: nginx
  group.present:
    - require:
      - pkg: nginx
  service.running:
    - enable: True
    - reload: True
    - require:
      - file: /etc/init.d/nginx
      - file: /data1/logs/nginx
    - watch:
      - file: {{ pillar['ngx_conf_dir'] }}/nginx.conf
      - file: {{ pillar['ngx_conf_dir'] }}/fastcgi.conf
      - pkg: nginx

······ 后面关于配置就省略了 

在pillar内可以提前将不同的部分根据在pillar内定义好,这样统一配置的时候就可以实现根据机器实际情况配置;比如根据机器的硬件情况配置nginx的worker_processes:

user nginx;
{% if grains['num_cpus'] < 8 %}
worker_processes {{ grains['num_cpus'] }};
{% else %}
worker_processes 8;
{% endif %}
worker_rlimit_nofile 65535;
``````````具体配置省略 

很多定义的时候,都可以使用到pillar来进行自定义相关数据,具体情况可以自行摸索,这里只是个举例。

### CentOS 上 SaltStack 的安装教程 #### 3.1 安装 Salt Master 和 Minion 为了在 CentOS 上部署 SaltStack,可以按照以下方式操作: 对于 master 节点,在 `salt02` 或者 `salt03` 这样的服务器上执行命令来安装 salt-master 组件: ```bash yum install -y salt-master ``` 此命令会自动下载并安装最新的稳定版 SaltStack 及其依赖项[^1]。 #### 3.2 设置多 Master 实现高可用性 如果计划构建具有冗余能力的架构,则可以在另一台机器 (`salt01`) 上创建额外的 master。这涉及几个步骤: - **安装软件包** ```bash yum install -y salt-master ``` - **复制必要的文件** 将主 master 中 `/etc/salt/pki/master/`, `/etc/salt/master` 以及整个 `/srv` 目录下的内容拷贝过来,确保新 master 拥有相同的密钥对和配置信息[^4]. - **启用服务** 使新的 master 在系统启动时自动运行,并立即开启它: ```bash systemctl enable salt-master.service systemctl start salt-master.service ``` #### 3.3 配置 Pillar 数据源 Pillar 是一种安全的数据存储机制,允许管理员向特定的目标发送敏感或私有的数据而不必担心这些数据会被其他节点访问。要定义 pillar 数据结构,编辑位于 `/etc/salt/master.d/` 下的一个名为 `pillar_roots.conf` 的文件,或者直接修改主配置文件中的相应部分。例如,可以通过如下所示的方式指定不同主机应接收哪些 pillar 数据[^5]: ```yaml base: '*': - web_pillar.service_appoint 'salt0*': - web_pillar.apache 'salt03': - web_pillar.apache ``` 上述 YAML 片段意味着所有匹配模式 `'salt0*'` 的 minions 将获得一组称为 "web_pillar.apache" 的 pillar 数据,而特别指明的 `salt03` 则单独获取相同名称的一组数据。 #### 3.4 测试网络连通性和功能验证 完成以上设置之后,可以通过简单的测试命令确认一切正常工作。比如,利用 CIDR 符合条件的选择器来检查某个子网内的所有 minion 是否在线: ```bash salt -S '10.252.137.0/24' test.ping ``` 这条指令将会返回该 IP 地址范围内每一个响应 ping 请求的 minion 名单[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值