2016-01-07 6 views
1

у меня есть это в файле YAML в моих данных hiera:Является ли кукловод оценкой переменных в моих данных YAML?

wsgi_keystone_conf_contents: | 
Listen 5000 
Listen 35357 

<VirtualHost *:5000> 
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} 
    WSGIProcessGroup keystone-public 
    WSGIScriptAlias//var/www/cgi-bin/keystone/main 
    WSGIApplicationGroup %{GLOBAL} 
    WSGIPassAuthorization On 
    LogLevel info 
    ErrorLogFormat "%{cu}t %M" 
    ErrorLog /var/log/httpd/keystone-error.log 
    CustomLog /var/log/httpd/keystone-access.log combined 
</VirtualHost> 

<VirtualHost *:35357> 
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} 
    WSGIProcessGroup keystone-admin 
    WSGIScriptAlias//var/www/cgi-bin/keystone/admin 
    WSGIApplicationGroup %{GLOBAL} 
    WSGIPassAuthorization On 
    LogLevel info 
    ErrorLogFormat "%{cu}t %M" 
    ErrorLog /var/log/httpd/keystone-error.log 
    CustomLog /var/log/httpd/keystone-access.log combined 
</VirtualHost> 

И я пытаюсь создать мой wsgi-keystone.conf файл в моей марионеткой проявляться следующим образом:

file { '/etc/httpd/conf.d/wsgi-keystone.conf': 
    ensure => present, 
    content => $wsgi_keystone_conf_contents, 
} 

Но это приводит к файлу что выглядит так ...

Listen 5000 
Listen 35357 

<VirtualHost *:5000> 
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name= 
    WSGIProcessGroup keystone-public 
    WSGIScriptAlias//var/www/cgi-bin/keystone/main 
    WSGIApplicationGroup 
    WSGIPassAuthorization On 
    LogLevel info 
    ErrorLogFormat "t %M" 
    ErrorLog /var/log/httpd/keystone-error.log 
    CustomLog /var/log/httpd/keystone-access.log combined 
</VirtualHost> 

<VirtualHost *:35357> 
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name= 
    WSGIProcessGroup keystone-admin 
    WSGIScriptAlias//var/www/cgi-bin/keystone/admin 
    WSGIApplicationGroup 
    WSGIPassAuthorization On 
    LogLevel info 
    ErrorLogFormat "t %M" 
    ErrorLog /var/log/httpd/keystone-error.log 
    CustomLog /var/log/httpd/keystone-access.log combined 
</VirtualHost> 

В вышеприведенном файле есть синтаксическая ошибка, а httpd не перезагружается. Как я должен помещать данные в свой файл YAML? Нужно ли мне избегать %?

ответ

1

Короткий ответ, да.

В Hiera есть interpolation tokens:

Интерполяция маркеры выглядят как %{variable} или %{function("input")}. То есть, они состоят из:

  • знаком процента (%)
  • Открывающая фигурная скобка ({)

Один из:

  • имя переменной
  • Функция поиска и входной сигнал (Hiera 1.3 и более поздние)
  • Закрывающая фигурная скобка

Если какой-либо параметр в конфигурационном файле или значения в источнике данных содержит маркер интерполяции, Hiera заменит маркер со значением оно относится к во время выполнения ,

Это означает, что ваш %{GLOBAL} точно соответствует токену интерполяции. В вашем окончательном выходе Puppet показывает, что он не имеет значения для переменной GLOBAL, и он выводит пустым.

На этой странице есть нить на escaping Hiera data, но я не думаю, что это обычно то, что вы хотите сделать. Лучшей практикой было бы написать шаблон erb и просто передать значения шаблону, который вы хотите вставить, а не всему содержимому файла конфигурации.