vHoge

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

vExpert 2020 を受賞しました

日本時間で今朝、vExpert 2020 の発表があり、昨年に続き受賞いたしました!
受賞された皆々様おめでとうございます!

vExpert☆☆
vExpert☆☆
vExpert 2020
vExpert 2020
今日発表らしいというのは認識していたので、少し早めに起きてメールチェックするも特に何も来ておらず… Twitter も静かだし、発表遅れてるのかな?早いし2度寝するか…と布団に戻って10分後にメールが来ていたというw
なんとも間が悪い。

2回目の申請

Activity としてはそれなりにあり、新規に比べれば更新の方が通りやすいという噂だったりで、特に心配することもないのですが、個人的には受賞できるかは半信半疑でした。
昨年は Customer Path として VMware 社のアカウント SE の方にもコメントをいただき(その節はありがとうございました!)受賞という流れでしたが、今年は Evangelist Path で申請をしています。 所属会社としては Customer であり Partner でもありというポジションらしいのですが、自分の担務的には直接関係なく、担当者とのパスもないということで Evangelist Path で上げています。

とにかく昨年と条件が異なるということで肌感としていける感がピンと来ず、どうなるものか…という思いでしたが、無事何とか受賞できました。

今年の vExpert 事情

※ 個人の感想です
vExpert Directory をざーっと眺めていたのですが、何か FJCT さんで初受賞された方が多いなーという印象。

会社として何かあったんですかね?w

というか、そもそも今まで1人も居なかったというのがおかしな話で。国内屈指の規模で vSphere 基盤のクラウドを提供していて、meetup とかでもかなり深い話とかされていたので、今後も深いネタ面白いネタがでてきてくれそうです。

別に FJCT さんに限らず、どこの会社であっても自分のところはこうやってます話はあり、他所からすると結構おもしろかったり参考になったりするので、その辺の話どんどんとでてきて多彩な会社ラインナップとならないかなぁと期待しております。

VMware DevOps Meetup #4

こちらに参加してきましたWeb参加になりましたやっぱり参加してきました。
VMware DevOps Meetup #4 - connpass ヴイエムウェアオフィス
昨今のコロナウイルスの影響を考慮して、Webinar 形式に。
中止となるイベントが多い中、直前にも関わらず Webinar 形式に切り替えてイベントを開催できるのは素晴らしい対応力。

発表も自宅からで大丈夫いいのかな…と思っていたら発表者はヴイエムウェア社オフィスからということで当日急ぎ浜松町へ。
案内メール来ていたのを完全に見落としていましたorz 危なかった…

今回は裏で発表準備とか(Twitter とか)ゴソゴソやっていたので、各発表についてあまりメモを取れていないのであしからず。

LT1: IBM Cloud pak for Multicloud Manager 1.2によるVMwareAWS、Azure、GCPIBM Cloud のDevOps統合管理

www.slideshare.net IBM Cloud pak のお話。
エンタープライズ向けだと k8s 管理はどこも注力している分野っぽい。
なので、Tanzu と競合する…?詳細までは比べてないので違うかも。
現状だと先行しているのはこちら。ただ、オンプレは Openshift 前提っぽいので Upstream k8s だと Tanzu 一択かな?

とは言え、RedHat 買収で開発シナジーが全面に出てきたらかなり強そうです…

LT2:vCenter アラートを今風に通知する (M@STER VERSION)

speakerdeck.com 自分の発表。前後が結構カッチリした内容だったのに対し、自分はネタ枠ですなw

というわけで、以前のネタ + VEBA でひとネタでしたが、VEBA が実動作まで辿り着けずその辺りは誤魔化し気味の内容に。

話の中でありましたが、VEBA の OVF プロパティ値を typo してて、vcenter-connector の CrashLoopBack 気づくまで時間を要したのが痛い。
解消するも今度はコンテナから DNS を引けておらずでタイムアップ。なんでだろ?
VEBA の問題というよりはホームラボ環境特有な問題だとは思います…

VEBA のデプロイ自体はこの記事で書いていたのですが、既に最新 Ver だと OVF プロパティも変わっていたり…何とか動かしてまたまとめます。

LT3: NSX-T Infrastructure as Code プロジェクト

