私はユースケースのためにホストとグループをどのように構造化するべきかを理解するのに役立つ必要があります。可能なホスト/グループ構造
シーンを少し設定しましょう。次のように私の現在の設定は次のとおりです。
ホスト
[windows]
client_1 ansible_host=172.0.0.1
[linux]
client_2 ansible_host=172.0.0.2
client_3 ansible_host=172.0.0.3
ちょうどWindowsのセットアップを見てみましょう。
group_vars /窓
jboss_service_name: JBOSSAS7SVC
app_service_name: APPSRVC
...
host_vars/client_1
ansible_user: username
ansible_password: pasword
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
次のようにその後、私の脚本はなります
- hosts: '{{ target }}'
name: Stop JBoss and App Services.
remote_user: '{{ ansible_user }}'
tasks:
- name: Stopping JBoss Service.
win_service:
name: '{{ jboss_service_name }}'
start_mode: manual
state: stopped
- name: Stopping App Service.
win_service:
name: '{{ app_service_name }}'
start_mode: manual
state: stopped
次のようにだから私は自分のプレーを実行することができます:
ansible-playbook my-playbook.yml --extra-var "target=client_1"
またはすべてのWindowsマシン用:
ansible-playbook my-playbook.yml --extra-var "target=windows"
これは正常に動作し、上記のように、私はこの作業を持っています。ただし、このソリューションは、クライアント用の単一のサーバー設定用です。意味jboss、app、web、およびdbサーバーはすべて同じ物理サーバー上にあります。この場合は172.0.0.1です。
ただし、必ずしもそうであるとは限りません。任意のクライアントに対して、共有または分散セットアップである可能性があります。つまり、jboss、app、web、dbサービスは単一のサーバー上にあるか、それぞれが独自のサーバー上にあることを意味します。
私はこの設定に適応しようとしていますが、特定のクライアントサーバーでshowdownサービスコマンドを実行しているように私のプレイをどのように実行するのか正確にはわかりません。私は、単一のクライアントまたはグループ(Windows)でプレイブックを実行できる必要があります。
これまで私が思いついたのはこれです。
ホストが
[windows]
client_1
[linux]
client_2
client_3
group_vars /窓(ここでは変更なし)
jboss_service_name: JBOSSAS7SVC
app_service_name: APPSRVC
...
host_vars/client_1((はansible_host = ...を削除します) 移動したIPアドレスクライアントhost_varレベル O)
ansible_user: username
ansible_password: pasword
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
app_server: 172.0.0.1
jboss_server: app_server: 172.0.0.2
web_server: app_server: 172.0.0.3
...
上記host_varファイルで、それは共有設定した場合、私はちょうど、すべて同じIPアドレスを使用する** _ *サーバー変数を設定します。
私は、デバッグがhost_varファイルとgroup_varファイルに変数を表示し、すべてのデータにアクセスできるテストプレイブックを作成しました。私は、代わりにクライアントホストのグループウィンドウに渡すことができ
ansible-playbook -i client_1 test-playbook.yml
次のように
は、私はそれを実行します。
は、しかし、私は理解していないことだけで、サーバー上で実行する必要があり、そのクライアントのシャットダウンJBossへwin_serviceするために、これらの新しい変数の使用、例えば電話をかけるために私の古い脚本を編集する方法であるhost_vars/client_1.app_server同様に、私のアプリサービスをシャットダウンするのは、そのクライアントのサーバapp_serverで実行する必要があります。
私はこれが長いテキストであることを知っています。読んでいただきありがとうございます。
私の質問は、まったく間違っていますか?どのように私はWindowsとLinuxホストを区別することができるように私のホストを構築する必要があります、クライアントでこれを設定し、任意のクライアントの共有または分散サーバーのセットアップをサポートすることができますか?
多くのありがとうございます。
何@jww疑問に思っているのは、有能なコードです。コードを「プログラミングや開発ではなく」扱うのはどうですか? – techraf