vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

VMUG UserCon 2019 Autumn

(そんなに忙しいワケではなかったのだが、中々書けなったネタを消化)

半期に一度の部会合同でのイベント。
今回から合同部会あたらめ UserCon Autumn に。

Outline

会場写真撮ってなかった…
光景は FacebookVMUG ページ を見てもらえれば。
なんか仮装したおじさんが写っていますw(仮想と仮装をかけてとのこと)

ノベルティ

会場写真は撮ってなかったけど、ノベルティはちゃっかり。

閉じた状態
閉じた状態
全展開状態
全展開状態
マルチツールってやつですかね。
他ではあまり見かけない、普通に使えそうな便利なノベルティ

Agenda

  1. VMworldサマリー
  2. 仮想マシン6万台を運用してわかったVDI移行の表と裏
  3. Meetupノススメ
  4. VMUGを活用したVMwareNSXトレーニング受講報告 ---Install,Configure,Management[V6.4]---
  5. なつやすみ日記
  6. VMUG.COMから見るJAPAN VMUGの魅力

1. VMworldサマリー

VMware の林(りん)さんによる VMworld 2019 US の Update。

  • Tanzu / Project Pacific
  • Virutal Cloud Networking
    • NSX-T 2.5
      • NSX Intelligence
      • NSX Advanced LoadBalancer (AviNetworks)
        • アプリケーションデリバリーコントロール(L2-L7)
  • Protect
    • CarbonBlack 買収
  • bitfusion
  • VMware Cloud on AWS
  • Azure VMware Solution
  • VMware Cloud on Dell EMC
  • VMware Workspace ONE
    • MobileFlows
    • Intelligent Hub
    • Degital Employee Experiece Management
    • Horizon on VMC on AWS
    • Horizon7

Tanzu / Project Pacific をのぞくと VMworld Update はここが初?
特に EUC 周りの話はあまり無さそう。

Q/A では Pacific のライセンス話が少々。
詳細はまだ未定だが、個別ライセンスにはならないそうな…?
他、VIC の今後や PKS との住み分けの質問が飛んでいた。

それと additional な話として ODYSSEY の話。
vWarrior が Update され、ODYSSEY として vForum で正式にプログラム化。
ということで、10 月初旬よりエントリーが開始されるそうな。

2. 仮想マシン6万台を運用してわかったVDI移行の表と裏

リクルートテクノロジーズさん(リクルートグループの機能会社)での VDI 更改話。
フレキシブルワーク環境や不正防止と色々達成できたが、PC 管理コストの削減においてコンポーネントの複雑さやサポート範囲、 EOSL 時期の違い、需要予測と考慮点が多く、課題が残る結果に…というお話。

VDI は担務外なのだが、それでも大変さが伝わるお話…

3. Meetupノススメ

自分のセッションですが、発表資料は Closed の講演として社内承認通しているのでアップロード予定はありません…

ネタとしては改めて VMware DevOps Meetup / VM Meetup Tokyo のご紹介。
セッション内で挙手してもらった限り、参加経験者は数名程度だったので場所としてはよかったかも。
やっぱ VMUG は administrator 層で Meetup は developer 層なのかなぁ…
そんなに規模が無ければ兼任が多そうではあるが、結構参加者被らない。

4. VMUGを活用したVMwareNSXトレーニング受講報告 ---Install,Configure,Management[V6.4]---

VMUG 支援プログラム(?)で行ってきた VMware NSX ICM コースの教育受講録。
受講に向けた予習どころやざっくりの講義内容紹介。

発表者(受講者)の林さんは、その後見事に VCP6-NV 合格まで昇華。
素晴らしい。

5. なつやすみ日記

こちらは vSphere の ICM コース教育受講録。
同様にざっくりの講義内容紹介ではあるが…何というかw
子供の絵日記風コント仕立て。ちょっと文字列で表現するのは難しいw

6. VMUG.COMから見るJAPAN VMUGの魅力

VMUG.COM への移行案内ですが…
UserCon に来ている Active ユーザはほぼほぼ移行完了している状態w

Japan VMUG のポジションを改めて紹介。
* 223の地域コミュニティの1つ * JapanVMUG 410名(全体では230000人) * コメント数 6月時点で 1位 → 1位 とかなり活発

