コマンド操作でESXiユーザを作成して権限を付与する


目次

こんにちは。

信玄餅を食べると毎回せる系エンジニアの橋本です。

たかが信玄餅、そう思ってないですか? それやったら明日も私は噎せますよ。

さて本題。VMWareHostClientのGUIにログインせずにユーザ追加や権限設定を行いたい。

こうする

esxcli system account add -d="説明!" -i="ユーザ名" -p="ぱすわーど" -c="ぱすわーど確認"
esxcli system permission set -i ユーザ名 -r 権限

たとえば、keisukeというユーザを作ってAdmin権限を付与したい場合、以下のようにします。

esxcli system account add -d="hona itadakimasu" -i="keisuke" -p="xxxxxx" -c="xxxxxx"
esxcli system permission set -i keisuke -r Admin

初期から設定できる権限は以下の通り。

  • Admin: 管理者権限ロール。なんでもできます。
  • NoAccess: デフォルトのロール。とくに何ができるわけでもない。
  • ReadOnly: 閲覧権限ロール。ESXiホスト関連のオブジェクトを表示できるが、変更はできない。

自分で必要な権限ロールを新しく作ることもできます。

応用

コマンドライン上で完結できると何がシアワセかと言いますと、何台ものホストサーバに対して同じ操作をする手間を軽減できるのです。

たとえばesxi-test-server-01〜20までの20台のサーバに同じユーザを作り、公開鍵までまとめて配置したいときは以下のようにします。

for hostname in esxi-test-server-{01..20}.domain;do
  echo ${hostname}
  ssh root@${hostname} "mkdir /etc/ssh/keys-keisuke; esxcli system account add -d='hona itadakimasu' -i='keisuke' -p='xxxxxx' -c='xxxxxx'; esxcli system permission set -i keisuke -r Admin"
  scp /home/keisuke/.ssh/id_rsa.pub root@${hostname}:/etc/ssh/keys-keisuke/authorized_keys
done

公開鍵id_rsa.pub はあらかじめssh-keygenで作っておいてくださいね。

なお、このまま使うと全環境で同じパスワードが割り当てられていますから、ユーザ作成後に適宜変えてください。

Ansibleを用いて初期設定をコード化&自動化したい場合はvault でパスワードの暗号化を施すのがモアベターです。