Ansibleは、タブで区切られた文字列のリストを評価します。

Ansibleは、タブで区切られた文字列のリストを評価します。

コマンドが実行され、その後stdoutが変数としてキャプチャされます。コマンド出力には、タブで区切られた値が一覧表示されます。だから私は次のようなものを持っています

var.stdout_lines: [
  "a1\tb1\tc1",
  "a2\tb2\tc2",
  "a3\tb3\tc3"
]

さらなる処理のために、この行を次のリストに分割したいと思います。

[
  [a1, b1, c1],
  [a2, b2, c2],
  [a3, b3, c3]
]

どうすればいいですか?

答え1

プロジェクトの分割

result: "{{ out.stdout_lines | map('split') }}"

  • テストのための完全なプレイブックの例
- hosts: localhost

  vars:

    out:
      stdout_lines: [
        "a1\tb1\tc1",
        "a2\tb2\tc2",
        "a3\tb3\tc3"]

    result: "{{ out.stdout_lines | map('split') }}"

  tasks:

    - debug:
        var: out.stdout_lines

    - debug:
        var: result

(env) > cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=23.10
DISTRIB_CODENAME=mantic
DISTRIB_DESCRIPTION="Ubuntu 23.10"
(env) > python3 -m pip list | grep ansible
ansible                   9.5.1
ansible-compat            4.1.11
ansible-core              2.16.6
ansible-lint              24.2.2
ansible-runner            2.3.6

関連情報