Slide 1

Slide 1 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 2019年7月5日 入江 正博 OVF Environment を使って VM デプロイ

Slide 2

Slide 2 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 自己紹介 2 入江 正博 @IrieMasahiro • ヤフー株式会社 プライベートクラウドチーム • VMUG インフラ仮想部会 • vExpert 2019

Slide 3

Slide 3 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 色々なところにVMを立てる 3 • 仮想マシン作成、インストールメディアを接続 して OS インストール → vSphere (Web) Clinet で作業… • デプロイツール (Packer, Ansible etc.) → 導入コスト、学習コスト… • OVA インポート → よさげ → でも NW 設定とかはコンソール?

Slide 4

Slide 4 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Self-Configuration and the OVF Environment 4 https://blogs.vmware.com/vapp/2009/07/selfconfi guration-and-the-ovf-environment.html • OVF Environment を使った VM カスタマイズの話 • VM を立てるときに NW 設定やアプリ設定を OVF Environment として VM 外部から渡せる → OVA アプライアンスでよくある • 準備しておくもの • OVF プロパティ定義 • OVF Environment トランスポート設定 • VM 内で設定を行っていく glue code

Slide 5

Slide 5 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 要は 5 vApp オプションから設定 (もしくは OVFファイルを直書き)

Slide 6

Slide 6 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 要は 6 # vmtoolsd --cmd 'info-get guestinfo.ovfenv' vmtoolsd で OVF プロパティが取得できるので、 その値で OS 側の設定を行う glue code を仕込めば良い。 (daemon として起動していなくても OK)

Slide 7

Slide 7 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 実装例 7 vCenter Server Appliance

Slide 8

Slide 8 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. OVF プロパティ 8

Slide 9

Slide 9 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. vCSA での流れ 9 • systemd の init script の一つ • /etc/init.d/vaos → /opt/vmware/share/vami/vami_ovf_env を 呼び出し NW 設定などを行う。 → /opt/vmware/bin/ovfenv を呼び出し。 OVF プロパティ周りを扱うラッパー → vmware-rpctool ‘info-get guestinfo.ovfEnv’ (※) を 発行し、 OVF プロパティを取得 → その他でも都度都度 OVF プロパティ取得して設定 ※ open-vm-tools に同梱。 OVF プロパティの RPC 部分のみの実装?

Slide 10

Slide 10 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 試しに 10 Photon OS で 実装してみた

Slide 11

Slide 11 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. Photon OS で self-configuration 11 • Python で 100行くらい → https://vhoge.hateblo.jp/entry/2019/06/25/020111 • vmtoolsd を実行し、XML 文字列を取得 • Hostname / IP / NW Prefix / GW / DNS を設定 → OVF プロパティとしても定義 • systemd で systemd-networkd の起動前に仕込む • OVA 化は OVF Export で

Slide 12

Slide 12 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. OVF プロパティ 12

Slide 13

Slide 13 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 面倒なところ 13 • XML が 面倒な 厳格な形式なので OVF プ ロパティの値の取得に一手間 • key も value も attribute • namespace 指定 ↑コレ ↑コレ ET.find("oe:PropertySection/oe:Property[@oe:key='ip']",{'oe': 'http://schemas.dmtf.org/ovf/environment/1'}).attrib["{http:/ /schemas.dmtf.org/ovf/environment/1}value"]) • ElementTree で ↑ の IP を取得すると

Slide 14

Slide 14 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. VM 量産体制 14 • ovftool で CLI から OVF インポート • OVF プロパティは prop オプションで指定 % ovftool -n=‘photon-vm’ ¥ -ds=datastore1 ¥ -dm=thin ¥ --net:’VM Network=VM Network’ ¥ --prop:hostname=photon.test ¥ --prop:ip=192.168.0.100 ¥ --prop:prefix=24 ¥ --prop:gateway=192.168.0.1 ¥ --prop:dns=192.168.0.3 ¥ --noSSLVerify ¥ --powerOn ¥ --allowExtraConfig ¥ --acceptAllEulas ¥ ./photoninit.ova ¥ 'vi://vcsa.test/dc01/host/cluster01/host01'

Slide 15

Slide 15 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. まとめ 15 • Self-configuration な OVA を作るには • OVF プロパティ定義 • OVF Environment トランスポート設定 • OVF Environment をもとに設定するコード • OVF Environment は vmtoolsd コマンド にオプションつけて取得 • XML の Value 取得に一癖 • 量産するなら OVF Tool

Slide 16

Slide 16 text

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. EOP