www.slideshare.net NSX-T IaC プロジェクトのお話と CTO Ambassador のお話。
Ambassador って何ぞや?ネスカフェぐらいでしか聞いたこと無いぞwみたいな話を現地では少しやってたりしましたw
他の会社でも結構ある(あった)らしい。

IaC の話で、NSX-T だと Ansible or Terraform で Terraform の方がやれることが広いというのがちょっと意外。Ansible = 構成管理、Terraform = プロビジョニング(デプロイ) なイメージだったので。

次回以降で詳細を紹介とのことなのでそちらを期待。
NSX-T 周りはどこも開発速度が速いので、ひょっとしたら次に話を聞くときはポジションが変わってることもありえるかも…

現地ってどんな感じ?

主催の@motonori_shindo さん、発表者の @ynakaoku さん含め、ヴイエムウェア社の方が4名。それともう1人の発表者であった @t3hirayama さんと自分の計6名。

浜松町スクエア 13F のヴイエムウェア社オフィスの 20人ぐらい収納可能な広さのセミナールーム。画面は発表者が都度自分の PC で掴みながら、マイクは会場設備(をPCに接続して)を利用なので一応部屋前方の講演台に立ってやってました。

今回、自分のノート PC が Ubuntu 機だったのですが、ヴイエムウェア社のオフィス Wi-Fi 掴むのに認証?がうまくいかずで一苦労。それさえ突破できてしまえば Zoom アプリのインストールで時間は少しかかりましたが、特に問題はなく発表できました。

そんな感じで人数は少なかったですが、ワイガヤと楽しくやっていた感じです。

所感

急遽 Webinar 形式に切り替えての開催ということで、このご時世に中止することなく、最善を尽くして開催できたことは素晴らしいと思います。
で、後ほど Twitter を見ていて気付いたのですが、関西のような遠地の方?がチラホラ。
瓢箪から駒。Webinar ならではの恩恵。

通常の会場集合の形式であっても Webinar も同時で流せれば遠地の方も見れて良いのかなぁと。
何なら登壇もできるので、コミュニティとしての幅は広がりそう。
(Webinar 開催でかかるコストが分からないので難しいのかもしれませんが)

VMware 製品の CPU ライセンスモデル改定

先日 VMware 製品の CPU ライセンスモデル改定のアナウンスがありました。
www.vmware.com

要約すると

  • 1 ライセンス1ソケット換算だったものが 1 ライセンス 32 物理コア換算に
    • HT は考慮しなくてよい
  • 改定は 2020/4/2 (PST) より適用
  • 2020/4/30 (PST) 終日までに 32 コア / 1 ソケ以上のサーバ向けに購入していたライセンスは無償で追加分ライセンスを発行

32 コア / 1 ソケ超えの CPU を採用しているサーバ自体は現状だとまだかなり少なく、
仮に使っていたとしても追加分のライセンスを無償で発行してもらえるので、現在稼働している範囲においては追加でライセンス購入が必要になるパターンはない。
※ ただし要サポート契約

対象ライセンスでアップグレード/ダウングレードは大丈夫なのかと思ったが、追加ライセンス発行なのでいつものように MyVMware から元の分/追加分の両方を手続きすれば、コレ用に面倒なフローを踏むことはなさそう。

対象CPU

2020/2/7 現在だと下記が対象。

Intel

  • Xeon Platinum 9282 (56Cores)
  • Xeon Platinum 9242 (48Cores)

AMD

  • EPYC 7742 (64Cores)
  • EPYC 7702 (64Cores)
  • EPYC 7702P (64Cores)
  • EPYC 7642 (48Cores)
  • EPYC 7552 (48Cores)

Xeon Platinum / EPYC 最上位クラスでようやく引っ掛かる。
Xeon Platinum はさておき EPYC は割と現実的な選択肢になりそうではあるが、現時点で採用しているところは確かに少なそう。

(この Xeon Platinum はかなりキワモノ CPU で、1 つのパッケージに 2 つのダイを載せてあり、9242 は消費電力 350W、9282 に至っては 400W、Platinum なのに 2ソケまでという…本当に買ってるとこあるのかこれ?)

VMC on AWS

