」??おおう、クラウドあるあるキタヨ・・・と言う感じでした。POPリストの取得に関しては以下のサイトに情報があります。APIを使用してリストを取得する必要がありそうです。こいつは厄介なことにちゃんとトークン認証を受けないとリストが得られない応答はJSON形式ということがわかりました。参考にしたのは以下のウェブサイトでした。templateの記事ばかりですので、たまには少し違う目線で記事を書いてみます。Portalをご利用されている方は多いと思いますが、Linuxな人は基本的にCUIから全て操作したい(古臭いですかね)、という方が多いと思います。AD上のプロパティからテナントIDを控えておくアカウントID/公開鍵/テナントIDを使用して、curlコマンドでトークンを引き出すという感じになる。curlに載せる内容を転載しておきます。https://login.windows.net/${TENANTID}/oauth2/token?api-version=1.0出力結果はJSON形式で、以下のような感じになります。"access_token":"<トークン文字列>"}上記「expires_in」を見る限り、有効期間は1時間程度に見えますね。いうことは、リスト更新のたびにこのコマンドは叩いたほうが良さそうだなと。先述したMicorosoftの情報から、どうやら以下の通り呼び出せば良さそう。https://management.azure.com/providers/Microsoft.Cdn/edgenodes?api-version=2017-10-12${KEY}としている箇所は、先に取得したトークン本体を埋め込む形になるようです。こちらも応答形式はJSONになってます。]}これでVerizon版すべてのCDNのPOPリストが載ってるようで、Standard/Premium/Custom全部が載っています。今回このリストのカテゴリは気にせず、IPv4アドレスをすべて抽出することを考えました。今回、なにか言語使って処理しようかとも考えたのだけど、この対応を取る状況が結構急ぎだったので、安直にシェルスクリプトで対応することに。シェルスクリプトでJSONを処理するには、jqというものがあるらしく、コレがいいらしい。今回はこんなふうに使っている。|@csv'やってることとしては、value->properties->ipAddressGroups->ipv4Addresses配下にある「baseIpAddress」及び「prefixLength」の「値」をCSV形式で取得するというものになってます。要素名の前に「.(ドット)」を付与することで、値を採取することができるようです。末尾の|@csvという記述によって、出力形式がCSVになるようで、実際の出力としては以下のようになってました。ACL形式に変換コレはかなり都合が良くて、sedで文字を変換したら簡単にnginx形式に変換できるなぁということに気づく。以下のように文字変換処理を加えて、nginx形式に持っていくことが出来ました。${TRANS_TEMP2}2つに処理が別れたのは、どうしてもうまく1行では処理できなかったから。何はともあれ、これで、出力リストが以下のようになる。88.194.47.224/27;Nginx設定へ埋め込み後は生成されたファイルをincludeしてあげればよいわけで、例えばコンフィグファイルの/(スラッシュ)に対する設定の中で以下のように書けばよいということになる。all;最終的に定期実行シェルとしてまとめる。処理の流れは大体つかめたので、この内容をもとに、シェルスクリプトを作成する。${LOGFILE}fiうーん、なんとも恥ずかしいコードと言うか、一々テキストファイルを生成して処理しているところが恥ずかしさの極みなんだけど、ご容赦くださいな。途中で処理失敗した場合、リストの中は空になることが分かっているので、その時はnginxを再起動しないように最低限のエラーハンドリングだけしている感じです。CDNにもよりますがぶっちゃけCloudFrontやCloudFlareについてはこのあたりよく分かっていないのですが、少なくともAkamai本家に関しては、こうした所は作り込みをせずとも、ある程度POPを絞って定義できる、SiteShieldというものが存在するようです。してもCDNは不特定多数のPOPでやりくりする側面があり、かつ、大量のホストで処理してなんぼな世界でもあったりするが故、こうした面倒なポイントというのは発生してしまうようです。今回、収穫としては、JSONについて少し中身を触ることが出来たこと、Azureに対するキートークン認証に触れることが出来たことの2つかな。最近こういう処理については少し逃げ腰だったところがあったので、良い勉強になりました。ここで記載する内容なんですが、以下が前提になっています。CDNを適用させてみた。networkの略で、コンテンツ配信に最適化されたネットワークと言うものだそうで、平たく言えば「広域展開された巨大なリバースプロキシ」を意味するものと思ってます。Ayameに手を出すSEIL/x86の新バージョンが出た。知る人ぞ知るIIJのネットワークルーター、SEILシリーズ。Fuji」という製品。SKUはとってもお安い。いうわけで、また非技術系ポエムを書いてしまいました。ごめんなさい、ごめんなさい。今はそういう気分なのかもしれません。2018へ行ってきました。3560にてipv6を実装した。StoreOnce-CatalystタイトルとURLをコピーしました。