F5OS-A 簡単セットアップガイド (API編)

最終更新日: 2023年9月26日

はじめに

このページでは、これらのオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。 F5のオフィシャルなドキュメントはこちらにございます。

コンテンツ

このページでは、以下の内容をご紹介しております。

  • 本セットアップガイドでは、APIを使ったF5OS-A (F5 rSeries)の設定方法についてご案内します。
  • F5 rSeriesでは、F5OS上でBIG-IPを「テナント」として動作させることができ、1つの筐体で複数のテナントを動作させることができます (マルチテナント)。
  • F5OS-Aは、オペレーションをAPI経由で行うことができます。
  • 本ガイドでは、F5 rSeriesをご購入いただいてすぐに使い始められるように、F5 rSeriesの典型的なセットアップ手法を紹介します。
  • 管理用のマネージメントIPアドレスは、設定済みである前提としております。
  • 本ガイドは、F5 Japanにおけるハンズオントレーニングで実施している内容に準拠しております。

F5 rSeriesの初期設定

本章では、基本的なF5 rSeries (F5OS-A)の設定内容についてご紹介致します。

Management IP設定

リモート端末からAPIでアクセスできるようにするために、CLIでManagement IPアドレスを設定します。詳細な手順につきましては、以下のドキュメントをご参照ください。

https://f5j-easy-setup-f5os.readthedocs.io/ja/latest/module1/class01/class1.html

F5OS初期パスワード変更

F5OSのadminユーザーの初期パスワードは"admin"になっています。API経由でアクセスするには、初期パスワードを変更する必要があります。以下のようなcurlコマンドを実行して、adminユーザーの初期パスワードを変更します。(<>内の部分は、ご利用の環境に合わせて修正してください。)

$ curl -sk -u admin:admin -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/operations/openconfig-system:system/aaa/authentication/users/user=admin/config/change-password -d @- <<EOS
{
    "input": [
        {
            "old-password": "admin",
            "new-password": "<F5OSのadminユーザーパスワード>",
            "confirm-password": "<F5OSのadminユーザーパスワード>"
        }
    ]
}
EOS

APIアクセストークンの取得

  • 最初に、変数"F5OS_PASSWORD"および"APPLIANCE_IP"を設定します。環境変数として設定する場合には、以下のようなコマンドを実行してください。(<>内の部分は、ご利用の環境に合わせて修正してください。)
$ export F5OS_PASSWORD=<F5OSのadminユーザーパスワード>
$ export APPLIANCE_IP=<rSeriesのManagement IPアドレス>
  • 以下のようなコマンドを実行し、Basic認証でAPIアクセストークンを取得します。レスポンス・ヘッダ内に含まれる"X-Auth-Token"の値を取得し、以降のAPIリクエストに利用します。
$ curl -sk -u admin:$F5OS_PASSWORD -I https://$APPLIANCE_IP/api/data/openconfig-system:system/aaa

注釈

F5OSでは、ポート8888およびポート443でAPIコールを受け付けることができます (いずれもhttps)。ポート443を利用する場合、URIの最初の部分は"/api"となります。ポート8888を利用する場合、URIの最初の部分は"/restconf"となります。本資料では、ポート443で"/api"を用いる場合について、ご紹介していきます。

  • 上記のコマンドの出力例は、以下の通りです。