こちらはそもそも対象外 CPU なので変更は特に何もなさそう。

  • i3.metal = Xeon E5-2686 v4 (18Cores) x 2ソケ
  • r5.metal = Xeon Platinum 8175M (24Cores) x 2ソケ

https://cloud.vmware.com/jp/vmc-aws/pricingcloud.vmware.com

追加ライセンスの発行

無償ではあるが条件が少々。

  • サポート契約がある
  • 個別に申請が必要
  • 申請期限は 2021/1/29 (PST) 終日まで

申請内容は特に書いてないが、パートナやVMware 営業へ連絡、
もしくは、My VMware からチケット発行とのこと。

とりあえず

正確なところはパートナなり VMware 営業なりに問い合わせましょう。

私見

VMware 的には業界標準に近づけるとか他製品との価格比較を分かりやすくとはなっているが、ユーザ的にはただの値上げでメリットが見えない。
特に最近は AMD がかなり頑張っていて、many core な EPYC が現実的になってきていただけに痛い。採用がまだ少なく影響が少ない内に手を打った感じなのかなぁ。

それと VMC への誘導戦略の 1 つとして利用してこないかなと邪推。
VMC で 32 コア / 1 ソケ超えベアメタルインスタンス出すときにうまいこと調整してライセンス分の割安感を出すみたいな。そこに繋げるための布石に…とは考えすぎか?

VEBA をデプロイする with ovftool

vExperts Advent Calendarslack 通知ネタの延長戦にしようかと思ったが、
思っていたより時間がかかりそうなので、鮮度が良い内に小出しに。

VEBA とは

vCenter Event Broker Appliance の略。
VMworld EU のセッションで発表され、VMware Flings にて11月初旬に公開されたもので、vCenter のイベント駆動でファンクションを実行してくれる faas アプライアンス

flings.vmware.com

内部アーキテクチャとしては Photon OSKubernetes を乗せ、 その上に OpenFaaS を立て、vcenter-connector 経由で vCenter のイベントを pull?している。
Ingress には Contour を使っているようだが、意識することはあるのだろうか…

これらがひとつの OVA アプライアンスとして固められて配布されている。

Download

Flings から入手可能ではあるが、Flings から入手できるのは 0.1.0 で、
実は既に 0.2.0 が存在している。

先日まで Flings の VEBA の Comments タブがあってその中に URL が載っていたのだが、今見ても Comments が見当たらず…
夢を見ていた…?

とりあえず手元にある 0.2.0 でデプロイをすすめる。
VMware {Code} とか slack 見ればあるのかな…

Deploy with ovftool

ovftool を使って CLI デプロイを行う。
プロパティ等々は以下。 NW 設定がほとんどで、パスワード系が何個か。
細かい解説は割愛しますので、ご自分の環境に合わせて置き換えてください。

ovftool -n='VEBA' \
        -ds=datastore-hdd \
        -dm=thin \
        --net:'VM Network=VM Network' \
        --prop:guestinfo.hostname=veba01 \
        --prop:guestinfo.ipaddress=192.168.0.61 \
        --prop:guestinfo.netmask=24 \
        --prop:guestinfo.gateway=192.168.0.1 \
        --prop:guestinfo.dns=192.168.0.52 \
        --prop:guestinfo.domain=home.lab \
        --prop:guestinfo.root_password=hogehoge \
        --prop:guestinfo.openfaas_password=fugafuga \
        --prop:guestinfo.vcenter_server=192.168.0.50 \
        --prop:guestinfo.vcenter_username=administrator@vspehre.local \
        --prop:guestinfo.vcenter_password=hogefuga \
        --prop:guestinfo.vcenter_disable_tls_verification=True \
        --prop:guestinfo.debug=True \
        --noSSLVerify \
        --allowExtraConfig \
        --acceptAllEulas \
        --powerOn \
        ./vCenter_Event_Broker_Appliance_0.2.0.ova \
        'vi://vcsa01.home.lab/home01/host/cls01/192.168.0.51'

余談

        --prop:guestinfo.netmask=24

最初ココを "255.255.255.0" で指定しててネットワーク疎通しなかったという失敗談。
どこかの Doc 読めばわかる話ではあるが、この項目名だと prefix とは思わないよねぇ…

