표준 출력 라인에서 "*"를 거부해야 합니다.
"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 }}"