[解決済み] Ansible Blocksです。main.yml で "always" と "block" が動作しない。
2022-02-10 02:43:14
質問
ここで定義されている "always" と "block" の機能を使おうとしています。 https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html
私は以下のようなmain.ymlファイルを持っています。
- block:
- include: git_clone_and_combining.yml
run_once: yes
delegate_to: localhost
- include: combined_repo_push.yml
run_once: yes
delegate_to: localhost
- include: deploy_code.yml
always:
- include: resume_asg.yml
delegate_to: localhost
予想通りプレイブックを実行しましたが
always
の前にあるブロックは、失敗時に実行されないため、無視されるようです。 このようなブロックの使用は、playではサポートされていないのでしょうか?
EDIT - この件に関してRedhatにチケットを提出したところ、ここにバグレポートが作成されました。
https://github.com/ansible/ansible/issues/72941
.
Always
と
block
を指定した場合、main.ymlでは動作しないようです。
run_once
引数が指定されています。
ありがとうございます。
解決方法は?
引用元 含む
このモジュールはまだしばらくサポートされますが、近い将来、非推奨にすることを検討しています。
A:で再現できます。 インクルード . この問題を解決するには インクルードタスク . 例えば
shell> cat pb.yml
- hosts: localhost
tasks:
- block:
- include_tasks: test_fail.yml
run_once: true
always:
- include_tasks: tasks-always.yml
shell> cat test_fail.yml
- command: "{{ cmd|default('true') }}"
shell> cat tasks-always.yml
- debug:
msg: Always
あげる(要約)
shell> ansible-playbook pb.yml
TASK [command] ****
changed: [localhost]
TASK [debug] ****
ok: [localhost] =>
msg: Always
shell> ansible-playbook pb.yml -e "cmd=false"
TASK [command] ****
fatal: [localhost]: FAILED! => changed=true
cmd:
- 'false'
delta: '0:00:00.003130'
end: '2020-12-11 21:29:26.481652'
msg: non-zero return code
rc: 1
start: '2020-12-11 21:29:26.478522'
stderr: ''
stderr_lines: <omitted>
stdout: ''
stdout_lines: <omitted>
TASK [debug] ****
ok: [localhost] =>
msg: Always
は 常に セクションは期待通りに動作します。
例
shell> cat pb.yml
- hosts: localhost
tasks:
- block:
- command: "{{ cmd|default('true') }}"
always:
- debug:
msg: Always
shell> ansible-playbook pb.yml
PLAY [localhost] ****
TASK [command] ****
changed: [localhost]
TASK [debug] ****
ok: [localhost] =>
msg: Always
...
shell> ansible-playbook pb.yml -e "cmd=false"
PLAY [localhost] ****
TASK [command] ****
fatal: [localhost]: FAILED! => changed=true
cmd:
- 'false'
delta: '0:00:00.004007'
end: '2020-12-11 06:57:10.055177'
msg: non-zero return code
rc: 1
start: '2020-12-11 06:57:10.051170'
stderr: ''
stderr_lines: <omitted>
stdout: ''
stdout_lines: <omitted>
TASK [debug] ****
ok: [localhost] =>
msg: Always
...
含まれるタスクは同じ結果をもたらします
shell> cat pb.yml
- hosts: localhost
tasks:
- block:
- command: "{{ cmd|default('true') }}"
always:
- include: tasks-always.yml
shell> cat tasks-always.yml
- debug:
msg: Always
このロールでも同じ結果が得られます
shell> cat pb.yml
- hosts: localhost
roles:
- test-01
shell> cat roles/test-01/tasks/main.yml
- block:
- command: "{{ cmd|default('true') }}"
always:
- include: tasks-always.yml
shell> cat roles/test-01/tasks/tasks-always.yml
- debug:
msg: Always
関連
-
[解決済み] リモートシステムでAnsibleタスクを使用してファイルを移動/リネームする方法
-
[解決済み] Ansible: 一致するホストがありません
-
[解決済み] Ansible playbook の実行中に UNREACHABLE エラーが発生する。
-
[解決済み] ローカルディレクトリにあるファイルが見つからない、またはアクセスできない
-
[解決済み] 変数文字列の適切な連結方法
-
[解決済み] Ansible タスクのエラーを無視し、タスクにエラーがあった場合、プレイブックの最後で失敗する。
-
[解決済み] ansibleのlineinfileの引用
-
[解決済み] ansible playbookを使ったLogrotate
-
[解決済み] Ansibleが正常に動作しているときにAWS CLIでInvalidClientTokenIdエラーが発生する
-
[解決済み] Ansibleのロールのdefaultsとvarsの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リモートシステムでAnsibleタスクを使用してファイルを移動/リネームする方法
-
[解決済み] ansible playbook を一時停止して、残りのタスクを実行するかどうかをユーザーに確認させます。
-
[解決済み] Ansible: 一致するホストがありません
-
[解決済み] Ansible Blocksです。main.yml で "always" と "block" が動作しない。
-
[解決済み] ローカルディレクトリにあるファイルが見つからない、またはアクセスできない
-
[解決済み] 切断されずにansibleでUFW拒否ポリシーを設定する方法は?
-
[解決済み] 変数文字列の適切な連結方法
-
[解決済み] ansibleのlineinfileの引用
-
[解決済み] ansible playbookを使ったLogrotate
-
[解決済み] Ansibleが正常に動作しているときにAWS CLIでInvalidClientTokenIdエラーが発生する