【问题标题】:populate yaml variable from jinja variable从 jinja 变量填充 yaml 变量
【发布时间】:2022-01-10 05:24:33
【问题描述】:

我想在运行下面的剧本后填充下面的nifi.web.https.host。我是 ansible jinja/yaml 的新手,所以我不确定为什么不起作用。

{% set external_ip =  'curl 169.254.169.254/2009-04-04/meta-data/public-ipv4' %}
- hosts: localhost
  become: yes
  roles:
    - my.nifi
  vars:
    nifi_properties:
      # HTTPS properties
      nifi.web.https.host: 'external_ip'
      nifi.web.https.port: 8443
      nifi.web.https.network.interface.default: eth0

运行 playbook 后出现此错误:

{% set external_ip =  'curl 169.254.169.254/2009-04-04/meta-data/public-ipv4' %}

^这里

【问题讨论】:

  • Playbook 是用 YAML 语法编写的。请参阅此intro。你不能在剧本中有直接的 Jinja 语句,这就是错误所在。您需要为此运行任务 (pre_tasks) 和 register 输出。
  • 谢谢。这有助于我理解什么是必要的。

标签: ansible yaml jinja2


【解决方案1】:
- hosts: localhost
  become: yes
  roles:
    - my.nifi

  pre_tasks:
     - name: Get EC2 public IP
       raw:  curl http://169.254.169.254/2009-04-04/meta-data/public-ipv4
       register: ec2_public_ip

  vars:
    nifi_properties:
      # HTTPS properties
      nifi.web.https.host: "{{ ec2_public_ip.stdout }}"
      nifi.web.https.port: 8443
      nifi.web.https.network.interface.default: eth0

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多