HTTP/1.1 200 OK
Date: Thu, 17 Aug 2023 15:37:35 GMT
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubdomains;
Cache-Control: private, no-cache, must-revalidate, proxy-revalidate
Content-Type: application/yang-data+xml
Pragma: no-cache
X-Auth-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTZXNzaW9uIElEIjoiYWRtaW4xNjkyMjg2NjU1IiwiYXV0aGluZm8iOiJhZG1pbiAxMDAwIDkwMDAgXC90bXAiLCJidWZmZXJ0aW1lbGltaXQiOiIzMDAiLCJleHAiOjE2OTIyODc1NTUsImlhdCI6MTY5MjI4NjY1NSwicmVuZXdsaW1pdCI6IjUiLCJ1c2VyaW5mbyI6ImFkbWluIDE3Mi4xOC4yMDIuMTk3In0.WfIWKmKf3ykk3Uorlmurx_YmeialOZbnxzoZDawixy8
Content-Security-Policy: default-src 'self'; block-all-mixed-content; base-uri 'self'; frame-ancestors 'none';
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src 'self'; upgrade-insecure-requests; frame-ancestors 'none'; script-src  'self'; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self' data:; manifest-src 'self'; media-src 'self'; worker-src 'none';
  • 以下のコマンドを実行することで、レスポンス・ヘッダ内のX-Auth-Tokenの値を変数"F5OS_TOKEN"に代入できます。
$ F5OS_TOKEN=`curl -sk -u admin:$F5OS_PASSWORD -o /dev/null -I https://$APPLIANCE_IP/api/data/openconfig-system:system/aaa -w '%header{X-Auth-Token}\n'`
  • 以下のコマンドを実行して、変数"F5OS_TOKEN"に値が格納されていることを確認します。
$ echo $F5OS_TOKEN

rSeries アプライアンス初期設定

ライセンス確認
  • 以下のコマンドを実行して、rSeriesアプライアンスに適用されているライセンス情報を確認します。このコマンドを実行すると、Registration Keyを含むライセンス情報を確認できます。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-system-licensing:licensing