コメント数 1 位は相変わらずすごい。

VMware DevOps Meetup #3

こちらに参加してきました。
【LT枠残り1枠!】 VMware DevOps Meetup #3 【Kubernetesやコンテナに興味ある方必見!】今回のテーマは「コンテナ」or「テスト」|IT勉強会ならTECH PLAY[テックプレイ]
(会場写真撮るの忘れた…)
会場が TECH PLAY SHIBUYA ということで TECH PLAY 経由でのお申込み。
今回はテーマが"コンテナ"と"テスト"が設けられたが、良い発表ネタは思いつかず…
(自分がやってることはレガシー寄りなんだよなぁ…)
聴講者としての参加。

感想としては最先端に尖った話だったなーと。

オープニング

  • 第3回はテーマを設けました
    • コンテナ
    • テスト

vCenterシミュレーターを使ってCIをやってみよう

speakerdeck.com

  • 自己紹介
    • Automation Engineer
    • Ansbile 界隈の方から来ました
    • 19H2 で vExpert になりました
  • (会場で)インフラ自動化をやっている人?
    • 少ない(数人程度?)
  • インフラで CI やっている人?
    • 自動化やっている人はほぼやっている
  • CI は何故必要か?
    • 品質向上、納期短縮、学習スピードアップ、コミュニケーションロス削減
  • CI とは心理的安全の確保
    • MW の conf まで CI が必要
      • bind 運用でのトラブル経験
    • CI のおかげで Ansible Tower でボタンを押す気持ちが軽くなった(担当者談)
  • VMware インフラ CI
    • 物理は困難
    • VMware 環境はリソースが必要
    • 一時的なプロビジョニング、デプロイは大変
    • 気軽に作ったり消したりは難しい
  • そこで vCenter シミュレータ(vcsim)
    • SOAP API が実装されている
    • golang で実装
    • vCenter でできるものは大体できる
    • GUI はなし
    • (その昔、vCSA5.5 に vcsim があったが、切り出されて go で再実装されたっぽい)
  • サポート SDK
    • govmomi, pyvmomi, rvmomi → 動く
    • PowerCLI → 色々動かない…
      • API の呼び方(URI)が *vmomi と違うらしい
  • vcsim コンテナ
    • Ansible プロジェクトが用意している
      • Ansible モジュール開発の CI で利用されている
    • Flask(python) が HTTP を受けて、vcsim へ流すアーキテクチャ
  • 9 つの URI
    • 2 つを紹介
      • /spawn vcsim の起動、オプションで構成を与えられる
      • /govc_find ManagedObject のフィルタリング
  • デモ 1 Ansible で vcsim のプロビジョニング
  • デモ 2 TravisCI でテストを回す
  • VMware 界隈にも Ansible を流行らせ隊(宣伝)

Q.PowerCLI が動かないのは PowerCLI の問題? vcsim 問題?
A.vcsim の問題、Issue 化され対応を進めている

vcsim の話、5.5 版は知っていたがいつのまにか go 版 + コンテナが出ていたとは。
インフラのテストってやりにくいけど、vSphere だと vCenter さえシミュレートできればかなり回せるので、テストはかなりやりやすい部類で、この辺も高品質を支える一因なのでは。さすが SDDC。
dev としては vcsim で高頻度に回して、足りない部分は nested も回せれば理想形なのでは。

10分で解説!VMware Tanzuとは?

資料はまだ上がってなさげ?

  • 自己紹介
    • 最近 VMware に join、それまでは EMC
    • PAS / PKS / OpenStack / Docker / k8s
    • 今は VMC on AWS
  • 企業の IT
    • IT部門 → コンテナ基盤、マルチクラウドに前向き
    • アプリ開発 → モダナイズや開発手法の見直し中、コンテナにはこだわりない、使いやすければ
    • (アプリ部隊の方がコンテナに興味あるイメージあったけど、そうでもないのかな?)
  • Tanzu
    • Preview
    • k8s を管理する SaaS
    • Build, Run, Manage をサポート
      • Build : Spring, FAS, bitnami(パッケージング), PAS
      • Run : ProjectPacific, PKS
      • Manage : wavefront, CloudHealth, NSX ServiceMesh, Tanzu Mission Control
    • ライフサイクル管理、アクセス管理、モニタリング、コスト最適化、トラフィック管理 etc
  • 採用 OSS
  • Tanzu Mission Control
    • Cloud を横断して同じポリシーを適用
    • クラスタアクセス、構成、バックアップ、クォータ、Podセキュリティ etc...
      • コンテナレジストリの許可/禁止
      • Pod セキュリティ
        • HostOS の bind を禁止
      • ネットワークアクセス制御
      • namespace 単位でコントロール

