Read this in other languages: English, 日本語.
本演習では、BIG-IP virtual server module を使って、BIG-IPにVirtual Server を設定します。Virtual Server とは、IPとポート番号の組み合わせです。
テキストエディタを使って、bigip-virtual-server.yml
というファイルを新規作成します。
[student1@ansible ~]$ nano bigip-virtual-server.yml
vim
とnano
はコントロールノード上で利用可能です。RDP経由でのVisual Studio と Atom も同様です。
Ansible のプレイブックは YAML 形式のファイルです。YAMLは構造化されたフォーマットで、非常に読み易いものです。
以下の定義を bigip-virtual-server.yml
に入力します :
---
- name: BIG-IP SETUP
hosts: lb
connection: local
gather_facts: false
---
は、このファイルがYAMLであることを示します。hosts: lb
はこのプレイブックが lb グループのみで実行されることを示しています。 本演習では、BIG-IP機器は1つだけですが、もし複数台が設定されている場合には同時に設定されます。connection: local
で、このプレイブックが(自分自身にSSH接続をするのではなく)ローカル実行されることを指示しています。gather_facts: false
で、FACTの収集を無効化します。このプレイブックではFACT変数を使用しません。まだエディタを閉じないでください。
次に、タスクを追加します。このタスクは、bigip-virtual-server
モジュールを使用して、BIG-IP上にVirtual Server を設定します。
tasks:
- name: ADD VIRTUAL SERVER
f5networks.f5_modules.bigip_virtual_server:
provider:
server: "{{private_ip}}"
user: "{{ansible_user}}"
password: "{{ansible_password}}"
server_port: 8443
validate_certs: false
name: "vip"
destination: "{{private_ip}}"
port: "443"
enabled_vlans: "all"
all_profiles: ['http', 'clientssl', 'oneconnect']
pool: "http_pool"
snat: "Automap"
プレイブックは一連のタスクから成ります。タスクとモジュールは1:1の関係性があります。モジュールは、Ansible API やansible / ansible-playbook から利用可能で、再利用可能なスタンドアロンスクリプトです。実行結果は、JSON文字列として標準出力へ出力されます。
name: ADD VIRTUAL SERVER
: ユーザーが定義する説明文です。これは実行時に端末に表示されることになります。bigip_virtual_server:
: 使用するモジュールを宣言しています。provider:
: BIG-IP の詳細な接続情報のオブジェクト。server: ""
: 接続先となるBIG-IPのIPアドレスを指定します。これはインベントリ内で private_ip
として登録されているものです。user: ""
: BIG-IP へログインするユーザー名を指定します。password: ""
: BIG-IPへログインする際のパスワードを指定します。server_port: 8443
: BIG-IPへ接続する際のポート番号を指定します。validate_certs: false
: (あくまで演習用ラボなので)SSL証明書の検証を行わないように設定します。name: "vip"
: vip という名前のVirtual Server を作成することを指定します。destination"
: Virtual Server にIPアドレスを指定します。port
: Virtual Server がリッスンするポート番号を指定します。enabled_vlans
: Virtual Server が有効化されるVLANを指定します。all_profiles
: Virtual Server に全てのプロファイルをアサインします。pool
: Virtual Server に紐づけられるプールを指定します。snat
: Source NAT の指定をします。本演習では、Automap を設定しています。これにより、後段のWebサーバーへ送られるトラフィック(パケット)の送信元IPはBIG-IP自身のIPとなります。ファイルを保存して、エディタを終了してください。
プレイブックの実行 - コントロールホストのコマンドラインで以下を実行します。
[student1@ansible ~]$ ansible-playbook bigip-virtual-server.yml
[student1@ansible]$ ansible-playbook bigip-virtual-server.yml
PLAY [BIG-IP SETUP]*************************************************************
TASK [ADD VIRTUAL SERVER] ******************************************************
changed: [f5]
PLAY RECAP *********************************************************************
f5 : ok=1 changed=1 unreachable=0 failed=0
完成形のAnsible Playbook はこちらから参照可能です。 bigip-virtual-server.yml.
ブラウザでBIG-IPへログインして設定されたものを確認してみましょう。lab_inventory/hosts ファイルからBIG-IPのIPアドレスを確認して、https://X.X.X.X:8443/ のようにアクセスします。
BIG-IP へのログイン情報:
Virtual Serverは画面左のメニューから辿ることで確認できます。Local Traffic -> Virtual Server とクリックします。以下のスクリーンショットを参考にしてください。
それぞれのWebサーバー上ではApache HTTPD が実行されています。演習 1.1 から 1.5 までで、このWebサーバーからなるプールの負荷分散のセットアップが完了します。ブラウザで、BIG-IPのパブリックIPにアクセスします:
ここでは、ポート番号は 8443ではなく 443 を指定します。 例: https://X.X.X.X:443/
ブラウザを再読み込みを行うたびに、node1 と node2 が入れかわり表示されるはずです。以下のアニメーションを参考にしてください。
注:ブラウザの種類によっては、アニメーションが動かない可能性があります。
ブラウザを使用する代わりに、コントロールノードのコマンドラインを使うことも可能です。curl
コマンドを --insecure
と --silent
オプションをつけて、BIG-IPのパブリックIP:443 に対して実行します。出力結果を、割り当てられたstudent 番号(例:student5)を使って grep コマンドにかけることで確認しやすくなります。
[studentX@ansible ~]$ curl https://172.16.26.136:443 --insecure --silent | grep studentX
<p>F5TEST-studentX-node1</p>
[studentX@ansible ~]$ curl https://172.16.26.136:443 --insecure --silent | grep studentX
<p>F5TEST-studentX-node2</p>
[studentX@ansible ~]$ curl https://172.16.26.136:443 --insecure --silent | grep studentX
<p>F5TEST-studentX-node1</p>
これで本演習は終わりです。演習ガイドへ戻る