4. Jujuクライアントのセットアップ

4.1 Jujuクライアントのインストール

MAASのセットアップが終わったら次にJujuのセットアップを行います。 次のようにUbuntu Server 16.04の最新版をインストールして、Jujuをインストールします。

% sudo add-apt-repository ppa:juju/stable
% sudo apt update
% sudo apt -y install juju

4.2 JujuとMAASの連携

MAASとJujuを連携するためにはまずyamlファイル(下記例)を作成します。

clouds:
   maas: ←これが「cloud name」
      type: maas
      auth-types: [oauth1]
      endpoint: http://maas-ip/MAAS

MAAS cloudをJujuで制御できるようにするため、juju add-cloudコマンドを実行します。 juju list-cloudsコマンドで登録されたことを確認します。

% juju add-cloud <cloudname> <YAML file>
% juju clouds  ←確認

MAASの認証情報(ユーザー、APIキー)を次のコマンドで追加します。 実行するとMAAS APIキーの入力を求められます。 キーはsudo maas-region apikey --username=<user>コマンドを実行して確認できます。

% juju add-credential maas
Enter credential name: ytooyama   ←認証用のユーザーを指定
Using auth-type "oauth1".
Enter maas-oauth: xxxxxxxxxxxxxxxxxxxx ←MAAS keysを入力(コピペ可能)
Credentials added for cloud maas.

% juju credentials --format yaml --show-secrets  ←確認
credentials:
  maas:
    ytooyama:
      auth-type: oauth1
      maas-oauth: xxxxxxxxxxxxxxxxxxxx

最後にjuju bootstrapを実行します。Juju 2.x系ではJuju-GUIは自動的に組み込まれます。 本例ではphysical0タグを指定したノードにbootstrapを導入することを想定しているので、次のようにパラメーターを指定してコマンドを実行します。

% juju bootstrap --constraints tags=physical0 maas maas

bootstrapプロセスが任意のノードで無事起動すると、Juju-GUIが利用できるようになります。 Juju-GUIのアクセスURLと認証情報はjuju guiコマンドで確認できます。

% juju gui --no-browser
GUI 2.9.2 for model "admin/openstack" is enabled at:
  https://172.17.29.221:17070/gui/u/admin/openstack
Your login credential is:
  username: admin
  password: ef3fd17a280cc9a774d4e939653192e8

4.3 Juju Machineのデプロイ

Juju 2.0では、アプリケーションとサービスプロバイダーはモデルというもので管理します。 現在Jujuに登録されたモデルはjuju modelsコマンドを使うことで確認できます。

% juju models
Controller: maas

Model       Cloud/Region  Status     Machines  Cores  Access  Last connection
controller* maas          available         1      4  admin   just now
default     maas          available         0      -  admin   2017-09-19

モデルを切り替えるにはjuju switchコマンドを実行します。 controllerというモデルは、bootstrapが実行されているノードを管理しているモデルです。次のように実行すると、マシン0のステータスが確認できます。

% juju switch controller
% juju status
Model       Controller  Cloud/Region  Version  SLA
controller  maas        maas          2.2.4    unsupported

App  Version  Status  Scale  Charm  Store  Rev  OS  Notes

Unit  Workload  Agent  Machine  Public address  Ports  Message

Machine  State    DNS            Inst id  Series  AZ       Message
0        started  172.17.29.221  4x77nc   xenial  default  Deployed

もう少し踏み込んでみましょう。Jujuクライアントマシンで次のように実行すると、Juju Machine 0にログインすることができます。

% juju ssh 0
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-96-generic x86_64)
...

juju sshコマンドに続けてコマンドを指定すると、リモートログインしてコマンドを実行して切断といった処理をまとめて行うことができます。

% juju ssh 0 ps aux|grep jujud
root  5946  0.0  0.0  18036  2852 ?   Ss Sep19   0:00 bash /var/lib/juju/init/jujud-machine-0/exec-start.sh
root  5952  2.1  0.6 793136 166476 ?  Sl Sep19 182:12 /var/lib/juju/tools/machine-0/jujud machine --data-dir /var/lib
Connection to 172.17.29.221 closed.

Juju 1.X系ではbootstrapとアプリケーションが同列に展開されたため、一度全てのアプリケーションを消すとbootstrapのデプロイからやり直す必要がありました。 Juju 2.X系ではbootstrapとアプリケーションが別々のモデルとして存在するため、トライアンドエラーがやりやすくなっています。

なにもモデルを指定せずにjuju deployコマンドを実行するとdefaultというモデルが作成されて、そこにJuju Machineが登録されます。 ここではopenstackというモデルを作成して、リソースはそのモデルで管理するようにしましょう。次のように実行します。 このようにアプリケーションごとにモデルを設定しておくと、jujuからいろいろなアプリケーションのデプロイ、管理を一つのクライアントから実行できます。

% juju add-model openstack
% juju switch openstack

Juju MachineとMAAS上のノードを紐付けするにはjuju add-machineコマンドを実行します。 このコマンドの実行によりノードの電源が入り、なにもアプリケーションが導入されていないUbuntu Serverがデプロイメントされます。 現時点のJuju 2.0ではUbuntu Server 16.04がデプロイされます。

マシンはMAASでノードごとに指定したタグを使って識別することができます。 次のように実行するとMAASでphysical1...physical4タグを指定したノードをjujuコマンド一つで起動して、OSのプロビジョニングまで行うことができます。

% juju add-machine --constraints tags=physical1
% juju add-machine --constraints tags=physical2
% juju add-machine --constraints tags=physical3
% juju add-machine --constraints tags=physical4

Juju Machineのセットアップ状況はjuju statusコマンドで確認できます。

results matching ""

    No results matching ""