【问题标题】:cloud-init use metada as variablecloud-init 使用元数据作为变量
【发布时间】:2021-10-19 12:30:37
【问题描述】:

我想在模块中使用 cloud-init 元数据作为值,但似乎不可能。

例如设置ntp、本地镜像等。

以下配置文件不起作用。

#cloud-config
## template:jinja
ntp:
  servers:
    - {{ ds.meta_data.meta.ntp2 }}

我检查了元数据,她仍然存在。

$ cloud-init query -f "{{ ds.meta_data.meta.ntp2 }}"
ntp.local

你知道我该怎么做吗?

非常感谢!

【问题讨论】:

    标签: linux ubuntu cloud-init


    【解决方案1】:

    我尝试了你的建议,但没有成功

    ## template: jinja
    #cloud-config
    ntp:
      servers:
        - {{ ds.meta_data.meta.ntp2 }}
    

    cloud-init生成的配置文件是这样的:

    cat /etc/systemd/timesyncd.conf.d/cloud-init.conf
    # cloud-init generated file
    # See timesyncd.conf(5) for details.
    
    [Time]
    NTP={{ ds.meta_data.meta.ntp2 }}
    

    还有什么建议吗?

    【讨论】:

      【解决方案2】:

      将模板行放在 cloud-config 行之前:

      ## template: jinja
      #cloud-config
      ntp:
        servers:
          - {{ ds.meta_data.meta.ntp2 }}
      

      【讨论】:

      • 很奇怪。我没有那个键,但如果我使用{{ ds.meta_data.local_hostname }},我会得到你期望的结果。您的密钥是否仅存在于 /run/cloud-init/instance-data-sensitive.json 而不是 /run/cloud-init/instance-data.json ?如果是这样,您正在点击bugs.launchpad.net/cloud-init/+bug/1931392,它已修复但尚未发布。
      • 另外请注意,我刚刚意识到我打错了:## template:jinja 应该是 ## template: jinja
      猜你喜欢
      • 1970-01-01
      • 2021-01-04
      • 2019-03-13
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 2016-08-23
      相关资源
      最近更新 更多