今回はMAASの話をしたいと思います。 MaaS (Mobility as a Service)のほうではなくて、MAAS (Metal as a Service)のほうです。
MAASはCanonicalが開発する、簡単に言うとサーバーの管理とOSのプロビジョニングを行うことができるツールです。 公式サイトの説明に従ってセットアップするだけですぐ使えます。
「お、良いな使ってみよう!」と思った方に一つだけ注意事項があります。MAASではDHCPサーバーを内部で利用するため、普段利用とは別のネットワーク(もしくはVLAN)でお試しください。「誤家庭じゃないし、VLANを使えるスイッチとかないよ」という方はルーターモードを使える無線LANのルーターでも使えばなんとかなると思います。
MAASはregiondとrackdの2つのコンポーネントによって構成されており、その中でDNS、DHCP、IPMI、PXE、Squid Proxyなどのサービスが稼働しています。 MAASのサーバーでDHCPサーバーを定義して、ノードを同じネットワークに接続することで、OSのプロビジョニングが可能です。
MAASのデフォルトの設定はMAASサーバーをプロキシーサーバーとして使うようにデプロイしたノードに設定してくれますが、デフォルトの設定のまま運用するとMAASのサーバーにパッケージキャッシュが保管されることになり、ストレージの消費とキャッシュの読み書きによる他のサービスのパフォーマンスの低下が懸念されます。
そこで、MAASには外部プロキシーを使うための設定が用意されています。その外部プロキシーとしてapproxを使う方法をご紹介します。
JujuおよびMAASなどをオフライン環境下で使う方法はWorking Offlineのページにまとまっています。この中のコンテンツの一つにApt Proxyがあり、どういったプロキシーサーバーが使えるか書かれています。ここにはapproxが書かれていませんが、一応使えるので今回取り上げたいと思います。
approxのインストール
Ubuntuにはいくつかのプロキシーサーバーがdebパッケージとして用意されてます。 approxをインストールするには次のように行います。
$ sudo apt update $ sudo apt install approx
approxの設定
設定ファイルにキャッシュ対象を記述します(正確にはエイリアスを定義します)。 例ではviで開いていますが、お好みのエディタで開いてください。
$ sudo vi /etc/approx/approx.conf ... ubuntu http://archive.ubuntu.com/ubuntu/ daily http://images.maas.io/ephemeral-v3/daily/
設定後、一旦次のコマンドを実行します。
$ sudo systemctl restart approx.socket
approxサーバーのIPアドレスが 192.168.1.100
の場合、ブラウザーで「 http://192.168.1.100:9999/
」にアクセスすると、次のようなページが表示されます。
先程の画面にもリンクが貼られていますが、approxサーバーのIPアドレスが 192.168.1.100
の場合は次のURLでそれぞれアクセスできます。
http://192.168.1.100:9999/ubuntu/
http://192.168.1.100:9999/daily/
approxプロキシーを使う
このApt Proxyを普通にインストールしたUbuntu Serverで使うには、 Ubuntu 16.04などでは /etc/apt/apt.conf
、Ubuntu 18.04以降では /etc/apt/apt.conf.d/90cloud-init-aptproxy
などに設定することでaptコマンド実行時に利用できます。
Acquire::http::Proxy "http://192.168.1.100:9999/";
なお、httpsソースはサポートされていませんので、例えばDocker CEリポジトリーにアクセスしたい場合は次のような設定を追記してください。この設定をした場合はhttpsではプロキシーを経由しません。
Acquire::https::proxy "DIRECT"
approxプロキシーをMAASで使う
approxプロキシーをMAASで使うには2つの設定を変更する必要があります。
MAAS Proxyの設定変更
一つは「Proxyの設定」です。この設定はデフォルトは「MAAS Built-in」が設定されておりMAAS自らがプロキシーとして動いています。これをExternalに変更し、Mirror URLに「http://192.168.1.100:9999/」(IPアドレスは置き換えてください)のように設定します。
MAAS イメージソースの変更
もう一つは「イメージの設定」です。ソースとしてカスタムを選び、Mirror URLに「http://192.168.1.100:9999/daily/」(IPアドレスは置き換えてください)のように設定します。ちなみにここの設定を変更しないと「http://images.maas.io/ephemeral-v3/daily/ にアクセスできません」と、MAASが怒り出します。
MAAS側の設定は以上です。 MAASでノードを選択してデプロイを実行するとプロキシーが使われます。プロキシーキャッシュがない場合は、外部にファイルを取りに行ってくれます。
approxプロキシーサーバー上で「sudo tcpdump -Q in port not ssh」を実行したあと、デプロイを実行してみてください。また、「tree /var/cache/approx」を実行するとプロキシーキャッシュのディレクトリーを一覧表示できます。
approxプロキシーの使い勝手
aptコマンドを実行したときにキャッシュが存在すれば、パッケージのダウンロードが速くなって良い感じです。より快適にするには、aptのミラーとMAASのルートイメージのミラーをローカルにとって、approxプロキシーもそれに合わせると更に良い感じになります。