ある条件(つまり、別の変数の値)に従ってロール変数のデフォルト値を変更することは可能ですか?
詳細
コマンドに関連する2つの変数がenvありcomposer_optsます。
両方がデフォルト(env = "prod"およびcomposer_opts = "--no-dev")のままになっている場合は、すべて問題ありません。
に変更envするdevと、もう一方のデフォルトがコマンドを中断するため、常に両方を設定する必要があります。カスタムスクリプト/ ifで条件付きデフォルト値を設定することでこれを回避することは可能でしょうか?
重要:値に従って常にcomposer_opts値を設定する必要はありませんenv。まだ設定されていない場合にのみ設定します(動的なデフォルト値)。
擬似コード
私はこのようなことをしたいと思います(次のコードは無効です、私のニーズを表現するための単なる擬似コード)
---
# defaults/main.yml
env: prod
composer_opts:
when: "{{env}}" = 'prod'
'--no-dev --optimize-autoloader --no-interaction'
when: "{{env}}" = 'dev'
''
composer_opts場合envは常に空の文字列に設定され、実際の値セットが上書きされます。条件は次のように拡張する必要があると思いますwhen: "{{env}}" == 'dev' and "{{composer_opts}}" is undefined。それはよさそうですか?それに応じて質問を更新できますか?