環境変数ではコマンド置換は機能しません。

環境変数ではコマンド置換は機能しません。

このコマンドがありますが、これを変更したいと思います。特に、環境変数に応じて最新のパラメータが存在したいと思います。

ansible-playbook --inventory inventories/ssg-dev deploy.yml --vault-id dev@~/ansible-password --skip-tags "clear-data"

私の試みは次のとおりです。

ansible-playbook --inventory inventories/ssg-$ENVIRONMENT deploy.yml --vault-id $ENVIRONMENT@~/ansible-password $( [ $DATA_SCHEMAS_MIGRATION == true ] && echo ' --skip-tags "clear-data"')

環境変数を設定し、echobeforeを使用してコマンドを実行して出力を確認すると、元のコマンドとまったく同じです。しかし、実行してみると引数が渡されないようで、コマンド置換で環境変数が評価されないと信じられます。

私のコードがうまくいかないのはなぜですか、どうすれば解決できますか?

ベストアンサー1

clear-data一重引用符のため、周囲の二重引用符は評価されません。これは予想されたものとは異なる"clear-data"主張につながります。clear-data

この試み:

ansible-playbook --inventory "inventories/ssg-$ENVIRONMENT" deploy.yml --vault-id "$ENVIRONMENT@~/ansible-password" $([ "$DATA_SCHEMAS_MIGRATION" = true ] && echo '--skip-tags clear-data')

$ENVIRONMENTグロービングと単語の分離を防ぐために二重引用符も追加しました$DATA_SCHEMAS_MIGRATION

おすすめ記事