標準出力ラインで「*」を拒否する必要があります。
"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 }}"