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

관련 정보