vHoge

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

Tanzu ポートフォリオ早見表

?????「―― バカの一つ覚えみてーに TanzuTanzu 言いやがって…おまえら全員 Tanzu 村の村人かっつーの!!」

すみません…言いたかっただけです。

Tanzu が発表されて 1 年半、
一口に Tanzu と言ってももりもり製品やサービスが増えておりますが、一気にそんなに覚えきれない…TKG 一つとっても TKGI とか TKGm とか…
ということで製品名/略称/概要メモをまとめる。
(2021/2/21 時点、随時更新予定)

※ mirie 個人の解釈なので必ずしも正確とは限らないのであしからず。

製品名 略称 概要
Tanzu Kubernetes Grid TKG VMware が提供する Kubernetes ディストリビューション
Tanzu Kubernetes Grid Integrated Edition TKGI 旧 Pivotal Container Services(PKS)
BOSH というコンポーネントk8s クラスタの払い出しや、Day2 運用を行う CaaS ソフト
Tanzu Kubernetes Grid multi-cloud TKGm vSphere 以外の AWS や Azure などの IaaS 上でも TKG を提供可能とする製品
アプライアンス VM を立て、その中で管理用 k8s が稼働し、TKG の払い出しや管理を行う
Tanzu Mission Control TMC オンプレ、マルチクラウド下の k8s にライフサイクル管理やポリシー制御、バックアップなど運用機能をかぶせることができる SaaS
Tanzu Application Service TAS 旧 Pivotal Cloud Foundry(PCF) → Pivaotal Appication Service(PAS)
アプリビルド、アプリ実行環境、アクセス振り分け、運用や監視等が提供される PaaS ソフト
Tanzu Application Catalog TAC 旧 Bitnami アプリケーションカタログ、SaaS
OSS を自前でカスタマイズやパッチ適用したものをパッケージングして提供し、開発者にユーザセルフで利用可能とする
Tanzu Observability by Wavefront TOW?
TObW?
旧? Wavefront
アプリケーションを可視化し、ダッシュボードとして表示してくれる SaaS
Tanzu Build Service TBS コンテナイメージをビルドするソフト、kpack ベース
ソースコードから実装言語やフレームワークを自動認識してアプリビルドを行い、ランタイムを含めたコンテナイメージを作成する
Tanzu Data Services TDS キャッシュ(Gemfire)、メッセージング(RabbitMQ)、RDB(MySQL/Postgres) などのデータプラットフォームを提供する何か (PaaS ソフトなのかなぁ?)
HP 見てもよく分からん…
Tanzu Service Mesh TSM マイクロサービス共通機能であるサービスディスカバリや認証、サーキットブレーカなどをネットワークレイヤとして提供するソフト
OSS の Istio/Envoy 機能を NSX-T 上で実装しているらしく、コンテナだけでなく VM でもいけるらしい

これ以外にも旧 Pivotal の製品がいつの間にか Tanzu を冠していたりしてもう少し多かったりします (Tanzu Operations Manager とか Tanzu Service Manger とか)
旧 Pivotal 系はパッと見、単体の製品/サービスというより何かのコンポーネントの1つっぽいですが、その辺りは分かりもう少し分かり次第追々追記する…かも。

vExpert 2021 を受賞しました

2/12 (現地時間で 2/11)に vExpert 2021 の発表があり、今年も受賞できました!
受賞された皆々様おめでとうございます!
(当日書くつもりだったのに忘れてた…)

f:id:masahiroirie:20210214225142p:plain
vExpert☆☆☆
f:id:masahiroirie:20210214225322p:plain
vExpert 2021
f:id:masahiroirie:20210214225618j:plain
Pat の署名入り certificate はコレで最後か…
昨年一昨年に比べると初申請とか Path 変更とかそういった大きな変更は無く、Activity もそこそこで、 Codiv-19 影響も考慮した審査するみたいなアナウンスもあって心配事は減ってるのですが…それでも発表まではドキドキもの。
なんとか選から漏れることなく、やれやれと一安心です。

まだしばらく は Codiv-19 の影響でオフラインのイベントとかは難しいかな…
ということで、当面はオンラインを中心に今年もがんばっていきたいと思います。

Raspberry Pi 4 で作った iSCSI 領域を ESXi からマウントしたメモ

誤家庭ご家庭環境で vSphere 用の共有 Datastore を作る場合、適当な NASNFS を使うのが手軽ですが、VMFS* 使えなかったり、(ほとんどの場合)Thin Provisioning 固定になってしまったりと遊ぶには制約がちらほら。

