Skip navigation
2016

とうとう、Photon OS 1.0 がリリースされたようです。

Announcing the Availability of VMware’s Photon OS 1.0 | VMware Radius

 

GitHub はこちら。

GitHub - vmware/photon: Minimal Linux container host

 

photon10-ga-01.png

 

インストーラの ISO イメージや、OVA ファイルが下記からダウンロードできます。

Downloading Photon OS · vmware/photon Wiki · GitHub

 

主な使用方法は、Administration Guide でわかります。

OVA のデフォルトパスワードなども、ここに記載があります。

photon/photon-admin-guide.md at master · vmware/photon · GitHub

 

とりあえず、OVA ファイルを VMware Workstation で起動してみました。

photon10-ga-02.png

 

デフォルトの仮想マシンは、このような構成です。

ネットワークは「ブリッジ」なので、必要に応じて NAT などに変更します。

photon10-ga-04.png

 

パワーオン。

photon10-ga-05.png

 

最初にログインするときに、root パスワード(デフォルトは changeme)を変更します。

パスワードは、ある程度複雑にする必要があります。

photon10-ga-06.png


Photon 1.0 です。

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

VMware Photon Linux 1.0

PHOTON_BUILD_NUMBER=13c08b6

root@photon-u2Ac5nybq [ ~ ]# uname -a

Linux photon-u2Ac5nybq 4.4.8-esx #1-photon SMP Tue Jun 7 08:04:49 UTC 2016 x86_64 GNU/Linux

 

ネットーワークが DHCP 設定となっていて、

下記のように ipconfig コマンドなので自動設定された IP アドレスがわかります。

デフォルトで、root ユーザで SSH ログインも可能になっています。

root@photon-u2Ac5nybq [ ~ ]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0c:29:b7:41:03

          inet addr:192.168.254.130  Bcast:192.168.254.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feb7:4103/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:417 errors:0 dropped:0 overruns:0 frame:0

          TX packets:343 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:47901 (47.9 KB)  TX bytes:54559 (54.5 KB)

 

とりあえず、docker 起動してみました。

root@photon-u2Ac5nybq [ ~ ]# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

root@photon-u2Ac5nybq [ ~ ]# systemctl start docker

root@photon-u2Ac5nybq [ ~ ]# docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 1.11.0

Storage Driver: overlay

Backing Filesystem: extfs

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: null host bridge

Kernel Version: 4.4.8-esx

Operating System: VMware Photon/Linux

OSType: linux

Architecture: x86_64

CPUs: 1

Total Memory: 1.958 GiB

Name: photon-u2Ac5nybq

ID: ACQG:XELF:KRAJ:WP7F:CI53:XCA3:67E5:KLG6:D66I:DV4K:7QZH:PHDB

Docker Root Dir: /var/lib/docker

Debug mode (client): false

Debug mode (server): false

Registry: https://index.docker.io/v1/

WARNING: No kernel memory limit support

 

そして、hello-world のコンテナを起動・・・

root@photon-u2Ac5nybq [ ~ ]# docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

a9d36faac0fe: Pull complete

Digest: sha256:e52be8ffeeb1f374f440893189cd32f44cb166650e7ab185fa7735b7dc48d619

Status: Downloaded newer image for hello-world:latest

 

Hello from Docker.

This message shows that your installation appears to be working correctly.

 

To generate this message, Docker took the following steps:

1. The Docker client contacted the Docker daemon.

2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.

 

To try something more ambitious, you can run an Ubuntu container with:

$ docker run -it ubuntu bash

 

Share images, automate workflows, and more with a free Docker Hub account:

https://hub.docker.com

 

For more examples and ideas, visit:

https://docs.docker.com/engine/userguide/

 

root@photon-u2Ac5nybq [ ~ ]#

 

以上、Photon 1.0 がリリースされたのでとりあえず起動してみた話でした。

最近 NSX API と対話していて、そこで指定するために vCenter Object ID を探しています。

NSX API では、vCenter インベントリのオブジェクト(VM や、ポートグループなど)を

ID で指定しなくてはいけないことがあります。

 

NSX vSphere API Guide

NSX 6.2 for vSphere

http://pubs.vmware.com/NSX-62/topic/com.vmware.ICbase/PDF/nsx_62_api.pdf

 

たとえば VM の名前ではなく、VMID を指定するのですが、

これは NSX API ではわからず、ID を探すのは結構大変なように感じています。

そこで、VMID の探し方をいくつか模索してみました。

 

1. Managed Object Browser から探す。

 

まずは、API ガイドにも説明がある Managed Object Browser(MOB)から VMID を探してみます。

MOB は、Web ブラウザで下記の URL にアクセスして vCenter 同様のユーザでログインすると見ることができます。

 

https: //<vCenter のアドレス>/mob

 

GUI から探す場合は、この方法が一番メジャーなのではないかと思います。

NSX API とは関係ないですが、KB でも MOB を使ってオブジェクトを見る方法が案内されていたりします。

 