Q.Podに入ることは可能?
A.ダッシュボードからは不可能、通常の k8s と同じ方法になる

VMworld の目玉トピックの 1 つ、Tanzu の日本最速(?)紹介。
今回は Tanzu Mission Control の話が多めで、セキュリティポリシーやユーザコントロール周りを提供しており、この辺は PKS でも弱い部分だった(今は違うかも?)ので複数組織規模での利用となればかなり欲しいところ。
あとは Pivotal 買収で Build 周りがどうなっているか。面白そう。

vSphere VM Operator for Kubernetes Kubernetes Operator for vSphere VM

www.slideshare.net

意味的にはこちらが正しいということでタイトル修正とのこと。

Q.本番向けではない?
A.プレビューレベル、教育的意味合いが強そう

k8s Operator を使った VM 再作成な話。
Operator って自前でサクッと実装できるものなんですね。
これは手元で試してみたい…

Kubernetes に開かれる新しい海 -Project Pacific とは?-

www.slideshare.net

  • 自己紹介
    • VMware でサービスプロバイダ向けにお仕事
      • お世話になっております!
    • 最近猫を飼い始めました
  • Project Pacific
    • 7 つの海のあれ
    • vSphere を再設計
    • SDDC を利用して SuperVisor K8S Cluster
    • 開発者と IT 運用者をつなぐ Platform
      • 開発者:デプロイ、Day 2 モニタリング, ツール ...
      • IT 運用者:可用性, セキュリティ, QoS, コスト ...
  • 全てのワークロードを k8s で管理
    • 全部 yaml で表現可能
    • namespace で pod / VM / k8s cluster を管理できる
    • k8s に比べて ESXi host はそんなに VersionUP しない
    • ServiceCatalog とかも提供予定 
    • ポリシー、リソースは RBAC でアプリごとに
    • vCenter でコンテナ、k8sVM を一元管理
    • 「何故か(スライドに) Photon とか書いてあるけどよく分からないです」w

こちらも VMworld の目玉トピックの 1 つ、Project Pacific の日本最速(?)紹介。
ESXi 直で Pod や SuperVisor Cluster を動かすというかなり大きな変更。
立ち話で NW 周りがどうなるかみたいなのを聞いたところ、NSX-T が前提になってきそうな雰囲気も?まだ詳細は出てきてない模様。

何でも yaml 管理の一方で yaml 地獄のつらみも聞こえてはいるので、その辺りを緩和する施策がないと特にライトな IT admin 層だとキツいかも。
GUIyaml出力や yaml validator 辺りが無いと触る障壁高そう。

vSphere / vSAN 6.7 U3 の VMware Cloud Native Storage を試してみよう。

onedrive.live.com

  • 自己紹介
  • VMware Cloud Native Storage(CNS)
    • vSphere 6.7u3- 利用可能
    • k8s の PV として VMDK が利用可能
      • CSI (Cloud Storage Interface) 経由
  • SPBM
    • VMDK ごとに割り当てられるストレージポリシー
      • 可用性、ディスク配置 etc
      • PV にも割り当てられる
    • vSAN では利用必須
  • サンプルで MongoDB Pod を作る
    • StorageClass の Provisioner で csi.vsphere.vmware.com
    • StoragePolicyName の SPBM 名
    • StorageClass を PVC に指定
  • 6.7u3 の vSphere Client でコンテナボリュームのメニューが
    • vSphere Client で PV として見える
      • vSphere オブジェクトとしても見える

vSAN の話かな?と思ってたら vSAN はそこまで関係なく、CNS や k8s PV の話。
PV で VMDK は結構やりやすいと思ってたけど、既に CNS でかなり扱いやすそう。vSphere Client 側にも項目として入っているのは知らなかった。

