何かがインストールされているかどうかを確認し、必要に応じてインストールしてからもう一度チェックするコンパクトな方法はありますか?任意の関数install_thing
とis_installed
ため不可能:チェックして、再度確認してください
- name: check whether X is installed.
shell: is_installed >/dev/null || echo nope
register: thing_is_installed
- name: install something
shell: install_thing
when: thing_is_installed=="nope"
- name: check that the install succeeded
shell: is_installed
:現時点では私はこの詳細な混乱がありますか?大きな問題は、is_installedが2回起こることです。そのため、不注意、監督など何らかの理由で、誰かが1つの関数呼び出しを変更するが、他の関数呼び出しを変更するリスクがあります。シェルは単なる例です。そのパターンを認識するかもしれません - それはidenpotentビルド関数の中核ビルディングブロックです。 is_installed
は所望の状態を定義し、install_thing
は所望の状態に到達する方法を定義する。私はこのようになりますフォームがあることを期待して、私はちょうどそれを見つけることができません:それはテストの任意の数で使用することができるという利点がある
- name: Install boondoggle
shell:
check: is_installed
install: install_thing
あるいはこれを、単にシェルではない:
- name: Install bongle
check:
shell: is_installed
install:
shell: install_thing
MarkdownエンジンはGitHub風味ではありません。三重引用符は複数行のコードブロックを開始しません。 '{}'ボタンを使用して、その目的のために4つのスペースインデントを追加します。 –
ありがとう@CharlesDuffy –
ところであなたのコマンド/スクリプトの終了ステータス値は?理想的な世界では、「すでに完了しました」、「完了する必要があります」、「正常に完了しました」、「試行錯誤しました」などの別個の値があります。 –