OVA のプロパティ詳細

ovftool vCenter_Event_Broker_Appliance_0.1.0.ova
OVF version:   1.0
VirtualApp:    false
Name:          vCenter Event Broker Appliance
Version:       0.1.0
Vendor:        VMware
Product URL:   https://flings.vmware.com/vcenter-event-broker-appliance
Vendor URL:    https://www.vmware.com/

Annotation:  Version: 0.1.0

Download Size:  541.50 MB

Deployment Sizes:
  Flat disks:   12.00 GB
  Sparse disks: 1.58 GB

Networks:
  Name:        VM Network
  Description: The VM Network network

Virtual Machines:
  Name:               vCenter_Event_Broker_Appliance
  Operating System:   otherguest
  Virtual Hardware:
    Families:         vmx-13
    Number of CPUs:   2
    Cores per socket: 1
    Memory:           8.00 GB

    Disks:
      Index:          0
      Instance ID:    9
      Capacity:       12.00 GB
      Disk Types:     SCSI-lsilogic

    NICs:
      Adapter Type:   VmxNet3
      Connection:     VM Network

Properties:
  Key:         guestinfo.hostname
  Category:    Networking
  Label:       Hostname
  Type:        string
  Description: Hostname of system

  Key:         guestinfo.ipaddress
  Category:    Networking
  Label:       IP Address
  Type:        string
  Description: IP Address of the system

  Key:         guestinfo.netmask
  Category:    Networking
  Label:       Netmask Prefix
  Type:        string
  Description: CIDR notation (e.g. 24 for 255.255.255.0, 28 for
               255.255.255.240)

  Key:         guestinfo.gateway
  Category:    Networking
  Label:       Gateway
  Type:        string
  Description: Gateway of the system

  Key:         guestinfo.dns
  Category:    Networking
  Label:       DNS
  Type:        string
  Description: DNS Server

  Key:         guestinfo.domain
  Category:    Networking
  Label:       DNS Domain
  Type:        string
  Description: DNS Domain

  Key:         guestinfo.root_password
  Category:    Credentials
  Label:       Root Password
  Type:        password
  Description: Password to login in as root. Please use a secure password

  Key:         guestinfo.openfaas_password
  Category:    Credentials
  Label:       OpenFaaS Password
  Type:        password
  Description: Password to login into OpenFaaS. Please use a secure password

  Key:         guestinfo.vcenter_server
  Category:    vSphere
  Label:       vCenter Server
  Type:        string
  Description: IP Address or Hostname of vCenter Server

  Key:         guestinfo.vcenter_username
  Category:    vSphere
  Label:       vCenter Username
  Type:        string
  Description: Username to login to vCenter Server

  Key:         guestinfo.vcenter_password
  Category:    vSphere
  Label:       vCenter Password
  Type:        password
  Description: Password to login to vCenter Server

  Key:         guestinfo.vcenter_disable_tls_verification
  Category:    vSphere
  Label:       Disable vCenter Server TLS Verification
  Type:        boolean
  Description: Disable TLS Verification for vCenter Server (required for
               self-sign certificate)
  Value:       False

  Key:         guestinfo.debug
  Category:    zDebug
  Label:       Debugging
  Type:        boolean
  Description: Enable Debugging
  Value:       False

デプロイすると

VEBA に HTTPS でアクセスすると ID/Pass が求められる。
User:admin / Pass:デプロイ時の openfaas_password で OpenFaaS の GUI が見える。

このとき、URL は IP でなくホスト名でないとアクセスできないので、DNS 登録するか hosts に IP とホスト名を書いておく(VirtualHost 的なあれ) OpenFaaS

https://【VEBAホスト】/status でステータスページ、
status

https://【VEBAホスト】/bootstrap で起動ログ(/var/log/bootstap.log を確認することができる。

起動ログはデプロイ時のパス3種 (root/openfaas/vCenter) がガッツリ出力されているので取り扱いにはご注意を…(debut=true のせい?)

今日はここまで

サンプルでも動かしてみようと思ったが、ローカルにコンテナレジストリを立てる必要があるらしく、とりあえず一旦ここまで。
続きはそのうち書きます…

謝辞

