1

我从 csv 文件导入 Ansible 中的数据,并希望将字符串从 csv 文件转换为 Ansible 中的原始数据。

可靠:

parent_region: "{{ parent_region }}"ansible 会将其解释为"parent_region": "1933".

有没有办法删除花括号并使ansible将代码解释为"parent_region": 1933???

任何帮助表示赞赏!

编辑 我需要该变量,raw因为parent_regionNetbox 中的字段netbox_region仅接受raw. 这是官方文档

4

2 回答 2

1

使用7.3.2。单引号样式。报价:

| “\”和“&” 字符可以自由使用。

例如,给定变量

parent_region: "1933"

下面的任务

    - set_fact:
        parent_region: 'r"{{ parent_region }}"'
    - debug:
        var: parent_region
    - debug:
        msg: "{{ parent_region|type_debug }}"

给(引号是字符串的一部分)

  parent_region: r"1933"
  msg: str

Ansible (Python3) 中的默认类型是 Unicode 字符串,例如

    - set_fact:
        parent_region: "1933"
    - debug:
        var: parent_region
    - debug:
        msg: "{{ parent_region|type_debug }}"

给(引号不是字符串的一部分)

  parent_region: '1933'
  msg: AnsibleUnicode

您可以创建自定义过滤器并选择编码,例如

shell> cat filter_plugins/python_encode.py

def python_encode(s, encoding):
    return s.encode(encoding)

class FilterModule(object):
    def filters(self):
        return {
            'python_encode': python_encode,
        }

然后任务

    - set_fact:
        parent_region: "{{ parent_region|python_encode('raw_unicode_escape') }}"
    - debug:
        var: parent_region
    - debug:
        msg: "{{ parent_region|type_debug }}"

  parent_region: b'1933'
  msg: str

请参阅Python str 与 unicode 类型

于 2021-07-16T05:02:04.660 回答
0

int您可以使用过滤器将变量转换为整数:

parent_region: "{{ parent_region | int }}"
于 2021-07-16T04:14:27.730 回答