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
コマンドで確認できます。