どうせ遊ぶなら VMFS も触ってみて色々実験したい…

ということで、適当な Linux 環境を iSCSI Target 化し、そこに Datastore を作ることに。
Linux 環境は安価で手軽な Raspberry Pi を使ってみる。

まぁ、ラズパイなので信頼性は…なので、あくまでご家庭環境で試してみた程度に。

iSCSI ハード

Raspberry Pi 4 は 8GB でなくてもいい気がしますが、適当な在庫(ESXi on ARM 機を転用)と先々他用途に使うかもということでとりあえず大きいものに。

USB 外付け HDD は USB3.0 対応で、Raspberry Pi の場合バスパワーは弱いのでセルフパワー、もしくは USB でも別から給電できるものにする。
それと UASP の対応差で性能有無があるらしいので対応品にしておくよう注意*
f:id:masahiroirie:20210208224115j:plain

容量は適当。容量単価的には 4TB 辺りがコスパ良いが、そんなには要らないので節約。

* Raspberry Pi 4 だと Linux 側ドライバの UASP 対応が微妙なので無効にした方が良いという話もあったりなかったり…ベンチとってないので現状は分からないのですが、とりあえず有効のまま。 → 参考:Raspberry Pi 4でUSB3.0接続のSSDがとても遅い

OS を焼く

OS は適当な作業用端末で Raspberry Pi Imager を使って microSD に焼く。
f:id:masahiroirie:20210208224812j:plain 焼く OS は何でも大丈夫なのかな…とりあえず Ubuntu 20.04 LTS 64bit で。
f:id:masahiroirie:20210208224843j:plain 焼くデバイスmicroSD を選択し、作成開始。 f:id:masahiroirie:20210208224953j:plain 完了。結構時間がかかる…(1時間くらい?) f:id:masahiroirie:20210208230826j:plain

Ubuntu OS 設定

とりあえずホスト名、ネットワーク、Timezone ぐらいしておけば事足りる?

# ホスト名
mirie@ubuntu:~$ sudo hostnamectl set-hostname raspi01.home.lab

