非対話型コンソール(CI環境のような)とは対照的に、対話型コンソール内で実行されるときに、不可能なプレイブックの動作を変更したい内部から既存の対話型コンソールを検出するにはどうすればよいですか?
これはどのようにプレイブック内から行うことができますか?
非対話型コンソール(CI環境のような)とは対照的に、対話型コンソール内で実行されるときに、不可能なプレイブックの動作を変更したい内部から既存の対話型コンソールを検出するにはどうすればよいですか?
これはどのようにプレイブック内から行うことができますか?
コマンドがCIから実行されているかどうかを判断する方法が必要です。あなたが実行するコマンド何へのアクセス権を持っているなら、私は単に例
ansible-playbook -i inv.yml --extra-vars "ci=True" playbook.yml
ために、コマンドにいくつかの余分な変数を追加することをお勧めして、あなたは何をすべきかを決定するためにあなたの脚本内部ci
変数を参照することができます。
これが煩雑な場合は、ほとんどのCIサーバーが設定する環境変数に依存するのが最善の方法です。 CIサーバーのドキュメントを参照して、環境変数を設定しているかどうかを確認する必要があります。大部分(ただしすべてではありません)は、に変数CI
を設定します。最悪のシナリオでは、この変数をCIサーバーの構成で手動で指定する必要があります。
あなたが使用して管理ホストマシンの環境変数にアクセスすることができるはずです。
これらのオプションの当然の{{ lookup('env','CI') }}
を使用すると、環境変数が適切に非対話型に設定されていることを確認する必要が動作するようにシェル(CIはあなたのために行う必要があります)、インタラクティブなものには設定されていません。
私は本当に厄介な回避策を得ることに疲れています。 Pythonには、それを行う明確な方法があります。それは、すべての場合にうまくいかない醜いハックを伴わないものです:http://stackoverflow.com/questions/6108330/checking-for-interactive-hell-in-a- python-script – sorin
@ソリンそれはまた非常にハイキックで、標準入力を利用できるようにする必要があるという事実に頼っています。実際にはどんな形でもstdinを期待するツールではありません – SztupY
一方、別の危険なモジュールとしてチェックする価値はあるかもしれませんが、私の推測では、 ttyにはなりません – SztupY
'{{lookup( 'env'、 'CI')}}'? –