今回は、Lightwave ドメインにユーザを作成して、

Docker コマンドを実行できるようにしてみます。


これまでの流れはこちら。

VMware Lightwave をためしてみる。Part 1(Lightwave Server インストール)

VMware Lightwave をためしてみる。Part 2(Lightwave Client インストール)


環境は前回と同様で、Lightwave Server / Client どちらも Photon Linux です。

  • Lightwave Server → ホスト名は photon-lw01.godc.lab
  • Lightwave Client & Docker Host → ホスト名は photon01.godc.lab


1. Lightwave サーバでのユーザ / グループ作成。


まずは、Lightwave サーバで作業します。

root [ ~ ]# uname -n

photon-lw01

root [ ~ ]# cat /etc/photon-release

VMware Photon Linux 1.0 TP1

root [ ~ ]# rpm -qa | grep lightwave

vmware-lightwave-server-6.0.0-0.x86_64

 

Lightwave Server は、ドメインコントローラとしてセットアップ済みです。

VMware Lightwave をためしてみる。Part 1(Lightwave Server インストール)

 

Lightwave に、「docker」という名前のグループを作成します。

Lightwave のグループとユーザの作成や設定変更では、dir-cli コマンドを使用します。

dir-cli は、/opt/vmware/bin ディレクトリに格納されています。

※dir-cli の実行時には Lightwave 管理者のパスワードを入力します。

root [ ~ ]# cd /opt/vmware/bin/

root [ /opt/vmware/bin ]# ./dir-cli ssogroup create --name docker

Enter password for administrator@lightwave.local: ★管理者のパスワードを入力。

Service [docker] created successfully

 

作成した直後のグループには、まだユーザが所属していません。

root [ /opt/vmware/bin ]# ./dir-cli group list --name docker

Enter password for administrator@lightwave.local:

group [docker] has no members

 

次に、Lightwave にユーザを作成します。

今回は「lw_user01」というユーザを作成します。

root [ /opt/vmware/bin ]# ./dir-cli user create --account lw_user01 --first-name user01 --last-name lw

Enter password for administrator@lightwave.local:

Enter password for lw_user01@lightwave.local: ★作成するユーザに設定するパスワードを入力。

User account [lw_user01] created successfully

 

「dir-cli user find-by-name  ~」で、作成したユーザの情報を表示できます。

root [ /opt/vmware/bin ]# ./dir-cli user find-by-name --account lw_user01 --level 0

Enter password for administrator@lightwave.local:

Account: lw_user01

UPN: lw_user01@lightwave.local

 

「--level」の数字により、表示される情報が異なります。

Level 1 では、First Name と Last Name が表示されます。

root [ /opt/vmware/bin ]# ./dir-cli user find-by-name --account lw_user01 --level 1

Enter password for administrator@lightwave.local:

Account: lw_user01

UPN: lw_user01@lightwave.local

First Name: user01

Last Name: lw

 

Level 2 では、アカウントのロック状態やパスワード期限が表示されます。

root [ /opt/vmware/bin ]# ./dir-cli user find-by-name --account lw_user01 --level 2

Enter password for administrator@lightwave.local:

Account: lw_user01

UPN: lw_user01@lightwave.local

Account disabled: FALSE

Account locked: FALSE

Password never expires: FALSE

Password expired: FALSE

Password expiry: 89 day(s) 23 hour(s) 59 minute(s) 42 second(s)

 

そして、「lw_user01」を、Lightwave に作成した「docker」グループに追加します。

root [ /opt/vmware/bin ]# ./dir-cli group modify --name docker --add lw_user01

Enter password for administrator@lightwave.local:

Account [lw_user01] added to group [docker]

 

ユーザが追加されました。

ただし、ユーザ名ではなく First Name と Last Name が表示されます。

root [ /opt/vmware/bin ]# ./dir-cli group list --name docker

Enter password for administrator@lightwave.local:

CN=user01 lw,cn=users,dc=lightwave,dc=local

 

2. Lightwave クライアント側での設定

今回作成した Lightwave グループ「docker」(lightwave.local\docker)に所属するユーザが