丁度 VEBA のデプロイをしていると VEBA の開発者である William Lam 氏 (@lamw) から熱い reply が。

丁度デプロイしたぜーと返信つけるともう一人開発者である Michael Gasch 氏 (@embano1) からも reply が。

Thank you for your kindness!!

vCenter アラートを今風に通知する

こちらの投稿は vExperts Advent Calendar 2019 の 10 日目になります。
初挑戦です(`・ω・´)よろしくお願いします。

adventar.org

vSphere Client も Full HTML 5 になったり Project Pacific が発表されてどんどん modern な環境を追及していく vSpehre ですが、vCenter のアラート通知は未だに SNMP or メール通知と中々レガシー…
ここも 今風な感じで Webhook 呼び出して Slack に通知を飛ばしてみる。

1. コマンドの実行

vCenter のアラートアクションに「通知トラップ」の「通知 E メールの送信」に並んで「コマンドの実行」がある。その名の通り、アラートの条件にひっかかった際に任意のコマンドを実行できる。

docs.vmware.com

公式 Doc を読む限りだと Windows 版 vCenter の例になっているが、vCSA でも使える。 なので、例えば vCSA に SSH でログインして以下を仕込む。

root@vcsa01 [ ~ ]# cat /usr/local/bin/alert.sh
#!/bin/sh
/usr/bin/curl -X POST --data-urlencode "payload={\"text\": \"${VMWARE_ALARM_NAME}\n${VMWARE_ALARM_TARGET_NAME}\n${VMWARE_ALARM_EVENTDESCRIPTION}\n${VMWARE_ALARM_ALARMVALUE} \"}" https://hooks.slack.com/services/【Token 的な何か】

これでアラーム定義から対象アラームのアラームルールでスクリプト実行を指定し、設置したパスを指定する。 スクリプト仕込み この状態でアラートを発生させる。
(試験的にアラート発生させるのはデータストア容量監視の閾値が個人的には楽) slack
メッセージに埋め込めるパラメータは環境変数に格納されており、↑ の公式 Doc の子ページに使える環境変数が載っているので欲しいメッセージの環境変数を組み合わせて埋め込んでやればOK。

正直 curl 叩いているだけなので個別にスクリプトにせず、スクリプト実行に直接 curl とオプション指定すればいけるかと思ったが、その場合だと何故か環境変数が空でメッセージが組み立てられなかった…なぜ…

2. snmptrapd

vCenter からは SNMP Trap 飛ばして、snmptrapd 側で slack へ POST する方法。
vCenter の設定的には全般設定で適当な SNMP レシーバを指定してアラートアクションに通知トラップを指定してやる。 SNMPレシーバ あとは SNMP レシーバ側で snmptrapd と curlスクリプトを仕込む。

# snmptrapd インストールは apt-get なり yum なりで
$ cat /etc/snmp/snmptrapd.conf
authCommunity log,execute,net public
traphandle default /usr/local/bin/alert2.sh

snmptrapd から呼び出すスクリプトが結構クセがあり、snmp メッセージを引数でなく標準入力で渡してくるので読み込みに一手間。さらに snmp メッセージがダブルクォートを含んでいるのでシェル → json 用に多重でエスケープが必要だったりでかなり面倒…

$ cat /usr/local/bin/alert2.sh
#!/bin/sh
while read line;
do
    text="$text$line\n"
done
text=`echo $text | sed s/\"/\\\\\\\\\"/g`

/usr/bin/curl -X POST \
        --data-urlencode "payload={\"text\": \"$text\"}" \
        https://hooks.slack.com/services/【Token 的な何か】

これでアラートを起こすと SNMPアラート と、アラートが投稿される。
このままだと何がなにやらなので公式 MIB を入れましょう。

kb.vmware.com

SNMPアラート with MIB (なんかまだ MIB が足りてないような…)

要望として

大体どこのチャットも Webhook があるので、そろそろ監視通知方法として HTTP 呼び出し辺りを実装してくれませんかねぇ… > VMware さん

一方ロシアは

Slack にメール送信で投稿した。

メールApp は有料プランでないと使えないので試せてないけど、多分コレが一番楽。
(組織によっては App 追加も色々ありそうだけど)