vHoge

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

VMware DevOps Meetup #5

こちらに(途中)参加してきました。
VMware DevOps Meetup #5 - connpass

今回はお仕事のミーティングを放り込まれたおかげで無念の途中参加...
案の定、裏で Twitter 実況とかやっていたりなので、所感だけ。

NSX-Tから見たvSphere with Kubernetesのネットワーキング

www.slideshare.net vSphere with Kubernetes における NSX-T のお話。遅刻のため発表は見られず...orz

k8s with NSX-T は PKS で少し触ったことある程度だが、とてもよくできていた印象。
k8s で要求される Network 周りの機能が NSX-T に上手いことマッピングされている。

オンプレ k8s における Network / Storage はなかなか難しいもので、OSS 、もしくは、ベンダー製アプライアンスプラグインを組み合わせて構築する必要があり、切り分け調査も自前ですることになるので、非 Tech 系企業が導入するにはかなりハードルが高い。

一連の VMware k8s ソリューションであれば、Network は NSX-T(NCP)、Storage は vSAN(CNS) でインテグレーションされていて、サポートもワンストップで出来るのでハードルは下がり、k8s に強くない企業でも導入が現実的なレベルになる。

k8s 本体も含め、Network / Storage も全て汎用サーバでワンストップ対応できるディストリビューションVMware が唯一ではないかな…

# まぁ正直なところ、(オンプレ縛り無しなら) k8s は EKS/AKS/GKE に流れてしまうのが一番良い気が

Ansible VMwareモジュールの今までとこれから

speakerdeck.com このセッションの終わり間際でようやく合流。
なので、こちらも発表はほとんど見れてないです...orz

Ansible の最近の動向を踏まえての VMware モジュールのお話。

某社在籍時の 2017 年ぐらいだと VMware 向けの構成管理ツールは調べた限りどれもやりたいことができず未成熟な印象(見きれていなかっただけ?)で、結局 pyvmomi でツール内製していたりしたのですが、今なら Ansible 一択。

Octant で k8s を手軽に可視化してみる

onedrive.live.com K8sダッシュボードである Octant のお話。
シングルバイナリを置くだけでインストールできるのは良い!気軽に試せる(まだ試してないけど)

VMwareK8s の可視化 OSS だったりするわけですが、Tanzu Mission Control 辺りはこれがベース(もしくは TMC からスピンアウト)だったりするのかしら?

# というか、始まるまではネットワークの話だと勘違いしてました…(それ Octant やない。Antrea や。)

Docker+Tensorflowの学習をBitfusionで高速化

発表資料はアップロードされておらず?

vSphere Client(vCenter) から Bitfusion がどう見えるかとかの実画面を見れたのは初。
ということで、非常に面白かった発表、資料公開がされていないのが残念...
個人は当然ながら、企業レベルでも簡単に試せるものではないので…

3rdParty だと VMKernel に手は入れられないので中継 VM 立てて DirectPath I/O が精々ですが、Bitfusion が買収・統合されたことによって、現時点だと vSphere Client から見れますぐらいから将来的には Server VM は VMKernel に統合されないかなと睨んでいるのですが…その方がオーバーヘッド減ってキレイ(に見える)だし。はてさて。

Japan VMUGとDevOps

発表資料はアップロードされておらず?

VMUG とのコラボ!というか VMUG 紹介。

VMUG と meetup、最近はコンテナネタで少し共通部分が出始めていますが、内容の方向は少し異なっていまして、 VMUG は自社事例を中心としたお困りネタやバッドノウハウ共有、ベンダプロダクト話など、もう少し現場現実ネタが多め。

OSS とか開発ネタは弱いので開発中心の人には少し物足りないかもしれないが、一方で、少しでも VMware を業務的に携わっている人であればひっかかる話は絶対あるかと。

まずは VMUG.com に登録して、Japan VMUG コミュニティを覗いてみるあたりから。

ところで、逆方向(VMUG で Meetup 紹介)の話は実は mirie がやっていたり。。。 www.facebook.com # 諸事情により資料非公開なのですが、秘密情報が話したとかではないので、公開してもいいかなーと…

連続で登壇するのもアレかな。
ということで今回は登壇を見送りましたが、次はまた何か喋るかなぁ…(なおネタ)