ホスト名の設定
  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンスのホスト名を設定します。ホスト名の設定には、PATCHメソッドを使用します。この例では、ホスト名を"Appliance01"として設定します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/ -d @- <<EOS
{
    "openconfig-system:system": {
        "config": {
            "hostname": "Appliance01"
        }
    }
}
EOS
  • 以下のコマンドを実行して、ホスト名が適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/config
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
   "openconfig-system:config": {
     "hostname": "Appliance01"
   }
}
DNSサーバー設定
  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンスが参照するDNSサーバーを設定します。DNSサーバーの設定には、PATCHメソッドを使用します。この例では、参照するDNSサーバーを"8.8.8.8"として設定します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/dns -d @- <<EOS
{
    "openconfig-system:dns": {
        "servers": {
            "server": [
                {
                    "address": "8.8.8.8",
                    "config": {
                        "address": "8.8.8.8",
                        "port": 53
                     }
                 }
             ]
         }
     }
}
EOS
  • 以下のコマンドを実行して、DNSサーバーが適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/dns
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "openconfig-system:dns": {
    "servers": {
      "server": [
        {
          "address": "8.8.8.8",
          "config": {
            "address": "8.8.8.8",
            "port": 53
          },
          "state": {
            "port": 53
          }
        }
      ]
    }
  }
}
時刻設定 (Time ZoneおよびNTPサーバー)
  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンスのタイムゾーン、および参照するNTPサーバーを設定します。時刻設定には、PATCHメソッドを使用します。この例ではTime Zoneを"Asia/Tokyo"、NTPサーバーを"ntp.nict.jp"として設定します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data -d @- <<EOS
{
     "openconfig-system:system": {
         "clock": {
             "config": {
                 "timezone-name": "Asia/Tokyo"
             }
         },
         "ntp": {
             "config": {
                 "enabled": "true"
             },
             "servers": {
                 "server": [
                     {
                         "address": "ntp.nict.jp",
                         "config": {
                             "address": "ntp.nict.jp"
                         }
                     }
                 ]
             }
         }
     }
}
EOS
  • 以下のコマンドを実行して、NTPサーバーが適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/ntp
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "openconfig-system:ntp": {
    "config": {
      "enabled": true,
      "enable-ntp-auth": false
    },
    "state": {
      "enabled": true,
      "enable-ntp-auth": false
    },
    "servers": {
      "server": [
        {
          "address": "ntp.nict.jp",
          "config": {
            "address": "ntp.nict.jp",
            "port": 123,
            "version": 4,
            "association-type": "SERVER",
            "iburst": false,
            "prefer": false
          },
          "state": {
            "address": "ntp.nict.jp",
            "port": 123,
            "version": 4,
            "association-type": "SERVER",
            "iburst": false,
            "prefer": false,
            "f5-openconfig-system-ntp:authenticated": false
          }
        }
      ]
    }
  }
}
リモートログサーバー設定
  • 以下のようなcurlコマンドを実行して、F5OSのログを転送するリモートログサーバー (Syslogサーバー)を設定します。ログサーバーの設定には、PATCHメソッドを使用します。この例では、ログサーバーを"10.10.10.10"として設定します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data -d @- <<EOS
{
    "openconfig-system:system": {
        "logging": {
            "remote-servers": {
                "remote-server": [
                    {
                        "host": "10.10.10.10",
                        "config": {
                            "host": "10.10.10.10",
                            "remote-port": "514"
                        },
                        "selectors": {
                            "selector": [
                                {
                                    "facility": "LOCAL0",
                                    "severity": "INFORMATIONAL",
                                    "config": {
                                        "facility": "LOCAL0",
                                        "severity": "INFORMATIONAL"
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }
}
EOS
  • 以下のコマンドを実行して、ログサーバーが適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/logging/remote-servers
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "openconfig-system:remote-servers": {
    "remote-server": [
      {
        "host": "10.10.10.10",
        "config": {
          "host": "10.10.10.10",
          "remote-port": 514,
          "f5-openconfig-system-logging:proto": "udp"
        },
        "selectors": {
          "selector": [
            {
              "facility": "f5-system-logging-types:LOCAL0",
              "severity": "INFORMATIONAL",
              "config": {
                "facility": "f5-system-logging-types:LOCAL0",
                "severity": "INFORMATIONAL"
              }
            }
          ]
        }
      }
    ]
  }
}
許可リスト (Allow List) 設定
  • 以下のようなcurlコマンドを実行して、F5OSのOut-of-band管理を許可するIPアドレス、およびポート番号を設定します。Allow Listの設定には、POSTメソッドを使用します。この例では、"10.255.0.0/24"からのSNMP (ポート161)通信を許可するAllow Listを設定します。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-allowed-ips:allowed-ips -d @- <<EOS
{
    "allowed-ip": [
        {
            "name": "allow-snmp",
            "config": {
                "ipv4": {
                    "address": "10.255.0.0",
                    "prefix-length": 24,
                    "port": 161
                }
            }
        }
    ]
}
EOS
  • 以下のコマンドを実行して、Allow Listが適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-allowed-ips:allowed-ips
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-allowed-ips:allowed-ips": {
    "allowed-ip": [
      {
        "name": "allow-snmp",
        "config": {
          "ipv4": {
            "address": "10.255.0.0",
            "prefix-length": 24,
            "port": 161
          }
        }
      }
    ]
  }
}

rSeries ネットワーク設定

VLAN設定
  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンス上でVLANを設定します。VLANの設定には、PATCHメソッドを使用します。この例では、VLAN ID "103" (VLAN名 "vlan103")とVLAN ID "104" (VLAN名 "vlan104")の2つのVLANを作成します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data -d @- <<EOS
{
    "openconfig-vlan:vlans": {
        "vlan": [
            {
                "vlan-id": "103",
                "config": {
                    "vlan-id": 103,
                    "name": "vlan103"
                }
            },
            {
              "vlan-id": "104",
                "config": {
                    "vlan-id": 104,
                    "name": "vlan104"
                }
            }
        ]
    }
}
EOS
  • 以下のコマンドを実行して、VLANが適切に設定されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-vlan:vlans
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "openconfig-vlan:vlans": {
    "vlan": [
      {
        "vlan-id": 103,
        "config": {
          "vlan-id": 103,
          "name": "vlan103"
        }
      },
      {
        "vlan-id": 104,
        "config": {
          "vlan-id": 104,
          "name": "vlan104"
        }
      }
    ]
  }
}
Interface設定
  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンスの物理インタフェースにVLANを割り当てます。インタフェースの設定には、PATCHメソッドを使用します。この例では、上記で作成したVLAN 103と104を、Trunk VLAN (Tagged)としてインタフェース3.0に割り当てます。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-interfaces:interfaces -d @- <<EOS
{
    "openconfig-interfaces:interfaces": {
        "interface": [
            {
                "name": "3.0",
                "openconfig-if-ethernet:ethernet": {
                    "openconfig-vlan:switched-vlan": {
                        "config": {
                            "trunk-vlans": [
                                103,
                                104
                            ]
                        }
                    }
                }
            }
        ]
    }
}
EOS
  • 以下のコマンドを実行して、インタフェース3.0の設定を確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-interfaces:interfaces | jq ".[].interface[2]"
  • 上記で設定したtrunk-vlans (103および104)が含まれていることを確認します。

BIG-IPテナントの管理

本章では、F5 rSeries上で動作するBIG-IPテナントをAPIで管理する方法について、ご紹介致します。

BIG-IPテナントのデプロイ

  • 以下のようなcurlコマンドを実行して、rSeriesアプライアンス上にBIG-IP (TMOS)テナントを作成します。テナントの作成には、POSTメソッドを使用します。この例で作成するテナントの構成は、以下の通りです。
設定項目
テナント名 test-tenant01
テナント種別 BIG-IP
利用するテナントイメージ BIGIP-17.1.0.2-0.0.2.ALL-F5OS.qcow2.zip.bundle
BIG-IPテナントの管理IPアドレス 172.28.15.216
デフォルトゲートウェイ 172.28.15.254
サブネット長 (Prefix-length) 23
テナントに割り当てるVLAN 103および104
テナントに割り当てる仮想CPU数 4
テナントに割り当てるメモリ (MB) 14848
テナントに割り当てるディスク容量 (GB) 82
テナントの状態 Deployed
アプライアンス・モード 無効
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants -d @- <<EOS
{
    "tenant": [
        {
            "name": "test-tenant01",
            "config": {
                "type": "BIG-IP",
                "image": "BIGIP-17.1.0.2-0.0.2.ALL-F5OS.qcow2.zip.bundle",
                "nodes": [
                    1
                ],
                "mgmt-ip": "172.28.14.216",
                "gateway": "172.28.15.254",
                "prefix-length": 23,
                "vlans": [
                    "103",
                    "104"
                ],
                "vcpu-cores-per-node": 4,
                "memory": 14848,
                "storage": {
                    "size": 82
                },
                "cryptos": "enabled",
                "running-state": "deployed",
                "appliance-mode": {
                    "enabled": false
                }
            }
        }
    ]
}
EOS
  • 以下のコマンドを実行して、F5OSで稼働するテナントを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants
  • 上記のコマンドの出力例は、以下の通りです。
{
  "f5-tenants:tenants": {
    "tenant": [
      {
        "name": "test-tenant01",
        "config": {
          "name": "test-tenant01",
          "type": "BIG-IP",
          "image": "BIGIP-17.1.0.2-0.0.2.ALL-F5OS.qcow2.zip.bundle",
          "nodes": [1],
          "mgmt-ip": "172.28.15.216",
          "prefix-length": 23,
          "dag-ipv6-prefix-length": 128,
          "gateway": "172.28.15.254",
          "vlans": [103, 104],
          "cryptos": "enabled",
          "vcpu-cores-per-node": 4,
          "memory": "14848",
          "storage": {
            "size": 82
          },
          "running-state": "deployed",
          "mac-data": {
            "f5-tenant-l2-inline:mac-block-size": "one"
          },
          "appliance-mode": {
            "enabled": false
          }
        },
        "state": {
          "name": "test-tenant01",
          "unit-key-hash": "CvXv44ROa3LiMjsI4k0mmxiaOZa4rk5iN97edJD2lWYOu0tLgxcBpLC7z9Ubpw4jgaG+D0Xp+hoe6Ffv9HNnXQ==",
          "type": "BIG-IP",
          "image": "BIGIP-17.1.0.2-0.0.2.ALL-F5OS.qcow2.zip.bundle",
          "mgmt-ip": "172.28.15.216",
          "prefix-length": 23,
          "dag-ipv6-prefix-length": 128,
          "gateway": "172.28.15.254",
          "vlans": [103, 104],
          "cryptos": "enabled",
          "vcpu-cores-per-node": 4,
          "memory": "14848",
          "storage": {
            "size": 82
          },
          "running-state": "deployed",
          "mac-data": {
            "base-mac": "14:a9:d0:1a:82:14",
            "mac-pool-size": 1,
            "f5-tenant-l2-inline:mac-block": [
              {
                "mac": "14:a9:d0:1a:82:14"
              }
            ]
          },
          "appliance-mode": {
            "enabled": false
          },
          "cpu-allocations": {
            "cpu-allocation": [
              {
                "node": 1
              }
            ]
          },
          "feature-flags": {
            "stats-stream-capable": true
          },
          "status": "Running",
          "primary-slot": 1,
          "image-version": "BIG-IP 17.1.0.2 0.0.2",
          "instances": {
            "instance": [
              {
                "node": 1,
                "pod-name": "test-tenant01-1",
                "instance-id": 1,
                "phase": "Running",
                "creation-time": "2023-08-21T07:09:32Z",
                "ready-time": "2023-08-21T07:10:00Z",
                "status": "Started tenant instance",
                "mgmt-mac": "14:a9:d0:1a:82:15"
              }
            ]
          }
        }
      }
    ]
  }
}

BIG-IPテナントの状態変更

F5OS上のテナントには以下の3種類の状態があり、F5OSから変更することができます。

状態 説明
Configured テナント設定のみシステム上に存在
Provisioned ソフトウェアをインストールし、仮想ディスクを作成
Deployed リソース (CPU/メモリ)を割り当て、テナントを起動
  • 以下のcurlコマンドを実行して、作成したテナント"test-tenant01"の状態を"Configured"に変更します。テナントの状態設定には、PATCHメソッドを使用します。
$ curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants/tenant=test-tenant01/config/running-state -d @- <<EOS
{
    "running-state": "configured"
}
EOS
  • 以下のcurlコマンドを実行して、テナント"test-tenant01"の状態が"Configured"に変更されているかを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants/tenant=test-tenant01/config/running-state
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-tenants:running-state": "configured"
}

å

BIG-IPテナントの削除

  • 以下のcurlコマンドを実行して、作成したテナント"test-tenant01"を削除します。テナントの削除には、DELETEメソッドを使用します。
$ curl -sk -X DELETE -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants/tenant=test-tenant01
  • 以下のcurlコマンドを実行して、BIG-IPテナントを確認します。上記で削除したテナントが、存在していないことを確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/f5-tenants:tenants

F5OSのアップグレード

本章では、APIを使ってF5OSをアップグレードする方法について、ご紹介致します。

F5OSのバージョン確認

  • rSeries筐体にF5OSのイメージをアップロード後、以下のcurlコマンドを実行して、イメージの状態を確認します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-system-image:image/state
  • 上記のコマンドの出力例は、以下の通りです。
{
  "f5-system-image:state": {
    "os": {
      "os": [
        {
          "version-os": "1.3.2-13054",
          "status": "ready",
          "date": "2023-01-26",
          "size": "922.16MB",
          "in-use": false,
          "type": ""
        },
        {
          "version-os": "1.5.1-12283",
          "status": "ready",
          "date": "2023-08-14",
          "size": "926.15MB",
          "in-use": true,
          "type": ""
        }
      ]
    },
    "services": {
      "service": [
        {
          "version-service": "1.3.2-13054",
          "status": "ready",
          "date": "2023-01-26",
          "size": "0.38GB",
          "in-use": false,
          "type": ""
        },
        {
          "version-service": "1.3.0-8327",
          "status": "ready",
          "date": "2023-01-26",
          "size": "2.15GB",
          "in-use": false,
          "type": ""
        },
        {
          "version-service": "1.5.1-12283",
          "status": "ready",
          "date": "2023-08-14",
          "size": "2.05GB",
          "in-use": true,
          "type": ""
        },
        {
          "version-service": "1.5.0-5781",
          "status": "ready",
          "date": "2023-08-14",
          "size": "2.49GB",
          "in-use": false,
          "type": ""
        }
      ]
    },
    "iso": {
      "iso": [
        {
          "version-iso": "1.3.2-13054",
          "status": "ready",
          "date": "2023-01-26",
          "size": "4.04GB",
          "in-use": false,
          "type": ""
        },
        {
          "version-iso": "1.5.1-12283",
          "status": "ready",
          "date": "2023-08-14",
          "size": "6.05GB",
          "in-use": false,
          "type": ""
        }
      ]
    },
    "install": {
      "install-os-version": "1.5.1-12283",
      "install-service-version": "1.5.1-12283",
      "install-status": "none"
    }
  }
}

F5OSのバージョン変更

  • 以下のようなcurlコマンドを実行して、筐体のF5OSバージョンを任意のものに変更します。F5OSのアップグレード/ダウングレードには、POSTメソッドを使用します。この例では、F5OS 1.3.2 Buld 13054 (1.3.2-13054)をインストールします。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-system-image:image/set-version -d @- <<EOS
{
    "input": {
        "iso-version": "1.3.2-13054"
    }
}
EOS
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-system-image:output": {
    "response": "System ISO version has been set"
  }
}
  • F5OS再起動後、F5OSのバージョン確認 の手順に従ってF5OSイメージを確認し、"Install"以下の部分が指定したF5OSバージョンになっていることを確認します。

設定の保存とリストア

本章では、APIを使ってF5OSの設定を保存 (バックアップ)、およびリストアする方法について、ご紹介致します。

設定の保存 (バックアップ)

プライマリキーの設定

F5 rSeriesでは、設定データベースに含まれる機密性の高いパスワードやパスフレーズを暗号化/復号化するために、プライマリキーを使用します。 セキュリティを高めるために、プライマリキーは定期的にリセットすることを推奨します。 RMA時等、異なるデバイスに設定をリストアする場合、リストア対象のデバイスに同一のキーを設定する必要があります。

  • 以下のcurlコマンドを実行して、rSeriesにプライマリキーを設定します。プライマリキーを新規に設定する際には、POSTメソッドを使用します。この例ではパスフレーズを"myprimarykey"、saltを"mysalt"として設定します。
curl -sk -X PATCH -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/aaa/f5-primary-key:primary-key/f5-primary-key:set -d @- <<EOS
{
    "f5-primary-key:passphrase": "myprimarykey",
    "f5-primary-key:confirm-passphrase": "myprimarykey",
    "f5-primary-key:salt": "mysalt",
    "f5-primary-key:confirm-salt": "mysalt"
}
EOS
バックアップファイルの作成
  • 以下のcurlコマンドを実行して、F5OSの設定を保存 (バックアップ)します。設定のバックアップには、POSTメソッドを使用します。この例では、バックアップファイル名を"F5OS-BACKUP01"として設定します。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-database:database/f5-database:config-backup -d @- <<EOS
{
    "f5-database:name": "F5OS-BACKUP01"
}
EOS
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-database:output": {
    "result": "Database backup successful. configs/F5OS-BACKUP01 is saved."
  }
}
  • 保存されたバックアップファイルは、ローカル端末等にダウンロードしておきます。

