如何通过Salt Pillar向配置文件追加敏感数据(附现有Salt State示例)
如何通过Salt Pillar向配置文件追加敏感数据?
嘿,作为SaltStack新手,我来一步步带你实现这个需求,把敏感数据放到Pillar里维护,然后追加到你的配置文件中:
1. 编写你的Salt Pillar文件
首先,在Salt Master的/srv/pillar/目录下创建一个专门存放Xentrax配置的Pillar文件,比如xentrax.sls。把你要追加的敏感数据结构化地写进去,注意用多行字符串格式(|符号)来保留YAML的原有格式:
xentrax: extra_config: | ingress: - hostname: shop.xentrax.com - keyid: xxxxxxxxxxxxxxxxxxx originRequest: httpHostHeader: shop.xentrax.com originServerName: shop.xentrax.com service: https://localhost:443 - service: http_status:404
2. 调整你的Salt State文件
接下来修改你原来的State文件,把Pillar中的数据引入进来。我们可以把操作拆成两部分:先写入基础配置,再追加来自Pillar的敏感配置,这样逻辑更清晰:
# 写入基础的Xentrax配置(文件不存在则创建,已存在则追加) xentrax_base_config: file.append: - name: /etc/xentrax/config.yml - text: | tunnel: xentrax credentials-file: /roor/.xentrax/xentrax.json logfile: /var/log/xentrax.log loglevel: info # 追加来自Pillar的敏感配置内容 xentrax_extra_config: file.append: - name: /etc/xentrax/config.yml - text: {{ salt['pillar.get']('xentrax:extra_config', '') }}
这里用salt['pillar.get']来安全地获取Pillar中的数据,第二个参数是空字符串,防止如果Pillar未配置时出现报错。
3. 应用配置到Minion
完成上面的文件编写后,需要先让Minion刷新Pillar数据,再应用State:
- 在Salt Master上执行命令刷新Pillar:
salt '*' saltutil.refresh_pillar
- 然后应用你的Xentrax State(假设你的State文件叫
xentrax.sls):
salt '*' state.apply xentrax
执行完成后,/etc/xentrax/config.yml的内容就会和你期望的完全一致啦!
另外提个小建议:因为这些是敏感数据,你可以用Salt的Pillar加密功能来保护它们,比如用GPG加密Pillar文件,这样只有授权的Minion才能解密查看,不过这部分是进阶内容,等你熟悉基础操作后再探索也没问题~
内容的提问来源于stack exchange,提问作者Ram Charan
相关产品推荐
相关产品推荐