それはそれとして、もう1件何かを画策中。

PowerCLI 12 で Linux 上でのカスタムイメージビルドはできるようになったか?

vSphere 7.0 の GA に併せて、PowerCLI や OVFTool 等の周辺ツール系の Update もリリースされました。
その中で、PowerCLI 12 のリリースノートより。

vdc-download.vmware.com

VMware PowerCLI Components
In VMware PowerCLI 12.0.0, the following modules have been updated:
[略]
VMware.ImageBuilder: Provides cmdlets for managing depots, image profiles, and VIBs.

お、VMware.ImageBuilder の Update 来てる?
これはひょっとして PowerShell Core でも動くようになってない?ということで Try。

VMware.ImageBuilder の現状

マルチプラットフォーム対応した PowerShell Core に追従して、PowerCLI も v10 から PowerShell Core に対応し、MacLinux 上でも動作するようになりました。

…が
全てのモジュールが対応したわけではなく、一部モジュールは PowerShell Core 非対応のままで、Win 環境のみでの動作となっています。

Version    Name                                Repository           Description
-------    ----                                ----------           -----------
6.7.0.1... VMware.DeployAutomation             PSGallery            This Windows PowerShell module contains PowerCLI...
6.7.0.1... VMware.ImageBuilder                 PSGallery            This Windows PowerShell module contains PowerCLI...
11.2.0.... VMware.PowerCLI                     PSGallery            This Windows PowerShell module contains VMware.P...
6.7.0.1... VMware.Vim                          PSGallery            This Windows PowerShell module contains PowerCLI...
11.2.0.... VMware.VimAutomation.Cis.Core       PSGallery            This Windows PowerShell module contains PowerCLI...
11.0.0.... VMware.VimAutomation.Cloud          PSGallery            This Windows PowerShell module contains PowerCLI...
11.2.0.... VMware.VimAutomation.Common         PSGallery            This Windows PowerShell module contains function...
11.2.0.... VMware.VimAutomation.Core           PSGallery            This Windows PowerShell module contains Windows ...
【略】

(上は PowerCLI 11 ですが)
最新のPowerCLI インストール後、Get-InstalledModule叩くと出てくる VMware モジュールで、Version が 10 以上となっているものは PowerShell Core 対応で、6.x 系のまま残っている物は PowerShell Core 非対応で Win環境のみの動作と思われる。

PowerCLI 12 を試す

というわけで、適当な Ubuntu 18.04 LTS に最新 Version の PowerShell / PowerCLI をインストールしてみる。

$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
$ sudo apt-get update
$ sudo apt-get install -y powershell
$ pwsh
PS /home/mirie > Install-Module VMware.PowerCLI

これでインストール完了。Version を見てみる。

PS /home/mirie > Get-InstalledModule -Name VMware.*

Version              Name                                Repository           Description
【一部略】
7.0.0.15902843       VMware.ImageBuilder                 PSGallery            This Windows PowerShell module contains PowerCLI I…
12.0.0.15939652      VMware.VimAutomation.Common         PSGallery            This Windows PowerShell module contains functional…
12.0.0.15939657      VMware.VimAutomation.Cis.Core       PSGallery            This Windows PowerShell module contains PowerCLI C…
7.0.0.15902843       VMware.DeployAutomation             PSGallery            This Windows PowerShell module contains PowerCLI A…
7.12.0.15718406      VMware.VimAutomation.HorizonView    PSGallery            This Windows PowerShell module contains Connect/Di…
12.0.0.15940185      VMware.VimAutomation.Vds            PSGallery            This Windows PowerShell module contains PowerCLI V…
12.0.0.15947288      VMware.VimAutomation.WorkloadManag… PSGallery            PowerShell commands for automation of workloads re…
12.0.0.15947287      VMware.VimAutomation.Vmc            PSGallery            This Windows PowerShell module contains PowerCLI V…
12.0.0.15939672      VMware.VimAutomation.Security       PSGallery            This Windows PowerShell module contains PowerCLI s…
12.0.0.15940184      VMware.VimAutomation.vROps          PSGallery            This Windows PowerShell module contains PowerCLI v…
12.0.0.15939655      VMware.VimAutomation.Core           PSGallery            This Windows PowerShell module contains Windows Po…
12.0.0.15947286      VMware.PowerCLI                     PSGallery            This Windows PowerShell module contains VMware.Pow…
12.0.0.15939671      VMware.VimAutomation.Nsxt           PSGallery            This Windows PowerShell module contains PowerCLI N…

