Ansible×BIG-IP site.ymlの解説編

Ansible
スポンサーリンク
スポンサーリンク

関連リンク集

pyenvを用いたAnsibleが利用するPython実行環境の準備、VScodeによるポートフォワーディングの設定
pyenvによるpythonのバージョン管理、AnsibleのインストールからVScodeのポートフォワーディングの設定など、Ansibleを使用するための環境を用意する方法を解説しています。
AnsibleによるBIG-IPを制御(イメージファイルとライセンス取得)
Ansibleを使ってBIG-IPを検証するため、VMや検証用ライセンスの取得方法についてスクショつきで解説しております。
データベースエラー
Ansible×BIG-IP LTM-playbookの概要を解説
Ansibleを用いてBIG-IPにVirtualServerを作成する場合に必要となるplaybookについて解説しています。ここではplaybookのフォルダ構成とその概要に留めています。
Ansible×BIG-IP LTM-host_varsの解説
AnsibleでBIG-IPにVirtualServerを作成するplaybookにて、必要となるhost_varsについて紹介しています。
Ansible×BIG-IP LTM-group_varsの解説
Ansibleを用いてBIG-IPでVirtualserverを作成するplaybookで必要となるgroup_varsについて紹介しています。
Ansible×BIG-IP LTM-ansible.cfgの解説
Ansibleを用いてBIG-IPにVertual Serverを作成するためのansible.cfgについて紹介しています。
Ansible×BIG-IP LTM-inventoryファイルの解説
AnsibleでBIG-IP LTMにVirtual Serverを作成する時に使用するplaybookのinventoryファイルについて解説しています。

~~~~~~現在のページは下記サイト~~~~~~~

Ansible×BIG-IP site.ymlの解説編
BIG-IPをAnsibleで操作するためのsite.ymlの記述について解説しています。roleを用いるのでsite.ymlは必須となります。

前置き

Ansibleのplaybook管理手法のBest Practiceに則った方法でplaybookを作成しています。playbookを構成するファイルの中で、ここではsite.ymlについて解説します。あまりAnsibleに馴染みのない方は以下のサイトを読んでおくと良いと思います。

site.ymlの構成について(古いサイトでみる構成)

以下のようにincludeでplaybookを読み込むと紹介されている場合が多いです。

– include: virtual-server.yml
本来はここで読み込むplaybookを制御したいのですが、以下のようなエラーが表示されてしまいます。そのため、virtual-server.ymlに記述するコードを直接site.ymlに記述するか、import_playbookを使います。
①includeを使用した場合

ERROR! ‘include’ is not a valid attribute for a Play

The error appears to be in ‘/home/itdorei/Ansible/BIGIP/site.yml’: line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


②importを使用した場合

ERROR! ‘import’ is not a valid attribute for a Play

The error appears to be in ‘/home/itdorei/Ansible/BIGIP/site.yml’: line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


③import_playbookの場合は以下となります。

– import_playbook: virtual-server.yml
importとincludeの違いについては以下の公式ドキュメントを参照ください。

 virtual-server.ymlの構成について

virtual-server.ymlの中身は以下となります。
あくまでも、ブログ管理人の検証で使用する場合の例となりますので、各自好きなようにアトリビュートの設定を修正することも可能です。名前も任意の名前のファイルで問題ありません。

– name: Create Virtual Server
  hosts: bigip
  gather_facts: no
  serial: 1
  roles:
    – Create_vertual_server_with_SNAT

解説

yamlファイルの場合、暗黙の了解で一番初めの行は—にする決まりがあります。
ただし、書かなくても動作には影響はありません。

name

任意の名前を入力します。名前ではブランクや-(ハイフン)を使用しても問題ありません。
ここでは、Virtual Serverを作成するのが目的のplaybookであるため”Create Virtual Server”としました。

hosts

実行対象を指定します。ここでは、inventoryで指定しているグループ名”bigip”を定義することで、bigipグループに所属するターゲットノードのホストへ実行します。

※inventoryより引用
[bigip]
virtualserver-1 ansible_host=192.168.0.11
virtualserver-2 ansible_host=192.168.0.11
virtualserver-3 ansible_host=192.168.0.11

gather_facts

実行対象ノードの構成情報を取得する場合にはyesを、不要な場合はnoとします。BIG-IPの各種オブジェクト(ノードやプロファイルなど)は別途、専用のモジュール(f5networks.f5_modules.bigip_device_info)を用いる必要がありますのでnoで良いです。

serial

inventoryで定義されているホストが複数ある場合、この値を1にすることで、ホスト毎にtaskを実行します。デフォルト値は5となります。
①メリット
・BIG-IPの場合、Virtual Server毎に定義した変数を読み込みますが、実行対象となるターゲットノードは同じです。そのため、serial値を大きくすることで、同時に重複したtaskを実行することによる想定外のエラーが稀に発生します。そのため、serial :1にすることで、そうしたエラーの発生を防ぎます。
・Virtual Server毎にログが出力されるため、ログの可読性が高くなります。
②デメリット
・VIrtual Serverを1つずつ作成していくことになるため、時間がかかります。

roles

読み込むroleを定義します。また、シーケンス(-)で定義することで、複数のroleを順番に読み込むことができます。

コメント

タイトルとURLをコピーしました