bashスクリプトに必要な位置パラメータをansibleに渡すには?

bashスクリプトに必要な位置パラメータをansibleに渡すには?

スクリプトモジュールを使用して、ansibleで実行されているbashスクリプトがあります。ただし、この場合$ 1として機能するには、特定の場所パラメータをサーバー名として指定する必要があります。私はansibleでこれを行う方法を見つけようとしていますが、これまでは成功していません。これを行うには組み込みモジュールを使用することをお勧めしますが、この機能を有効にするにはターゲットシステムにselinuxをインストールする必要があり、本番サーバーでは機能しません。 :(

Ansibleなしでスクリプトを実行する方法は次のとおりです。

bash selinux-disabler-ans.sh <servername>

上記はそれ自体がうまく機能します。しかし、Ansible PlayBookでこれをどのように提供しますか?これが私が以下のセクションで使用しているものです:

- name: Remediate/Disable selinux, it will only harm configurations right now, and should be disabled.
script: /opt/selinux-disabler-ans.sh

ホスト領域全体で実行されるため、変更できる必要があるため、スクリプトのパラメータをハードコードすることはできません。現在実行中のホストを使用するか、--limitを介して指定して実行時に位置引数を取得できたらと思います。今は私自身の一時的な自動化を使ってこのスクリプトを実行していますが、これを行うことができれば本当に良いです。誰にもアイデアがありますか?

ベストアンサー1

まずアンサーブルをお手伝いします。変数を使用できます。たとえば、次のように書くことができます。

- name: Remediate/Disable selinux, it will only harm configurations right now, and should be disabled.
script: /opt/selinux-disabler-ans.sh "{{ ansible_hostname }}"

プレイブックの「設定」ステップ中にホストから収集されたホスト名を使用します。リモートシステムでansibleが収集する変数の表示ここ。もちろん、独自の変数を設定することもできます。アンサーブルを選択してくださいオンライン文書- 非常に良い!

さて、いくつかのコメントを申し上げます。スクリプトがパラメータをサーバー名として使用する理由がわかりません。によると参考にしてください。文書スクリプトモジュールはローカルスクリプト(ansibleを実行しているホストにローカル)を取得し、リモートホストにコピーしてそこから実行します。したがって、おそらくこの引数は必要ないかもしれません:)

Ansibleで始まる場合は、最初から役割を含むプレイブックを試してください。これは入手するのが難しくなく、より複雑な環境でコードを管理するのに非常に役立ちます。

おすすめ記事