コマンドが実行され、その後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
- 使用Python仮想環境。たとえば、Ubuntuでは
(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