Ansible - 将配置读入变量

问题描述 投票:0回答:1

我有一些配置可以根据需要进行格式化,我想以我可以使用的方式加载到ansible中。

举个例子,我有

[hosttype1]
values
values2
[hosttype2]
values3
values4

我也尝试过

的格式
hosttype1:
  - value1
  - value2
hosttype2:
  - value3
  - value4

我已将该配置保存到文件中,并设法将第一个条目存储到变量中

- hosts: localhost
vars_files:
- config.yml
- debug: 
  var_list: "{{ hosttype1 }}"

我已将值括在引号中

'
,并且使用双引号
"
并且没有引号,但总是出现错误

错误!发现无效的 vars_files 条目:{u'debug':无,u'var_list': [u'value1', u'value2']} var_files 条目应该是字符串 模板扩展后的类型或字符串类型列表

所以我首先想要的是hosttype1不是变量的名称,这样最终的代码可以更加通用。 我希望能够在链中定义更高的东西,以便主机类型是变量的组件。

但错误消息也表明值不是字符串,但它们显然用引号引起来,所以我完全不知道错误的实际含义。

有谁能够帮助我并让我了解我做错了什么,或者向我指出一些描述如何做的文档?

ansible
1个回答
3
投票

您在问题中发布的剧本存在一些严重的缩进问题,这会导致其无效。假设您有一个文件

config.yml
包含:

hosttype1:
  - value1
  - value2
hosttype2:
  - value3
  - value4

您可以像这样将其读入 Ansible:

- hosts: localhost
  vars_files:
    - config.yml

  tasks:
    - debug:
        msg:
          - "type 1: {{hosttype1}}"
          - "type 2: {{hosttype2}}"

该剧本将产生输出:

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "type 1: ['value1', 'value2']",
        "type 2: ['value3', 'value4']"
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.