Service上のUbuntuインスタンスを作成したり,スケールする方法を紹介しました。Serviceではなく,LXCを用いて「ローカルにデプロイする方法」を紹介しましょう。Containers)は第226回でも紹介した仮想化ソフトウェアです。Linuxカーネルの機能を使っているため,Linuxカーネルが動く環境であれば,どのホストやゲストでも動かすことができます。Touch」は,Ubuntu用にカスタマイズしたLinuxカーネルとUbuntu環境を動かしつつ,その中でLXCを使ってAndroidの仮想マシンとAndroidサービスを動かしています。Provider」という形でLXCをサポートするようになりました。LXCを使う最大のメリットは,1台の物理マシンの上で特定のハードウェアを必要とせずに複数のサービスを独立して立ち上げられるということです。SoCを使用していない環境やKVMが使えないVPSマシン上でも複数の仮想マシン上で個々のサービスをデプロイできます。Providerはその効果を発揮するのです。OpenStackのバックエンドとしてLXCを使えばJujuから直接LXCを使えなくても同様のことは実現できます。その場合はOpenStackとLXCの組み合わせで「ちゃんと動く」ようにする必要があります。LXC上にデプロイする第288回の内容に従って,クライアント側にはJujuの最新版がインストールされているものとします(注1⁠)⁠。LXCを使う場合,クライアント=Bootstrapノードがインストールされるマシン=各種サービスがデプロイされるマシン,になります。Provider」と呼んでいます。Providerは本来Bootstrapノードのみ必要なMongoDBなどをクライアント側にインストールする必要があるため,jujuパッケージだけでなくjuju-localパッケージもインストールする必要があります。LTSを使用しているなら,より最新のカーネルをインストールするためにカーネルパッケージもインストールして再起動しておきましょう(注2⁠)⁠。init」コマンドで設定ファイルのひな形を作れば,「⁠~/.juju/environments.yaml」の中に以下のような設定が存在するはずです。EC2のときと異なり,今回はこの設定ファイルを変更する必要はありません。あとは標準で使われる環境を「local」に変更しておきましょう。"local"環境設定さえ行えばあとは通常のJujuと使い方は(ほとんど)同じです。いつもどおり,WordPresssとMySQLをデプロイして公開してみましょう。wordpress1点異なるのは,Bootstrapノードを管理者権限で起動する必要があるということです。BootstrapノードではMongoDBをrootで立ち上げているためにこれが必要になります。同様にJujuの環境をすべて削除するdestroy-environmentコマンドも管理者権限で実行する必要があります。デプロイ完了までの時間はマシンに依存します。EC2のときよりも速くなります。lxc-listコマンドやpsコマンドを使えば,各ノードごとにコンテナが起動してることがわかります。status」コマンドで「wordpress/0」に割り当てられているpublic-address宛にアクセスすれば,WordPressのログイン画面が表示されるはずです。注1)とくに12.04を使っている場合は,そのままだと古いJujuがインストールされてしまいますので,PPAを使うようにしてください。3.8がインストールされます。LTS用のバックポートカーネルが提供されるようになったら,ここでインストールすべきパッケージの名前も変わりますので,読む時期に合わせて適宜公式のドキュメントを参照するようにしてください。ホストの外からアクセスするJujuでデプロイしたWordPressサービスだけホストの外からアクセスできるようにしましょう。この場合に必要になる作業は,LXC上のサービスをホストの外に公開する方法と違いはありません。いくつかの方法が考えられますが,今回はiptablesで設定する方法を紹介します(注3⁠)⁠。ホストの80番ポートへのアクセスを「wordpress/0」の80番ポートへ転送するルールを追加します。statusコマンドで確認した「wordpress/0」の公開アドレスです(注4⁠)⁠。10.0.3.13:80この時点でホストのアドレスの80番ポートにアクセスすれば,WordPressの初期設定画面が表示されるようになっているはずです。-L」などで設定内容を確認してください。ちなみにこのままだと再起動を行うとiptablesの設定は破棄されます。再起動後も同じ設定を反映したい場合は,Ubuntuのiptablesのドキュメントを参考に,各環境に合わせて設定ファイルを記述しておきましょう(注5⁠)⁠。注3)リモートマシンのiptablesの設定は,失敗するとネットワーク越しにアクセスできなくなる可能性があります。注4)このままだと「wordpress/0」のIPアドレスが変わってしまうと動かなくなります。必要に応じて,LXCの特定のインスタンスは静的にアドレスを割り当てるなり,ホスト名で解決できる別の方法を用意すると良いでしょう。注5)より「Ubuntuらしい」方法を使うのであれば,iptablesを直接設定するのではなく,ufwを使うと良いでしょう。Ubuntu上でufwとLXCをともに使う場合,ブリッジ経由のアクセスをコンテナの中へフォワードできるよう,/etc/default/ufwのDEFAULT_FORWARD_POLICYを“⁠DROP⁠”から“⁠ACCEPT⁠”に変更することを忘れないでください。AzureといったIaaS系のクラウドプラットフォームに対応しています。Provisioning」も試験的に実装されました。これらはいずれもLXCと同様に,最初の環境設定ファイル(~/.juju/environments.yaml)の記述方法が異なるだけで,あとは他の環境と同じように使えます。switch」コマンドで複数の環境を使い分けることもできます。このためJujuを使えば,複数のクラウドプラットフォームを同じインターフェースで操作できるのです。