ところで開始前、プロジェクタ投影まわりでトラブってたのですが、その時に流れた以下のツイートが良かったw
確かに…

Appendix

会場写真は撮り損ねたけど食べ物の写真は撮ったw フード
ドリンク1
ドリンク2
豪華…

次回

vForum 2019 の Day0、VMware Kubernetes Day VMware Cloud Native Day の中で LT Sessions として開催予定とのこと。

esxcli での default gateway 設定の罠

ESXi で esxcli から IP アドレス設定していた時にあった話。
通常だと DCUI でやっちゃうのがほとんどだと思うので稀なケースだと思いますが。

事象

ESXi の OS インストールが終わって初めて起動してきたような IP アドレスがまだ設定されていない状態のとき。
IP初期状態 esxcli でたたくと↓の状態。

[root@localhost:~] esxcli network ip interface ipv4 get
Name  IPv4 Address    IPv4 Netmask  IPv4 Broadcast   Address Type  Gateway  DHCP DNS
----  --------------  ------------  ---------------  ------------  -------  --------
vmk0  169.254.242.29  255.255.0.0   169.254.255.255  DHCP          0.0.0.0      true

この状態で esxcli で IP を設定する。
叩き方を確認するので、一回 help。

[root@localhost:~] esxcli network ip interface ipv4 set --help
Usage: esxcli network ip interface ipv4 set [cmd options]

Description:
  set                   Configure IPv4 setting for a given VMkernel network interface.

Cmd options:
  -g|--gateway=<str>    The default gateway for this interface. The value must be a valid
                        IPv4 address. Gateway would be reset if not provided
  -i|--interface-name=<str>
                        The name of the VMkernel network interface to set IPv4 settings
                        for. This name must be an interface listed in the interface list
                        command. (required)
  -I|--ipv4=<str>       The static IPv4 address for this interface.
  -N|--netmask=<str>    The static IPv4 netmask for this interface.
  -P|--peer-dns=<bool>  A boolean value to indicate if the system should use the DNS
                        settings published via DHCPv4 for this interface.
  -t|--type=<str>       IPv4 Address type :
                            dhcp: Use DHCP to aquire IPv4 setting for this interface.
                            none: Remove IPv4 settings form this interface.
                            static: Set Static IPv4 information for this interface.
                        Requires --ipv4 and --netmask options.

なるほど… gateway は -g 指定ね。
というわけで set する。

[root@localhost:~] esxcli network ip interface ipv4 set -i vmk0 -t static -I 192.168.0.100 -N 255.255.255.0 -g 192.168.0.1
[root@localhost:~] 

エラー出ず、問題なさげ。

[root@localhost:~] esxcli network ip interface ipv4 get
Name  IPv4 Address  IPv4 Netmask     IPv4 Broadcast  Address Type  Gateway      DHCP DNS
----  ------------  ---------------  --------------  ------------  -----------  --------
vmk0  192.168.0.100  255.255.255.0   192.168.0.255   STATIC        192.168.0.1     false

これで 8.8.8.8ping をなげてみる。

[root@localhost:~] ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
sendto() failed (Invalid argument)

あれ?
対象に到達しなかったというよりそもそも投げてない??

原因

一見 gateway 設定入っているように見えるが、実は入っていない。
route を表示してみると

[root@localhost:~]  esxcli network ip route ipv4 list
Network      Netmask          Gateway  Interface  Source
-----------  ---------------  -------  ---------  ------
192.168.0.0  255.255.255.0    0.0.0.0  vmk0       MANUAL

同一 Network しか入ってない…

対処

esxcli で route を明示的に足してやるとよい。

[root@localhost:~] esxcli network ip route ipv4 add -n 0.0.0.0/0 -g 192.168.0.1

これで route を見てみる。

[root@localhost:~] esxcli network ip route ipv4 list
Network      Netmask          Gateway      Interface  Source
-----------  ---------------  -----------  ---------  ------
default      0.0.0.0          192.168.0.1  vmk0       MANUAL
192.168.0.0  255.255.255.0    0.0.0.0      vmk0       MANUAL

ping も通るように。

こんなものだっけ?

VMware Docs 見ても特に書いてないんですよね… docs.vmware.com 何か過不足あったりするのかな…

