Encryption 每模块hiera数据与eyaml?

Encryption 每模块hiera数据与eyaml?,encryption,puppet,puppet-enterprise,hiera,Encryption,Puppet,Puppet Enterprise,Hiera,我一直在使用hiera将信息存储在 /模块名称/数据 使用./modulename/hiera.yaml下的hiera.yaml文件 一个是这样的: # --- version: 5 defaults: datadir: data data_hash: yaml_data hierarchy: - name: "source file" path: "source.yaml" 我想使用eyaml来加密文件,但这样做会导致hiera.yaml中出现错误 # --- versi

我一直在使用hiera将信息存储在

/模块名称/数据

使用./modulename/hiera.yaml下的hiera.yaml文件

一个是这样的:

#
---
version: 5
defaults:
  datadir: data
  data_hash: yaml_data
hierarchy:
  - name: "source file"
    path: "source.yaml"
我想使用eyaml来加密文件,但这样做会导致hiera.yaml中出现错误

#
---
version: 5
defaults:
  datadir: data
  data_hash: eyaml_data
hierarchy:
  - name: "authorized_keys"
    path: "auth_keys.eyaml"
eyaml:
  pkcs7_private_key: data/keys/private_key.pkcs7.pem
  pkcs7_public_key: data/keys/public_key.pkcs7.pem
我想特定于模块的hiera.yaml有一些设置,可以用来解密文件或文件中的特定行,但除了如何在/etc/puppet/puppet/keys中设置它之外,我在eyaml上找不到更多内容

我已经在./modulename/data/keys中创建了pkcs7密钥/


pkcs7_公钥和私钥不必是模块目录中数据/密钥下的公钥和私钥,它们可以是/etc/puppet/puppet/keys中的全局密钥

我相信我找到了答案,这是在hiera eyaml的一些文档中找到的:

希望如果其他人有这个问题,我的发现能有所帮助:

您可以使用./ModuleName/hiera.yaml下文档中描述的hiera.yaml配置

这是我的测试示例,我修改了一个现有的测试模块来测试这项工作。我认为这需要:

PE 2017.1 v 2017.1附带的最新hiera和puppet gem install hiera eyaml&puppetserver gem install hiera eyaml我必须运行几次,才能正确显示模块以及一些puppet代理-t运行 注销并重新登录环境路径 这是我的模块:

$ tree master_cron/
master_cron/
├── data
│   └── secrets.eyaml
├── hiera.yaml
└── manifests
    └── init.pp

$ ll /etc/puppetlabs/puppet/keys/
total 8.0K
drwxr-xr-x. 2 pe-puppet pe-puppet   63 Mar 18 16:51 .
drwxr-xr-x. 4 root      root       207 Mar 18 17:03 ..
-rw-------. 1 pe-puppet pe-puppet 1.7K Mar 18 16:51 private_key.pkcs7.pem
-rw-r--r--. 1 pe-puppet pe-puppet 1.1K Mar 18 16:51 public_key.pkcs7.pem

$ cat hiera.yaml
---
version: 5
defaults:
    datadir: data
hierarchy:
    - name: "secret data"
      lookup_key: eyaml_lookup_key
      path: "secrets.eyaml"
      options:
        pkcs7_private_key: /etc/puppetlabs/puppet/keys/private_key.pkcs7.pem 
        pkcs7_public_key: /etc/puppetlabs/puppet/keys/public_key.pkcs7.pem
...
您可以为模块本身指定一个键,并将其放入数据/键中

这只是我制作的一个测试模块,它创建了一些cron作业,我将命令加密为测试,但对eyaml来说并不是真正的实际用途; 下面是解密后的图像:

我在模块中使用hiera数据,您可以不加密它:

class master_cron ($jobs) {

  create_resources(cron, $jobs)

}

hiera eyaml使用hiera 3的旧目录设置,而不是Puppet解析器/代理内置的新hiera 5。这是不相容的。不过,hiera eyaml有多种优越的解决方案。
---
master_cron::jobs:
  "chown_pe-puppet":
    environment: "PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin"
    minute: '*/5'
    user: root
    command: chown -R pe-puppet:pe-puppet /etc/puppetlabs/code/environments/production/modules
  "chmod_pe-puppet":
    environment: "PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin"
    minute: '*/5'
    user: root
    command: chmod -R 755 /etc/puppetlabs/code/environments/production/modules
class master_cron ($jobs) {

  create_resources(cron, $jobs)

}