F5OSの初期化

  • 以下のcurlコマンドを実行して、F5OSを初期化します。F5OSの初期化には、POSTメソッドを使用します。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-database:database/f5-database:reset-to-default -d @- <<EOS
{
  "f5-database:proceed": "yes"
}
EOS
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-database:output": {
    "result": "Database reset-to-default successful."
  }
}

設定のリストア

  • 以下のcurlコマンドを実行して、バックアップファイルからF5OSの設定をリストアします。設定のリストアには、POSTメソッドを使用します。この例では、"F5OS-BACKUP01"という名前のバックアップファイルから、リストアを行います。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-database:database/f5-database:config-restore -d @- <<EOS
{
    "f5-database:name": "F5OS-BACKUP01",
    "f5-database:proceed": "yes"
}
EOS
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-database:output": {
    "result": "Database config-restore successful."
  }
}

トラブル発生時の操作

本章では、APIを使ったF5OSの障害発生時の操作方法について、ご紹介致します。

QKViewの取得

  • 以下のcurlコマンドを実行して、F5OSのQKViewファイルを取得します。QKViewの取得には、POSTメソッドを使用します。この例では、QKViewファイル名を"mytest-qkview.tgz"として設定します。
$ curl -sk -X POST -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-system-diagnostics-qkview:diagnostics/f5-system-diagnostics-qkview:qkview/f5-system-diagnostics-qkview:capture -d @- <<EOS
{
    "f5-system-diagnostics-qkview:filename": "mytest-qkview.tgz"
}
EOS
  • 上記コマンドの実行結果 (レスポンス)は、以下の通りです。
{
  "f5-system-diagnostics-qkview:output": {
    "result": " Warning: Qkview may contain sensitive data such as secrets, passwords and core files. Handle with care. Please send this file to F5 support. \nQkview file mytest-qkview.tgz is being collected.\nreturn code 200\n ",
    "resultint": 0
  }
}
  • 以下のcurlコマンドを実行して、rSeriesアプライアンス上に保存されたQKViewファイルの一覧を取得します。