「sudo docker ~」コマンドを実行できるようにします。

 

ここでは、Lightwave クライアント側の Photon で作業します。

この Photon は、Docker Host でもあります。

root [ ~ ]# uname -n

photon01

root [ ~ ]# cat /etc/photon-release

VMware Photon Linux 1.0 TP1

root [ ~ ]# rpm -qa | grep lightwave

vmware-lightwave-clients-6.0.0-0.x86_64

 

Lightwave クライアントの Photon は、既に Lightwave ドメインに参加ずみです。

VMware Lightwave をためしてみる。Part 2(Lightwave Client インストール)


sudo を許可するため、sudoers ファイルを新規作成します。

今回作成する「/etc/sudoers.d/lightwave-docker」ファイルでは、

「lightwave.local\\docker」グループの「/bin/docker」コマンドを、パスワードなしで実行許可しています。

root [ ~ ]# echo '%lightwave.local\\docker ALL=(ALL) NOPASSWD: /bin/docker' > /etc/sudoers.d/lightwave-docker

root [ ~ ]# cat /etc/sudoers.d/lightwave-docker

%lightwave.local\\docker ALL=(ALL) NOPASSWD: /bin/docker

 

ちなみに、Lightwave ドメインの Administrator ユーザに対しての sudo 設定例が

GitHub にある README で紹介されています。

lightwave/README-SSH.md at master · vmware/lightwave · GitHub

 

3. Lightwave ユーザでの Docker 操作。

Lightwave ユーザで Photon にログインして、docker コマンドを実行してみます。

 

まず、ssh コマンドや TeraTerm などから Lightwave クライアントに、

Lightwave ドメインのユーザでログインします。

 

ユーザ名は、下記のどちらかで指定します。

<Lightwaveドメイン>\<ユーザ名> ※Linux 等のシェルで指定する場合は「\」を「\\」にします。

<ユーザ名>@<Lightwaveドメイン>


ssh コマンドでログインする場合は、下記のようにユーザ名を指定します。

# ssh -l lightwave.local\\lw_user01 photon01.godc.lab

 

TeraTerm でログインする場合は、下記のようにユーザ名を指定します。

lightwave-login.png


ログインすると、プロンプトにユーザ名が表示されます。

そして、「id」コマンドでユーザ情報を表示すると

「lightwave.local\docker」グループに所属していることがわかります。

lightwave.local\lw_user01 [ ~ ]$ uname -n

photon01

lightwave.local\lw_user01 [ ~ ]$ id

uid=16778249(lightwave.local\lw_user01) gid=545(lightwave.local\Users) groups=545(lightwave.local\Users),16778250(lightwave.local\docker)

 

docker コマンドは、sudo コマンド(sudo docker ~)で実行します。

ためしに Oracle Linux のコンテナイメージを起動してみました。

lightwave.local\lw_user01 [ ~ ]$ sudo docker run -it oraclelinux:6 /bin/bash

Unable to find image 'oraclelinux:6' locally

Pulling repository oraclelinux

cfc75fa9f295: Download complete

8c3e49cb06dc: Download complete

c96aadb57deb: Download complete

Status: Downloaded newer image for oraclelinux:6

[root@64c52aebde0f /]#  ★ここからコンテナの中。

[root@64c52aebde0f /]# cat /etc/oracle-release

Oracle Linux Server release 6.7

[root@64c52aebde0f /]# lightwave.local\lw_user01 [ ~ ]$ ★Ctrl+p+q でコンテナから抜ける。

lightwave.local\lw_user01 [ ~ ]$ sudo docker ps

CONTAINER ID        IMAGE              COMMAND            CREATED            STATUS              PORTS              NAMES

64c52aebde0f        oraclelinux:6      "/bin/bash"        33 seconds ago      Up 32 seconds                          mad_ritchie

 

たとえば、Docker Engine を利用する目的だけで Photon にログインするユーザを多めに作るとしたら、

こんな感じにすると、Lightwave でのユーザ作成→グループ参加だけで済むようになるはずです。

 

以上、Lightwave ユーザを作成して docker コマンドを実行してみる話でした。