7.0.0.15902843 VMware.ImageBuilder
7.0.0…不穏…一応イメージビルドを試してみる。

PS /home/mirie > > Add-EsxSoftwareDepot ./ESXi670-NE1000-32543355-offline_bundle-15486963.zip
Add-EsxSoftwareDepot: The 'Add-EsxSoftwareDepot' command was found in the module 'VMware.ImageBuilder', but the module could not be loaded. For more information, run 'Import-Module VMware.ImageBuilder'.

VMware.ImageBuilder が Load できていない…
手動 Import を試す。

PS /home/mirie> Import-Module VMware.ImageBuilder
Exception: The VMware.ImageBuilder module is not currently supported on the Core edition of PowerShell.

オワタ…orz

結論

PowerCLI 12 でも VMware.ImageBuilder は PowerShell Core未対応、
Windows 以外動作しない
ということで…

考えてみればリリースノートにもそれっぽいことは書いてないわけで。
(と未対応で言っても Update の記述あったらちょっと期待しますよねぇ…)

サーバは Linux、クライアントは Mac みたいな環境もかなり増えてきているので、VMware.ImageBuilder も PowerShell Core 対応してくれないとシンドい所が多いのでは…

vSphere 6.0 は塩漬けしない方がよい 3 つの理由

vSphere 7 が華々しく発表される傍ら、vSphere 6.0 が 2020/3/12 (PST?)終日を以って End of General Support (EOGS)を迎えます。
blogs.vmware.com
ここからは Technical Guidance フェーズとして、パッチや機能追加こそ出ませんが、問い合わせ自体はナレッジベースで対応するサポートフェーズとなります。

正直なところ、予算も無いし、5年も枯れたバージョンであればさほどクリティカルな障害は出ないだろうということで、ハードリプレースに向けて塩漬けさせるという対応を取るところも多いだろうとは思いますし、そういった事情も理解します。
特に vSphere となると機能追加より安定性重視で塩漬けするケースも多いと思います。

ただ、今回は今までの 5.x 時代とは少し異なる事情があり、塩漬けさせておく方がリスクが高いのではという理由がありますので、その辺の話をば…
※ あくまで個人の見解です。

vSphere 7 の話もしたいところではありますが、まだ詳細をキャッチアップできていなかったりするので、その話を知りたい人は VMware Blog 辺りを追っかけてみると今ならいっぱい出てくるかとw

昨今の CPU 脆弱性事情

その昔は脆弱性と言えば OS もしくはソフトウェアレイヤー での話が多く、ある程度稼働実績が長ければ脆弱性も出尽くして安定しているという傾向にありました(勿論 0 ではありませんが…)。また、ESXi の管理インタフェースを DMZ のようなインターネットにさらすケースは極めて稀なので、多少の問題は無影響で潰せるケースも多かったと思います。

ところが最近、Meltdown や Spectre をはじめとした CPU (の特に投機実行まわり)での脆弱性が継続的にポロポロと検出されており、その対応や緩和策として OS レイヤー、つまり ESXi でパッチがリリースされるというケースが多いです。
ネットワーク的に DMZ に置かれていなくても同じ ESXi 上でマルチテナント、もしくは、シングルテナント(同一企業内)であっても VM の管理者が異なるケースであれば、脆弱性が突かれ、(実用的かはさておき)他の VM 情報を盗み見れる可能性が生じます。

ハードウェアの脆弱性とはいえ、OS 側でのパッチがセットとなるケースが多いので、パッチが出てこないとなると特にマルチテナント環境をはじめとして、仮想化集約がかかった環境であればそのリスクは大きくなると思います。

アップグレードパス