Windows でのサンプル実装

以前書いた OVF Env 用の glue code 件で。
vhoge.hateblo.jp
Windows 向けでちょっと使うかもということで、PowerShell で再実装。
PowerShell ほとんど使ったことなかったので何も分からん状態だったけど、PowerShell ISE でタブ押してればそれっぽいものができるので思ったよりは楽に書けた。

あと、こちらだと XML の parse が楽。名前空間まともに見てないのかな…
その代わり外部コマンド呼び出し (vmtoolsd) が少し面倒だったり。

$lck_file = "C:\windowsinit\vcid.lck"
$vmtoolsd_path = "C:\Program Files\VMware\VMware Tools\vmtoolsd.exe"
$vmtoolsd_args = "--cmd ""info-get guestinfo.ovfenv"""

function getOvfEnv(){
    $cmd = New-Object System.Diagnostics.ProcessStartInfo
    $cmd.FileName = $vmtoolsd_path
    $cmd.Arguments = $vmtoolsd_args
    $cmd.RedirectStandardOutput = $true
    $cmd.UseShellExecute = $false
    $process = New-Object System.Diagnostics.Process
    $process.StartInfo = $cmd
    $process.Start() | Out-Null
    $process.WaitForExit()
    return $process.StandardOutput.ReadToEnd()
}

function chkLock($vmid){
    If (Test-Path $lck_file) {
        $lck_val = Get-Content $lck_file
        if ($lck_val -eq $vmid){
            return $true
        }
    }
    return $false
}

function setLock($vmid){
    New-Item $lck_file -Value $vmid -Itemtype file
}

function deployHostname($hostname){
    Rename-Computer -NewName $hostname
}

function deployNetwork($ip, $prefix, $gateway, $dns){
    Get-NetAdapter | New-NetIPAddress -IPAddress $ip -AddressFamily IPv4 -PrefixLength $prefix -DefaultGateway $gateway
    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses $dns
}

function main(){
    $ret = getOvfEnv
    $xml = [xml]$ret
    $conf = @{}
    foreach ($value in $xml.Environment.PropertySection.Property){
        $conf.add($value.key, $value.value)
    }
    $dns = $conf.dns -split ","

    if (chkLock $xml.Environment.vCenterId){
        echo "Nothing to do."
        return 0
    }

    deployNetwork $conf.ip $conf.prefix $conf.gateway $dns
    deployHostname $conf.hostname
    setLock $xml.Environment.vCenterId
    return 0
}

main

とそのまま書き直してみたのですが完璧ではなく。

  • hostname 反映は再起動が必須
  • New-NetIPAddress は上書きできないので、設定が残っているとコケる
  • DNS は 2個までしか入らない…?

github にもそのうち(←はよアカウント作れ)

※ 10/09 スクリプトのlock周りにバグがあったのでひっそり修正

vExpert ノススメ

vExpert 2019 Second Half Award Announcement がありました。
受賞されました皆様はおめでとうございます!
blogs.vmware.com ざーっと見る限り、知っている方が数名いらっしゃいました。

Second Half だと受賞者の一覧が HP 上に掲載されるみたいで、
自分のとき(1st Half)は受賞者数が多いからかどこにも掲載されず、メールだけ来ていたので本当に受賞しているのか?と若干あやしがってた記憶…w

ところで、vExpert って何ぞや?という人向けにざっくり紹介。

昨今は VMware DevOps Meetup / VM Meetup Tokyo とコミュニティが立ち上がり、vExpert を目指す上での場が広がっているので、機会があれば挑戦してみると良い。

vExpert とは

VMware 社が認定する公式エヴァンジェリストプログラム。

要は VMware 社の製品やテクノロジーの普及や発展に貢献した人を表彰するもので、執筆活動やプレゼンなどの活動を年次で申請し、認められることで得られるものです。

試験や実技などはありません。
扱いも資格ではなく表彰といった感じ。(手当とかつくところないのかな…?)

vExpert 受賞者 = VMware 製品のスーパーハッカー かと言われとそうではなかったりしますが、一方でエヴァンジェリストとして貢献できるだけの知見を持ち合わせている人なので、経験則的には技術を語れる人がほとんどだと思います。

