Ansible jinja2 필터 거부

Ansible jinja2 필터 거부

표준 출력 라인에서 "*"를 거부해야 합니다.

"stdout_lines": [
    "rchinnn01",
    "rchinnn02",
    "*"
]

- set_fact:
  nfs_clients:  "{{ nfs_clients_out.stdout_lines | reject('search','*') | list }}"

스크립트 출력:

TASK [set_fact] *****************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: error: nothing to repeat
fatal: [rchinnn03]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}

답변1

정규식 "[*]"가 유효합니다. 다음 드라마

vars:
  my_lines:
    - "rchinnn01"
    - "rchinnn02"
    - "*"
tasks:
  - debug:
      msg: "{{ my_lines|reject('match', '[*]')|list }}"

(요약):

ok: [localhost] => {
    "msg": [
        "rchinnn01", 
        "rchinnn02"
    ]
}

답변2

검색하는 대신 equalto를 사용하는 것이 좋습니다.

- set_fact:
  nfs_clients:  "{{ nfs_clients_out.stdout_lines | reject('equalto','*') | list }}"

그림https://stackoverflow.com/questions/24041885/conditionally-join-a-list-of-strings-in-jinja

답변3

다음과 같이 사용해 주십시오.

- set_fact:
     nfs_clients: "{{ nfs_clients_out.stdout_lines | reject('match','rchinnn*') | list }}"

jinja2 버전 세부정보를 확인하세요.

관련 정보