Read this in other languages: English, 日本語.
BIG-IPで設定のロールバックを実行するためのさまざまなモジュールの使用方法を説明します。
テキストエディアで新しいファイル bigip-error-handling.yml
を作成します。
[student1@ansible ~]$ nano bigip-error-handling.yml
vim
とnano
がコントールノードで利用できます。もしくは RDP で接続して Visual Studio と Atom を利用することも可能です。
以下の play 定義を bigip-error-handling.yml
に追加してください:
---
- name: BIG-IP SETUP
hosts: lb
connection: local
gather_facts: false
---
はこのファイルが YAML であることを示します。hosts: lb
はこのプレイブックが lb グループのみで実行されることを示しています。 本演習では、BIG-IP機器は1つだけですが、もし複数台が設定されている場合には同時に設定されます。connection: local
は Playbook がローカル実行されることを示します。gather_facts: false
Fact 情報の収集を無効にします。この演習では Playbook の中で Fact 情報を利用しません。プロバイダ値を設定するために set_fact
を含む tasks を追加します。
tasks:
- name: Setup provider
set_fact:
provider:
server: "{{private_ip}}"
user: "{{ansible_user}}"
password: "{{ansible_password}}"
server_port: 8443
validate_certs: false
次に、block
句とタスクを追加します。タスク演習 1.2 - F5 BIG-IPへノードを追加 で実行した bigip_node
です。
- name: SETUP AND GRACEFUL ROLLBACK BIG-IP CONFIGURATION
block:
- name: CREATE NODES
f5networks.f5_modules.bigip_node:
provider: "{{provider}}"
host: "{{hostvars[item].ansible_host}}"
name: "{{hostvars[item].inventory_hostname}}"
loop: "{{ groups['web'] }}"
次に、 演習 1.3 - プールの追加 で利用されたbigip_pool
のタスクを追加します。
- name: CREATE POOL
f5networks.f5_modules.bigip_pool:
provider: "{{provider}}"
name: "http_pool"
lb_method: "round-robin"
monitors: "/Common/http"
monitor_type: "and_list"
次タスクでは 演習 1.4 - メンバーをプールへ追加 で説明した bigip_pool_member
を使用します。
- name: ADD POOL MEMBERS
f5networks.f5_modules.bigip_pool_member:
provider: "{{provider}}"
state: "present"
name: "{{hostvars[item].inventory_hostname}}"
host: "{{hostvars[item].ansible_host}}"
port: "80"
pool: "http_pool"
loop: "{{ groups['web'] }}"
次に演習 1.5 - Virtual Server の追加で使用した bigip_virtual_server
タスクを追加します。
- name: ADD VIRTUAL SERVER
f5networks.f5_modules.bigip_virtual_server:
provider: "{{provider}}"
name: "vip"
destination: "{{private_ip}}"
port: "443"
enabled_vlans: "all"
all_profiles: ['http', 'clientssl', 'oneconnect']
pool: "http_pool"
snat: "Automap1"
次に、rescue 句を追加します。rescue
句に配置されるタスクは、 演習 2.1 - コンフィグの削除 と同じです。ノードとプールを削除するとすべての構成が削除されるため、bigip_pool_member
タスクを再入力する必要はありません。block 内のいずれかのタスクが失敗すると、rescue が順番に実行されます。VIP、プール、およびノードは適切に削除されます。
rescue:
- name: DELETE VIRTUAL SERVER
f5networks.f5_modules.bigip_virtual_server:
provider: "{{provider}}"
name: "vip"
state: absent
- name: DELETE POOL
f5networks.f5_modules.bigip_pool:
provider: "{{provider}}"
name: "http_pool"
state: absent
- name: DELETE NODES
f5networks.f5_modules.bigip_node:
provider: "{{provider}}"
name: "{{hostvars[item].inventory_hostname}}"
state: absent
loop: "{{ groups['web'] }}"
最後に always を追加してrunning config を保存します。
always:
- name: SAVE RUNNING CONFIGURATION
f5networks.f5_modules.bigip_config:
provider: "{{provider}}"
save: true
上記の Playbook では、仮想サーバー、プール、ノードの構成を試みますが、snat値が Automap1
として提供されているため、仮想サーバーの追加は失敗し、rescue
が実行されます。
Playbook の実行 - コマンドラインへ戻ったら以下のコマンドでPlaybookを実行してください:
[student1@ansible ~]$ ansible-playbook bigip-error-handling.yml
[student1@ansible ~]$ ansible-playbook bigip-error-handling.yml
PLAY [BIG-IP SETUP] ****************************************************************************************************
TASK [Setup provider] **************************************************************************************************
ok: [f5]
TASK [CREATE NODES] *****************************************************************************************************
changed: [f5] => (item=node1)
changed: [f5] => (item=node2)
TASK [CREATE POOL] *******************************************************************************************************
changed: [f5]
TASK [ADD POOL MEMBERS] **************************************************************************************************************************
changed: [f5] => (item=node1)
changed: [f5] => (item=node2)
TASK [ADD VIRTUAL SERVER] ***************************************************************************************************************************
fatal: [f5]: FAILED! => {"changed": false, "msg": "0107163f:3: Pool (/Common/Automap1) of type (snatpool) doesn't exist."}
TASK [DELETE VIRTUAL SERVER] **************************************************************************************************************************
ok: [f5]
TASK [DELETE POOL] **************************************************************************************************************************
changed: [f5]
TASK [DELETE NODES] **************************************************************************************************************************
changed: [f5] => (item=node1)
changed: [f5] => (item=node2)
TASK [SAVE RUNNING CONFIGURATION] ***************************************************************************************************************************
changed: [f5]
PLAY RECAP *****************************************************************************************************************
f5 : ok=8 changed=6 unreachable=0 failed=0 skipped=0 rescued=1 ignored=0
完成したPlaybookのサンプルは bigip-error-handling.yml から参照できます。
これで本演習は終わりです。演習ガイドへ戻る