他の言語でもお読みいただけます : English、 日本語.
- 目的 - ガイド - Playbook の出力 - ソリューション
この最後の演習では、ステップバイステップの順を追った説明ではなく、各ステップのヒントと共にフレームワークについて説明します。
プールからのノードの削除を説明します。次の Playbook をビルドします。
- BIG-IP にあるプール用に、BIG-IP からファクトを取得する(この例では 1 つのプールのみが存在します)
- 利用可能なプールを表示する
- ファクトとしてプール名を保存する
- プール => IP およびポート情報に属するすべてのプールメンバーをターミナルウインドウに表示する
- プールの特定のメンバーまたはすべてのメンバーを無効にするようにユーザーに要求する
- 適切なプールメンバーを強制的にオフラインにする
VSCode を使用して、左側のペインの新規ファイルアイコンをクリックして、disable-pool-member.yml
という名前の新しいファイルを作成します。
次のプレイ定義を disable-pool-member.yml
に入力します。
---
- name: Disabling a pool member
hosts: lb
connection: local
gather_facts: false
tasks セクションを追加してからプロバイダーのファクトを設定します。プロバイダーを設定したら、server/user/password/server_port および validate_certs 情報を各タスクに提供する代わりに、将来のタスクでこのキーを再利用できます。
tasks:
- name: Setup provider
set_fact:
provider:
server: "{{private_ip}}"
user: "{{ansible_user}}"
password: "{{ansible_password}}"
server_port: 8443
validate_certs: false
次のタスクで、以下のようにプロバイダーを使用できるようになりました。
f5networks.f5_modules.bigip_device_info:
provider: "{{provider}}"
gather_subset:
- ltm-pools
今後は、各モジュールに server_ip/user/password などを渡す必要はありません。
---
- name: "Disabling a pool member"
hosts: lb
gather_facts: false
connection: local
次に、以下に挙げる目的のためにタスクを追加します。
- サブセット ltm-pools 用に BIG-IP からファクトを取得する
ヒント: 演習 1.1 の bigip_device_info モジュールを使用してみます
次に、以下に挙げる目的のためにタスクを追加します。
- ターミナルウィンドウにプール情報を表示する
ヒント:
上記のステップの出力で loop
する方法を思い出してください。デバッグモジュール を使用するのも忘れないでください
次に、以下に挙げる目的のためにタスクを追加します。
- プール名をファクトとして保存する
ヒント: Playbook 内でファクト変数を動的に設定する簡単な方法は、set_fact モジュール を使用することです
次に、以下に挙げる目的のためにタスクを追加します。
- プールに属するメンバーを表示する
ヒント: デバッグ を使用し、演習 1.4 を参照することを思い出してください
次に、以下に挙げる目的のためにタスクを追加します。
- プールに属するすべてのメンバーを無効にする
ヒント: BIG-IP プールメンバーモジュール を使用するのを忘れないでください
Playbook を実行します。VS Code サーバーのターミナルに戻り、以下を実行します。
[student1@ansible ~]$ ansible-navigator run disable-pool-member.yml --mode stdout
出力は次のようになります。
[student1@ansible ~]$ ansible-navigator run disable-pool-member.yml --mode stdout
PLAY [Disabling a pool member] *******************************************************************************
TASK [Setup provider] *******************************************************************************
ok: [f5]
TASK [Query BIG-IP facts] *****************************************************
changed: [f5]
TASK [Display Pools available] ************************************************
ok: [f5] => (item=http_pool) => {
"msg": "http_pool"
}
TASK [Store pool name in a variable] ******************************************
ok: [f5] => (item=None)
ok: [f5]
TASK [Show members belonging to pool http_pool] *******************************
ok: [f5] => (item=node1:80) => {
"msg": "node1:80"
}
ok: [f5] => (item=node2:80) => {
"msg": "node2:80"
}
TASK [pause] ******************************************************************
[pause]
To disable a particular member enter member with format member_name:port
To disable all members of the pool enter 'all':
node1:80
TASK [Disable ALL pool members] ***********************************************
skipping: [f5] => (item=node1:80)
skipping: [f5] => (item=node2:80)
TASK [Disable pool member node1:80] *******************************************************************************
changed: [f5]
PLAY RECAP *******************************************************************************
f5 : ok=7 changed=2 unreachable=0 failed=0
答えに詰まったら、回答がインストラクターによって提供されます。GUI の表示は、以下のようになるはずです。黒いダイヤマークは、指定されたノードが強制的にオフラインにされたことを示します。
-- You have finished this exercise. Click here to return to the lab guide