8

値と一致する値を持つファイルを作成しようとしていwith_itemsます。

次のような var リストがあります。

 sites:
   - domain: google.com
     cname: blue
   - domain: facebook.com
     cname: green
   - domain: twitter.com
     cname: red

このタスクでは、リスト内のオブジェクトごとに個別のファイルを作成します。

- name: Create files
  template:
    src: file.conf
    dest: "/etc/nginx/conf.d/{{item.cname}}.conf"
  with_items: "{{sites}}"

これらは両方ともうまく機能します。blue.confと呼ばれるファイルを作成するために、テンプレートファイルに何が必要で、google.comその中にのみ.

たくさんのバリエーションを試しました。私が得た最も近いものはこれでした:

   server {
        listen 80;
        listen [::]:80;
      {% for item in sites %}
        server_name  {{item.cname}}.es.nodesource.io;

        location / {
          proxy_pass {{item.domain}};
        }
      {% endfor %}
    }

これにより個別のファイルが作成されますが、すべてのファイルにはすべてのドメインと cname が含まれています。

4

1 に答える 1

14

既に変数がitem定義されてテンプレートに渡されているため、再度ループする必要はありません。

試す:

server {
    listen 80;
    listen [::]:80;
    server_name  {{item.cname}}.es.nodesource.io;

    location / {
      proxy_pass {{item.domain}};
    }
}
于 2017-03-17T02:05:19.383 に答える