$ curl -sk -H "X-Auth-Token:$F5OS_TOKEN" -H "Content-Type:application/yang-data+json" https://$APPLIANCE_IP/api/data/openconfig-system:system/f5-system-diagnostics-qkview:diagnostics/f5-system-diagnostics-qkview:qkview/f5-system-diagnostics-qkview:state/f5-system-diagnostics-qkview:files/f5-system-diagnostics-qkview:file
  • 上記のコマンドの出力例は、以下の通りです。
{
  "f5-system-diagnostics-qkview:file": [
    {
      "filename": "mytest-qkview.tgz",
      "size": 622282180,
      "created-on": "2023-08-21T17:55:40.185751329+09:00"
    }
  ]
}

おわりに

APIによるF5OS初期セットアップに関しては、以上で終了となります。

<F5ネットワークスWEBサイトの紹介>

F5ネットワークスジャパン総合サイト
F5のセキュリティ ソリューション
MtyF5:ナレッジベース総合サイト (英語)
DevCentral: F5ユーザコミュニティサイト (英語:アカウント登録が必要です)
F5公式販売代理店リスト

以上

本資料は設計・構築を補助するための情報提供を目的としています。内容についてできる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることをあらかじめご了承ください。 この文書に記載された製品の仕様、ならびに動作に関しては各社ともにこれらを予告なく改変する場合がありま す。F5製品の各機能やコマンドに関する正式な情報に関しては AskF5 (https://support.f5.com/)の対応するハードウェアプラットフォーム、ソフトウェアバージョンに即してご確認下さい。

本資料の著作権は、F5ネットワークスジャパン合同会社にあります。 本文中にある製品名は、各社の商標または登録商標です。