Ansible - 将逗号分隔的字符串转换为 space 用双引号分隔的字符串

Ansible - convert a comma delimited string into a space delimited string with double quotes

在我的最后一个问题得到了极大的帮助之后,我有了另一个 :)。

我有一个转换字符串变量内容的需求:Targets

debug:
  msg:
    - "Targets: {{ targets }}"

Returns 如下:

ok: [host] => {
    "msg": [
        "Targets: 10.0.1.1,10.0.1.2"

我需要能够拆分目标字符串并将其更改为 space 分隔字符串,每个元素都用双引号括起来。然后这将作为参数传递给另一个命令。

已更新上下文
我将目标变量传递给一个角色,该角色又启动一个可执行文件:

- import_role:
    name: run_exectable_file
  vars:
    # passing all the params here.
    - params: -a -b -c {{ targets }}
    - runtime: 3600

可执行的命令行需要是:

executable.exe -a -b -c "10.0.1.1" "10.0.1.2"

期望输出:

targets 变量需要在 space 分隔字符串中生成目标 IP 地址,每个元素用双引号括起来。

例如下面的调试输出:

ok: [host] => {
    "msg": [
        "Targets: "10.0.1.1" "10.0.1.2""

我一如既往地期待您的帮助。

你可以使用 Jinja 来获得你想要的。例如

    - debug:
        msg: "Targets: {{ _targets }}"
      vars:
        _targets: |
          {% for i in targets.split(',') %}"{{ i }}" {% endfor %}

给予

  msg: |-
    Targets: "10.0.1.1" "10.0.1.2"