# ネットワーク
mirie@raspi01:~$ sudo vim /etc/netplan/99-config.yaml
---
network:
    ethernets:
        eth0:
            dhcp4: false
            dhcp6: false
            optional: false
            addresses: [192.168.0.21/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [192.168.0.41, 192.168.0.1]
    version: 2
    renderer: networkd
---
mirie@raspi01:~$ sudo netplan apply

# Timezone
mirie@raspi01:~$ sudo timedatectl set-timezone Asia/Tokyo


参考
Ubuntu 20.04 LTSのホスト名を変更する方法まとめ【デスクトップ・サーバー】 | LFI
Ubuntu 20.04 LTSで固定IPアドレスの設定 - Qiita
Ubuntu 20.04 LTS : システムのタイムゾーンを設定する : Server World

iSCSI Target を立ち上げる

Ubuntu だとtgtパッケージをインストールすれば良いらしい。

mirie@raspi01:~$ sudo apt-get install tgt -y
Reading state information... Done
The following additional packages will be installed:
  ibverbs-providers libconfig-general-perl libibverbs1 librdmacm1
Suggested packages:
  tgt-rbd
The following NEW packages will be installed:
  ibverbs-providers libconfig-general-perl libibverbs1 librdmacm1 tgt
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
【略】

Target の設定を conf に書く。

mirie@raspi01:~$ sudo vim /etc/tgt/conf.d/iscsi.conf

conf の中身はこんな感じ。一旦認証回りは省いてほぼ必要最小限。

<target raspi01.home.lab:lun1> # Target 名
        backing-store /dev/sda # Target バックエンド
        initiator-address 192.168.0.61 # iSCSI イニシエータ(≒マウントするESXi)の IP
        write-cache off # ラズパイの信頼性考えるとライトキャッシュは OFF が無難か…
</target>

Target バックエンドはブロックデバイス直の他、イメージファイルとしてファイルパスの指定も可能。

反映のためデーモン再起動。

mirie@raspi01:~$ sudo systemctl restart tgt

tgtadm で Target の情報を確認してみる。

mirie@raspi01:~$ sudo tgtadm --mode target --op show
Target 1: raspi01.home.lab:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2000399 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sda
            Backing store flags:
    Account information:
    ACL information:
        192.168.0.61

conf に書いた Target 名、デバイスACL(initiator-address) が反映されていれば良さげ。

参考
Ubuntu 20.04 LTS : iSCSI ターゲットの設定 (tgt) : Server World

ESXi からマウントする

(vCenter 止めていたのでホストクライアントから…) ホストクライアントのナビゲータでストレージ → アダプタ → ソフトウェア iSCSI で設定を入れる。
f:id:masahiroirie:20210208233409j:plain 固定ターゲット指定だと上手くいかず(名前解決の問題?)、動的ターゲットで アドレス&ポート指定のみで成功したのでとりあえずそれで。

バイスを開けば iSCSIバイスが認識されているはず(出ていなければ再スキャン?) f:id:masahiroirie:20210208233751j:plain
あとは新しいデータストアの作成を進めていけば、作成先に iSCSIバイスを選択でき、VMFS Datastore を作成できる。 f:id:masahiroirie:20210208234052j:plain

参考
iSCSI イニシエータ

VMware DevOps Meetup #7

少し経ちましたが…こちら参加してきました。
VMware DevOps Meetup #7 - connpass

案の定、裏では Twiiter 実況
我ながら騒ぎすぎ…w

Open Policy Agent (OPA) 入門

www.slideshare.net

Policy とは、からの Policy Engine として OPA、その処理言語としての Rego、そして k8s でどのように OPA が使われているかの話。
入門編ではあるが…なるほど、わからんw

なんとなーくは分かったが、特に Rego での実装例周りは手を動かさないと1回聞いただけでは難しいな…と。

あるデータに対してどういう要素や属性を持ち、それをどう判定するかという処理系で、最近多い RBAC 的制御処理にはまさに当てはまりそう。
知見として持っておけばいつかとても役に立つであろう内容。
(こういう処理を OPA 無しで真正面から実装すると if 文だらけになるのかな?うーん…)

Yahoo! JAPANのIaaS with VMware

www.slideshare.net ヤフーさんの VMware 話や、どんなんやろー(スットボケ
というわけで、OB 圧力でいい機会だし誰か喋ってみてやーと投げかけてみた感じです。

内容に関しては書いてあることも書いてあることも色々喋りたい話はあったりますが、部外者の身分なので詳細は差し控えますw
ただ、ESXi 1700+ って増えたなー。。。
辞めた時で 1100 とか 1200 ぐらいじゃなかったかな?(数えてないけど)

そして、32 vCenter は改めて多い…色々しょうがないところではあるけど。

はじめてのTerraform×NSX-T

(資料は非公開?)

Terraform の話!
Ansible の話はよく聞くが、Terraform は初?
イメージ的には Ansible は Day1 でインフラ自体のインテグレーション、Terraform は Day2 でリソースプロビジョニングなイメージ。
(けど、結局裏では API 叩くので Ansible が全部賄っている感じなのかぁ?と)

そんな Terraform から見えた NSX-T 設定方法としての Manager 型と Policy 型の話。
将来的には Policy 型に一本化されていくだろうとのこと。
ちょうど OPA でも Policy の話だっただけにタイムリーな実例でした。

Molecule VMware Driverの紹介

speakerdeck.com

そろそろ Ansible もしつこいかな…と言いつつやっぱり Ansible の話w

一連のテスト環境作成・破棄を実施してくれる Molecule の VMware Driver の話。 delegeted ドライバを使えば VMware でも Molecule 対応可能だが、自前実装が必要…
ということで作ってみた ↓ な話。さすが…
GitHub - sky-joker/molecule-vmware: Molecule VMware Driver
CI と組み合わせると便利で強力そうな…

今までは技術要素紹介ネタ系の話が多かった中で、tech 系のコンテンツプロバイダ 企業の中で VMware をこんな風に運用してみたという使ってますというのは中々新鮮。
(あまり言うとマッチポンプ感が出ますが…w)
VMware のユーザ事例話となるとどうしてもエンタープライズとかサービスプロバイダで手堅い話が多かったりするので、特に tech 系とかベンチャー系がこんな感じで使い倒してまーすみたいな話は色々な会社のケースを聞いてみたい。
あの会社とかあの会社とか…(どこ)

次回は 2021/3/24!!

vCSA も公開鍵認証で SSH 接続する

vCSA のコンソールに SSH で接続する際、大体の場合は以下で接続。

$ ssh root@【vCSA の IP or FQDN】
VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

root@【vCSA の IP or FQDN】's password:
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command>

とは言え。。。

  • SSH で root 接続
  • パスワードログイン

と、通常の運用だとあまりやらない運用(ですよね?)。
大抵は root は許可せず、一般ユーザで公開鍵認証してsudoが標準。

なので、vCSA でも公開鍵認証でログインできるようにしてみる。

対象環境

vCSA 7.0.1
(VMware Photon OS 3.0 / PHOTON_BUILD_NUMBER=11dd065)

接続用ユーザを作る

まずは vCSA に root で入り、ログイン用の一般ユーザを作る。

root@vcsa03 [ ~ ]# useradd -g users -s /bin/bash -m mirie

シェルは何も指定しないと/bin/applianceshがデフォルトシェルになるので、 シェル指定はお好みで(と言ってもshbashぐらいしか入ってないけど)。

useradd -D

# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/appliancesh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

root@vcsa03 [ ~ ]# grep mirie /etc/passwd
mirie:x:1047:100::/home/mirie:/bin/bash

パスワードも設定。

root@vcsa03 [ ~ ]# passwd mirie
New password:
Retype new password:
passwd: password updated successfully

sudo は入っているので sudoers を編集して sudo できるようにしておく。

root@vcsa03 [ ~ ]# visudo
# 末尾に「mirie ALL=(ALL) ALL」みたいな感じで足しておく。

公開鍵を作成して設置

公開鍵を作成する。
以下はクライアント PC 環境から(今回の場合は WSL2 上の Ubuntu)

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mirie/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mirie/.ssh/id_rsa
Your public key has been saved in /home/mirie/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nGUTBVzHn9PmsUY8JvRbY7TC2SOTj0olPPtQpiEgU4k mirie@HAKUTAKA
The key's randomart image is:
+---[RSA 4096]----+
|      o...o+o..  |
|     E o  .. o.. |
|      o . = o B.+|
|       . = * % /=|
|        S . X @oX|
|           = . =.|
|          . + .  |
|           . .   |
|                 |
+----[SHA256]-----+

$ ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts

公開鍵を vCSA へ転送し登録する。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub mirie@【vCSA の IP or FQDN】
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/mirie/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

mirie@【vCSA の IP or FQDN】's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'mirie@【vCSA の IP or FQDN】'"
and check to make sure that only the key(s) you wanted were added.

これで SSH すればパスワードを聞かれることなくログインできる(はず)。

$ ssh 192.168.0.63

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

Last login: Mon Jan  4 13:28:10 2021 from 192.168.0.12
mirie@vcsa03 [ ~ ]$

sshd の設定を変える前に必ず公開鍵認証が通ることを確認しておきましょう。。。
(←確認せずに設定変えて SSH ログインできなくなった人)

root ログイン / パスワード認証を封じる

再び vCSA 側にログインして sshd の設定を変えておく。

root@vcsa03 [ ~ ]# vi /etc/ssh/sshd_config
# 34行目辺りに以下を足しておく
PermitRootLogin no

# 60行目辺りに以下を足しておく
PasswordAuthentication no

書き換えたら sshd を再起動して祈る。

root@vcsa03 [ ~ ]# systemctl restart sshd

これで root ログイン/パスワード認証はできなくなる。

$ ssh root@【vCSA の IP or FQDN】

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

root@【vCSA の IP or FQDN】: Permission denied (publickey).
# 秘密鍵を一時的に退避
$ ssh 【vCSA の IP or FQDN】

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

mirie@【vCSA の IP or FQDN】: Permission denied (publickey).




vCSA と言えど、基本的にはただの Linux(Photon OS) なので、
やり方は他の Linux と同じでした。
(違うのはuseraddでデフォルトシェルがapplianceshになるぐらい?)

あんまりやってないのは検証してないからか面倒なだけなのか…

おまけ:root になる

一般ユーザでログイン後、suで root になれます。

mirie@vcsa03 [ ~ ]$ su -
Password:
Password:
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command> shell
Shell access is granted to root
root@vcsa03 [ ~ ]#

sudo -sでも root になれますが、この場合applianceshが出てこない。

mirie@vcsa03 [ ~ ]$ sudo -s
[sudo] password for mirie
root [ /home/mirie ]#

これ自体はsudo -sの挙動通りと言えば挙動通り。
sudo -ssuのオプション周りの話は結構深いので割愛。追っかけてみると面白いかと…