原則 vSphere のアップグレードは 2バージョン以内となっているようで、あまり細かい情報はキャッチアップしていませんが、vSphere 6.0 から発表された vSphere 7 への直接アップグレードパスはありません。
なので、vSphere 6.5 or 6.7 経由しての 2段階アップグレードとなります。
で、vSphere 6.5 と 6.7 はリリースが1年半差があるにも関わらず、共に EOGS は 2021/11/15 と (vSphere 6.0 EOGS から)1年半程度の違いしかありません。
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/support/product-lifecycle-matrix.pdf

まぁ、どこにアップグレード検証や作業のシワ寄せをするかの話でしか無いですが、6.0 の EOL 付近に慌てて 6.5/6.7 にあげても焼け石に水なので、それならパッチとかアップデートの恩恵を受けられるタイミングで上げておいた方が…というお話。

※ この件については正直、 6.5 と 6.7 で GA が1年半近く違うのに EOGS や EOL が同じタイミングなのはどうなのという気持ちがありますが…

Flash の EOL

個人的にはこの話が一番大きいと思っていますが…
vSphere 6.0 といえば vSphere Web Client がメインで Flash が必須だったりしますが、2020年末に Flash 自体が EOL を迎え、主要ブラウザでの利用ができなくなります。

Flash 環境を維持する = ブラウザアップデートを止めることになり、それはそれで塩漬け以上のセキュリティリスクが発生したり、環境的な制約が出てきます。

そのため、6.0 の EOL まで残したとしても途中で主要管理環境を失うこととなり、運用上で大きな問題となることが懸念されます。

C# クライアント使うとか Flings から HTML5 クライアント入れるとかの代替策もありますが、公式でサポートされているものではなく、機能制限がついてしまう(特にサードパーティ周りのプラグイン)ので、特に塩漬けを考えるようなエンタープライズ系での利用だとネックになりそう。

その他

それ以外にも NSX-T や EPYC、Optane PMEM、は vSphere 6.0 での対応来ず、vSphere 6.5 (Update x) 以降となっており、少なくともvCenterは上げておかないと追加できない状態。

従来の 5.x までとは事情が異なっており、アップグレードに対して塩漬けの方がリスクが高そうな状況なので、保守的に倒すところでも今回は思い切った方が良いのではなかろうか。

vExpert Directory にアイコンを登録したい

現在の vExpert が載っている vExpert Directory

ざっと見るとお気づきになるかと思いますが、その人のアイコンが表示されている人が結構いらっしゃいますが、 アレってどうやっているんだろう…
アカウント設定ページを見てもそれらしい項目は見つからない…

未登録だと ↓ な感じ。
アイコン未登録の場合

取得元を追ってみる。

というわけで、表示されている人のページの HTML ソースを見てみる。

<div class="content-container">
  <main class="content-area">

    <section class="community-top-section">
      <h1 id="community">
        <img src="https://www.gravatar.com/avatar/【IDっぽやつ】?s=64&d=mm" alt="" title="Gravatar.com" border="0" />
        hogehoge      </h1>


      <div class="row">
        <div class="col-xs-10">
          <h2>vExpert Information</h2>
        </div>
        <div class="col-xs-2">
                  </div>
      </div>

gravatar.com から取得している?

gravatar.com とは

ja.gravatar.com

グローバルに認識されるアバターGravatar は、ブログやコメントを投稿する際に名前の側に表示される画像です。アバター画像があるとブログやフォーラム上で誰が発言しているのか分かりやすくなります。他にも色々なサイトで利用できます。

ここに登録されたアバター画像を vExpert Directory 側で表示しているっぽい。

どうやって連携している?

自分もアカウント登録して画像上げてみるも vExpert Directory 側には表示されず… アカウント設定にも gravatar 情報入れるところ無いっぽいんだよなぁ…と困惑。

すると @tcpninja さんからありがたいお告げが!

お、なるほど!!

gravatar.com を設定し直す

アカウント作成したといっても Google アカウントの連携で作っており、vExpert Application Portal の登録アドレスとは異なっている状態。
gravatar に vExpert Application Portal の登録アドレスを追加、 primary email に昇格し、アバター画像を登録する。 gravatar (上側が vExpert Application Portal 登録アドレスで、下は Google(gmail))

これで vExpert Directory を開くと… vExpert Directory
表示された!

設定とかなく、登録メアドでぶつけているだけなんですね。

これって裏技なの?

