1

これは、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そして、パペットマニフェストにmy ファイルを次のように作成しようとします:

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 ファイルにデータを入れるにはどうすればよいですか? をエスケープする必要があり%ますか?

4

1 に答える 1

1

短い答え、はい。

Hiera には、補間トークンがあります。

%{variable}補間トークンはまたはのようになります%{function("input")}。つまり、それらは次のもので構成されています。

  • パーセント記号 (%)
  • 左中かっこ ({)

の一つ:

  • 変数名
  • ルックアップ関数とその入力 (Hiera 1.3 以降)
  • 右中括弧

構成ファイルの設定またはデータ ソースの値に補間トークンが含まれている場合、Hiera はそのトークンを実行時に参照する値に置き換えます。

つまり%{GLOBAL}、補間トークンと完全に一致します。最終出力では、Puppet は変数GLOBALに値がなく、空白を出力することを示しています。

SO でHiera データをエスケープするスレッドがありますが、これは通常、あなたがやりたいことではないと思います。ベスト プラクティスは、erb テンプレートを作成し、構成ファイルの内容全体ではなく、入れたいテンプレートに単純に値を渡すことです。

于 2016-01-22T17:15:34.287 に答える