今回は、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 でログインする場合は、下記のようにユーザ名を指定します。
ログインすると、プロンプトにユーザ名が表示されます。
そして、「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 コマンドを実行してみる話でした。