Для данных модуля hiera с eyaml?

Я использую hiera для хранения информации в

./modulename/data

используя файл hiera.yaml под ./modulename/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, которые я могу использовать для дешифрования файла или определенных строк в файле, но я не могу найти много на eyaml, кроме того, как настроить его для использования в / etc / марионетка / марионетка / ключи

Я создал ключи pkcs7 в ./modulename/data/keys/

pkcs7_public и закрытые ключи не обязательно должны быть теми, которые находятся в data / keys в каталоге модуля, они могут быть глобальными в / etc / puppet / puppet / keys


person cmyk0    schedule 16.03.2017    source источник
comment
hiera-eyaml использует старую настройку каталога для Hiera 3, а не новую Hiera 5, встроенную в парсер / агент Puppet. Это несовместимо. Однако есть несколько превосходных решений для hiera-eyaml.   -  person Matt Schuchard    schedule 17.03.2017


Ответы (1)


Думаю, я нашел свой ответ, он был в некоторых документах для hiera-eyaml:

https://github.com/voxpupuli/hiera-eyaml

Надеюсь, если у кого-то еще есть этот вопрос, мои выводы могут помочь :)

вы можете использовать конфигурацию hiera.yaml, описанную в документе в разделе ./ModuleName/hiera.yaml

Вот мой тестовый пример, я изменил существующий тестовый модуль, чтобы проверить его работу. Думаю, для этого необходимы:

  • PE 2017.1
  • последняя версия hiera and puppet, которая поставляется с версией 2017.1
  • gem install hiera-eyaml & puppetserver gem install hiera-eyaml (мне пришлось запустить это несколько раз, чтобы модули отображались правильно, а также запускался некоторый марионеточный агент -t)
  • выйти из системы и снова войти в систему для путей env

Вот мой модуль:

$ 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
...

Вы можете указать ключ для самого модуля и ввести данные / ключи ...

$ cat data/secrets.eyaml
---
master_cron::jobs:
  "chown_pe-puppet":
    environment: "PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin"
    minute: '*/5'
    user: root
    command: ENC[PKCS7,MIIBygYJKoZIhvcNAQcDoIIBuzCCAbcCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEACTtCuqFaS+5YS0DN/lLL6oV78W0lB55eQtZYIGug2SNFhLSA2h1FK/NmcsRE/YmVRJXqCeWTgFIxHch2mcWEYSLbdsWmq9WO45giUNt/MQp9hEMHmO27L63Vxl5GsvECP8yfWW6uinroOG6O95swag+W68nTrrLpV26KqP1mq+aoNw8ognNsm6IqG/FBMCgpWtGMmipBeSMXaXoUxS6wFANjMm0Ak0ykaGmwIYK1dHTosnNw8VX7d8u1oAzpgeWEkET0g8U+Q4z0W4ZNeWUIatJY1Lq30r3LOUswg+xIGmZAEro+KfQlOI1ENDx+/4ZG3IokMB9GJ1hzWlGWgbCh7zCBjAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQcMG9nWTZaCaqLuO5+m6fBIBg7G+pRWPy77yvbpvKXUb2sjkxXlDkLauSXE7KX5YOhFrBtb8pZ7MN9Rz0/qHmefToZbkhWPRMtWJ+QyVET+v2YaIh+7orEdqgo585Z+fjefIGFChkDstMj3d6Hl4s/DCW]
  "chmod_pe-puppet":
    environment: "PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin"
    minute: '*/5'
    user: root
    command: ENC[PKCS7,MIIBuQYJKoZIhvcNAQcDoIIBqjCCAaYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEAKK4R/j3pD+s4cyzcH8H4PSK7j/uCaaSvOBqG8b1MsLQClKU49DxJQ+rZLYkUJEaEq30gyCRy9uZMwFri5EJGL455flXABiM/7A9NTUNJ0DoXdiWvxgWR0py/WmiLVUnql3wVZUfojqak1MOZeRYLeCnHyVLgdz+ouyPwg0nsAuXJewk5aJa5CSj7xkS4TQKvruRaqfFGsCMBEZM7lPDae9+YZZBgfPM9rqZNO5hoUu9Q3vizzpdRcD5+5U5mqCryEzmG51fvzVO0nK45aW6SiJm58nlumxhXJoWmv12OWT+3t67QJvOV3eciLM4F722UnMrJ7SIA3ttdW2UFHuP+eTB8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAfCd5FJnsOoJqU71XSwos2gFDSY3b+apqgrcOZ3lTT8zRKd3Z5JdgIptbYSluzw42scZslHHMR3kcaYIH/D9EJQmG54VKwwFVQODUfFV8N7kyky9LvFA+xpJUWqP6Lijx3bw==]

Это просто тестовый модуль, который я создал, который создает некоторые задания cron, я зашифровал команды в качестве теста, хотя это не совсем практическое применение для 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

И я использую данные hiera в модуле, как вы могли бы без их шифрования:

class master_cron ($jobs) {

  create_resources(cron, $jobs)

}
person cmyk0    schedule 19.03.2017