vCenter Server での管理対象オブジェクト参照 (MoRef) の検索 (2095221) | VMware KB

 

MOB では、たとえば下記のように VMID を探すことができます。

今回は、vm01 と、vm02 という VM の ID を探してみます。

vmid-01.png

 

Web ブラウザから MOB にログインしました。「content」 リンクから、階層を降りていきます。

vmid-02.png

 

rootFolder に入ります。

vmid-03.png

 

データセンタ名(今回は dc01)のリンクがあります。

ここから、vCenter のインベントリ ツリーと同様の階層をたどっていきます。

vmid-04.png

 

リンクをたどっていくと、最初のスクリーンショットにあるように「test01」 フォルダ配下に

vm01、vm02 を見つけることができます。VMID は、それぞれ vm-1666 と vm-1667 でした。

vmid-5.png

 

2. PowerCLI から見る。

 

PowerCLI から、VMID を探してみます。

今のところ私としては、vCenter のオブジェクト ID を探す場合はこれが最も簡単な方法だと思っています。

取得した VMID をもとに、PowerShell の Invoke-WebRequest コマンドレットで

NSX API のリクエストを発行すると便利なのではないかと思います。

 

下記のような感じで、コマンドライン1行で簡単に ID を見つけることができます。

「ft -AutoSize」は表示結果の整形のためだけにつけています。

ただ、実際に欲しいのは、赤字の部分だけだったりします。

PowerCLI> Get-VM vm0? | sort Name | select Name,Id | ft -AutoSize

 

Name Id

---- --

vm01 VirtualMachine-vm-1666

vm02 VirtualMachine-vm-1667

 

少し長くなりますが、下記のように MoID の部分だけ取得することもできます。

PowerCLI> Get-VM vm0? | Get-View | sort Name | select Name,@{N="MOID";E={$_.MoRef.Value}} | ft -AutoSize

 

Name MOID

---- ----

vm01 vm-1666

vm02 vm-1667

 

3. Python で見てみる。

 

最近 Linux から NSX API を実行したいことがあり

PowerCLI 以外のスクリプト言語から VMID を取得しようとしています。

Perl の方がメジャーvSphere CLI も Perl スクリプトなので・・・な気もしますが、

Python で VMID を探してみました。


今回は、下記のように環境を準備してあります。

Python で vSphere を操作できるようにする。(pyvmomi)

 

対話的に Python を実行する場合、下記のような感じで VMID を取得できます。

 

Python を実行します。

[root@vm01 ~]# python

Python 2.7.5 (default, Nov 21 2015, 00:39:04)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>

 

vCenter に接続して・・・

>>> from pyVim import connect

>>> from pyVmomi import vim

>>> si = connect.SmartConnect(host='vCenterのアドレス',user='vCenterのユーザ',pwd='パスワード')

>>>

 

VMID を取得してみました。

ルート(先ほどの MOB にもあった rootFolder)配下の、すべての VM の情報を取得しています。

>>> content = si.RetrieveContent()

>>> containerView = content.viewManager.CreateContainerView(content.rootFolder,[vim.VirtualMachine],True)

>>> for vm in containerView.view:

...  print vm._moId, vm.name

...

vm-1667 vm02

vm-1666 vm01

>>>

 

下記のような感じで、VM の名前から ID を探すとこができます。

実際は VM 名がユニークとは限らないので、ちゃんと絞り込まないといけないです。

>>> for vm in containerView.view:

...  if vm.name == 'vm01':

...    print vm._moId

...

vm-1666

>>>

 

そして下記のような感じで簡易的なスクリプトファイルを用意して、VMID 取得しています。

 

connect_info.py

vc_addr = 'vCenterのアドレス'

vc_user = 'vCenterのユーザ'

vc_pwd = 'パスワード'

 

get_vmid.py

import atexit

import sys

from pyVim import connect

from pyVmomi import vim

 

execfile('connect_info.py')

vmname = sys.argv[1]

 

si = connect.SmartConnect(host=vc_addr, user=vc_user, pwd=vc_pwd)

atexit.register(connect.Disconnect, si)

 

content = si.RetrieveContent()

si.content.rootFolder

container = content.rootFolder

 

viewType = [vim.VirtualMachine]

recursive = True

containerView = content.viewManager.CreateContainerView(container, viewType, recursive)

for vm in containerView.view:

  if vm.name == vmname:

    print vm._moId

 

こんな感じでスクリプトを実行して、VM 名から ID を取得しています。

[root@vm01 ~]# python get_vmid.py vm01

vm-1666

[root@vm01 ~]# python get_vmid.py vm02

vm-1667

 

4. とりあえず、Web Client のコンソールから。

 

VM の ID だけであれば、よく見ると vSphere Web Client のコンソールの URL に VMID が含まれています。

vmid-6.png

 

引き続き、悩ましい vCenter Object ID の探し方を模索したいと思います。

 

以上、vCenter Object ID を探してみる話でした。