と言っても範囲が広いので、
技術的ものさしでベースラインを見るなら VCP とか VCAP の方が良いかな。

余談

ここ最近、VMware 社の競合企業社員は申請がはじかれるようになったらしく、某なんたらnix 社とかは軒並みいなくなった。

この競合って他にどの辺の会社なんでしょう?
例えば MS とか RedHat なんかはパッと見だと HV の OS で競合しそうなものだが、それよりパートナーという関係の方が強そう(なので社員でも取れる?)。

vExpert のメリット

個人的には NFR ライセンスが一番大きいかな。
ホームラボで vCenter や Enterprise Plus の ESXi が使えるのは良い。
あとは発表資料に vExpert ロゴを使えるという見栄かなw

  • vExpert private forum や slack チャンネル
  • NFR ライセンス (1年)
    • VMware 製品以外のパートナーでも NFR ライセンス出してくれるところがある
  • vExpert 証明書 PDF 発行
  • vExpert ロゴ使用許可
  • Early access program ?
    • Blogger バッジ保持者のみ??
  • vExpert community
    • Local vBeer とか
  • etc...

ロゴは ↓
星の方は取得回数によって星の数が増える。
f:id:masahiroirie:20190729153133p:plainf:id:masahiroirie:20190729153157p:plain

vExpert 申請方法

半期に 1 回: 1~2月、6~7月 が申請受付期間となるので、 vExpert Application Portal の申請フォームから自身の年間 Activity を入力します。
申請 Close から大体 2~3 週間程度で結果が出て、メールでのお知らせや vExpert Portal Directory への追加がされます。

vExpert Path

期間中に vExpert Application Portal から申請を上げることになりますが、
申請種別としては 3 種類あります。

  • Evangelist Path
    書籍執筆、ブログ発信、ツール開発、イベントスピーカーやコミュニティボランティア貢献など、個人として VMware の普及活動を行った方向けのパス。
    一般的にイメージされるエヴァンジェリスト活動を行っている方のパスです。
    一番多そう?

  • Customer Path
    所属企業にて事例やインタビューなど、 VMware のユーザとして貢献した企業の従業員向けのパス。
    公開情報で無くても内部でリーディングや製品検証、フィードバックを行っている場合でもこちらの申請で対応可能だが、事前に VMware 社員の人とコンタクトを取っておき、推薦コメントを貰うことが推奨というかほぼ必須?です。
    (自分はここから申請)

  • VPN (VMware Partner Network) Path
    VMware のパートナー企業の従業員向けの Path.
    パートナーのプリセールスエンジニアとかはこれが多いのかな?
    VPN 企業に所属していないので詳細はあまり分からない…

  • VCDX Path VCDX 所持者用のパス。
    日本人 VCDX 保持者はいないのでこのパスの人はいないはず…
    もし取得できたら是非こちらで。

vExpert へのステップ

エヴァンジェリスト活動としていろいろなチャネルで情報発信をしていくのが基本。

その中でも発表系は従来は VMware に特化した発表の場だと vForum や EVOLVE ぐらいで、どうしても企業としての活動がベースになっており枠も限られている。
VMUG ならvForum や EVOLVEに比べればゆるいが平日日中開催なので、業務時間に参加できるよう会社承認を得る必要があり、人によっては難しいところはありそう。
他の場だと VMware プラスで何かを絡めての発表となりネタ仕込みが少し難しかった。

で、冒頭の話。
VMware DevOps Meetup / VM Meetup Tokyo と VMware に特化したコミュニティイベントが立ち上がったおかげで、個人レベルでも活動しやすく、発表の場も持てるので Activity も得やすい。

場が増え vExpert への道も広がっている昨今なので、これらの場で発表するのであれば vExpert まで見据えてみるのは良いのではないだろうか。
逆に vExpert を視野に入れている人は VMware DevOps Meetup / VM Meetup Tokyo で登壇することで Activity になるし、コネクションも広がるのでやってみると大きなプラスになります。

というわけで、次は 2020 年の 1~2月の申請受付になりますので、それを一つのターゲットとして活動してみてはいかがでしょう。
VMware DevOps Meetup が 9月/11月開催予定で、VM Meetup Tokyo も年内には 1~2回はありそう?

自分も継続に向けてがんばります。