vExpert Application Portal 見ても gravatar 連動とか表示方法の記載は見つからず…
Google で探しても引っかからず…何でみんな知ってるの…

と思ったのですが、未登録時のこのアイコン、gravatar のアイコンなんですね。
ここからみんな察している…?いや、分からんわ…

同じく迷える人達、後進のため、残しておく。。。

※ 3/4 追記
gravatar の話はアナウンスメールに流れてるでというご指摘をいただきまして、
メール掘り起こしてみると確かに記載ありました…
gravatar の文字列は何か見た気がしていたのですが、ここにあったとは。
ということで、メールはちゃんと読みましょう(汗)

govc で screenshot を取る

備忘録的小ネタ。書いてみたら大きくなりました。

先日某 vSphere のストレージでトラブった際 VM コンソールに Readonly 落ちが出ていないかを確認するのに govc をブン回して screenshot を取得したという苦労話を聞いた。

え、govc 単独で VM コンソールの screenshot を取れるの?ということで試してみる。

Usage

govmomi/USAGE.md at master · vmware/govmomi · GitHub
screenshot で探してみると確かにありますねぇ…

Usage: govc vm.console [OPTIONS] VM

Generate console URL or screen capture for VM.

One of VMRC, VMware Player, VMware Fusion or VMware Workstation must be installed to
open VMRC console URLs.

Examples:
  govc vm.console my-vm
  govc vm.console -capture screen.png my-vm  # screen capture
  govc vm.console -capture - my-vm | display # screen capture to stdout
  open $(govc vm.console my-vm)              # MacOSX VMRC
  open $(govc vm.console -h5 my-vm)          # MacOSX H5
  xdg-open $(govc vm.console my-vm)          # Linux VMRC
  xdg-open $(govc vm.console -h5 my-vm)      # Linux H5

Options:
  -capture=              Capture console screen shot to file
  -h5=false              Generate HTML5 UI console link
  -vm=                   Virtual machine [GOVC_VM]

govc とは

あれ govc の話って前にしなかったっけ?と思ったらあれは VMUG の中でのネタか…
なので、 public には何も出てないのでとりあえず資料から抜粋だけ。
詳細は割愛。ちょっと調べればいっぱい出てくる…はず。

https://github.com/vmware/govmomi/tree/master/govc
・Go 言語 (govmomi) で書かれた OSS の CLI ツール
・Windows / Linux / MacOS / FreeBSD 対応
・PowerCLI 相当の vCenter/ESXi 操作が可能
・vSAN や NSX などの他コンポーネントは未対応
・数MBのバイナリファイル1つのみなので可搬性が高い

取得してみる

試しに vCSA の VM コンソールを取得してみる。
vSphere Client 上でのコンソール表示は ↓ の感じ。
VM例 govc を叩いて screenshot をファイルに出力する(実行は WSL 上から)

# screenshot 取得、特にコンソール上に結果出力などはなし。
$ govc vm.console -capture screen.png Embedded-vCenter-Server-Appliance

# file で見てみる。
$ file screen.png
screen.png: PNG image data, 800 x 600, 8-bit/color RGB, non-interlaced

実際に取得したスクショのファイルは ↓
コンソール おぉぉ、すごい。ちゃんと取れてる。
ちなみに VMRC とかは入っていません。

PowerCLI でもできるのかな?

デフォルトの cmdlet だと入っていないが、自前でスクリプト書けばできるっぽい。
例えば ↓のページに実装例が載っています。 www.vcloudnine.de

MoRef

というか、↑ のページの PowerShell 見ていて知ったのですが。
下記の URL で VM のコンソール表示だけできるんですね…(要 vCenter UserID/Password)

https://【vCSA IP or ドメイン】/screen?id=【VM の moid】

コンソールページ vSphere Client から開くものとは異なっており、本当にコンソール表示だけで、ここでマウスとかキーボードとか操作しても VM 側には渡されていない…
というか、コンソールが画像として表示されています。
画像なのでコンソール出力に変化があっても再描画されない。 MoRef
ほーコンソールの画像生成はそもそも vCenter 側で行っていて、 PowerCLI も govc もこの生成された画像をダウンロードしているだけなのね。



余談

最初は govc の話だけだったはずが、ついでで PowerCLI 調べてみたらかなり話が広がってしまった…