vHoge

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

tgt で作る iSCSI 領域の block size を変更したい

どうやるんだっけメモ。

デフォルト

こういう tgt の conf だと

<target raspi01.home.lab>
  backing-store /dev/sda
  initiator-address 192.168.100.0/24
  write-cache on
</target>

こうなる。

mirie@raspi01:~$ sudo tgtadm --mode target --op show
Target 1: raspi01.home.lab
    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.100.0/24

Block size 512 って小さいよね…
大きくしたいんだけど、どう書くんだっけ。

正しい書き方

man target.confを読めと。
Target-Level Directives では指定できず、Lun-level Directives で指定可能らしい。
なので少し構成を変更。

<target raspi01.home.lab>
  initiator-address 192.168.100.0/24
  write-cache on
  <backing-store /dev/sda>
    lun 1
    block-size 4096
  </backsing-store>
</target>

1階層落とす感じ。

mirie@raspi01:~$ sudo tgtadm --mode target --op show
Target 1: raspi01.home.lab
    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: 4096
            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.100.0/24

これで Block size が 4096 に。

Github Actions で ESXi カスタムイメージを作る

PowerCLI が core 対応してしばらく経ちますが、ImageBuilder モジュールは未だ core 対応されておらず、レガシーな PowerShell 環境(-v5.1)が必要で実質 Windows 環境が必須。

特に Mac しか持っていないユーザにとってカスタムイメージ作成のかなり高い障壁に…

Windows worker な CI/CD でなんとかなる?

別に恒常的な Windows 環境が欲しいわけでは無く、 イメージ作成する時だけ ImageBuilder が動く環境さえあればいいわけで…

ん、いわばビルド環境の話であれば CI/CD ツールでなんとかなるのでは…?
というわけで、Github が提供する CI/CD ツール Github Actions の仕様を眺めてみる。

仮想環境
Windows Server 2022
Windows Server 2019
Windows Server 2016[deprecated]

docs.github.com Windows Server がいけそうな…コレはイケるのでは…

さらに調べていると下記ブログ。
iucstscui.hatenablog.com shell: powershell 指定で PowerShell v5.1 が上がってくるらしい。
これは期待が高まる。

Github Actions を設定する

Github Actions のワークフローを動かすには以下の流れ。

  1. リポジトリを作成
  2. .github/workflows ディレクトリ化にワークフロー用の yaml を書く
  3. git commitgit pushなりでワークフローを動かす

Github Actions の設定として書くワークフロー用の yaml 構文は以下を参考に。
docs.github.com この yaml の中に PowerCLI のインストールから一連の ImageBuilder の cmdlet を並べていけば良さげ。
出来上がった ISO は artifact として Github にアップロードしてしまう。

従来のようにExport-EsxImageProfileで ISO を出力することもできそうではあるが、オフラインバンドルの入手や Github Actions 環境への配備が面倒なので、New-IsoImage でオフラインバンドルダウンロードとイメージ生成を一気にやってしまうのがお手軽。 blog.kurokobo.com

ワークフロー yaml を書く

とりあえず vib 追加などは行わず、単純にオフラインバンドルから ISO を生成してみる。
初めて使うけどこんな感じでよいのかな。

name: imagebuilder
on: [push]
jobs:
  imagebuild:
    name: image build on github
    runs-on: windows-2019
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2

      - name: Install PowerCLI
        run: |
          Install-Module VMware.PowerCLI -Scope CurrentUser -Force
        shell: powershell

      - name: Build Image
        run:
          New-IsoImage `
            -Depots `
              "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml" `
            -SoftwareSpec `
              ".\spec.json" `
            -KernelOptions `
              "systemMediaSize=min" `
            -Destination `
              ".\VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.customized.iso"
        shell: powershell

      - name: Upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: ESXi Image
          path: VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.customized.iso

New-IsoImage に与えるspec.jsonはそのまま github に入れてしまえば OK。
(パスは適時いい感じに)

{
    "base_image": {
        "version": "7.0.3-0.20.19193900"
    }
}

リポジトリのファイル配置はこんな感じに。

$ tree -a ./ -I .git # .git/ 下は非表示
./
├── .github
│   └── workflows
│       └── imagebuilder.yaml
└── spec.json

on [push] で指定しておくことで、 push をトリガーにワークフローが動き出す。

Github Actions を見守る

push 後は Github の WebUI から成り行きを見守る。
f:id:masahiroirie:20220313214427p:plain f:id:masahiroirie:20220313214514p:plain とにかく PowerCLI のインストールが一時間とやたら時間がかかる…

【小一時間経過。。。】

ワークフローが成功で完了。
f:id:masahiroirie:20220313225433p:plain Summary ページに生成されたイメージが Artifacts としてアップロードされる。
f:id:masahiroirie:20220313225510p:plain

とりあえずカスタムイメージは作れそうだけど

Github Actions 使えば Windows 環境が手元になくてもカスタムイメージ作成は可能。
オフラインバンドル形式での作成も cmdlet 差し替えればいけそう。

が、若干悩ましいのが、ホームラボユーザに需要が高そうな Community Network Driver

公式 Driver や Addon であれば公開リポジトリがあり、New-IsoImage cmdlet でダウンロードまでカバーしてくれるが、Community Network Driver は flings 上であるためリポジトリが無さげ。
zip でダウンロードして Github 上 push してしまえばいけそうではあるけど、バイナリを push するのはあまりキレイではないよなぁ…う~ん

注意

ビルドしたイメージですが、public リポジトリでコレをやると生成されたイメージも public で公開されてしまうわけで…
(ライセンス条項ちゃんと読んでないけど)イメージ再配布は色々まずいかもということで、リポジトリ公開範囲としては private リポジトリにしておいた方が無難

この辺、詳しい人いましたら情報ください。。。mm

2022/3/14 0:32 追記

Twitter で @kurokobo さんよりコメントいただきました。

なるほど…これは効果ありそう。

修正

Install-ModuleVMware.ImageBuilder モジュールにするだけ。

name: imagebuilder
on: [push]
jobs:
  imagebuild:
    name: image build on github
    runs-on: windows-2019
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2

      - name: Install PowerCLI
        run: |
          Install-Module VMware.ImageBuilder -Scope CurrentUser -Force
        shell: powershell

      - name: Build Image
        run:
          New-IsoImage `
            -Depots `
              "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml" `
            -SoftwareSpec `
              ".\spec.json" `
            -KernelOptions `
              "systemMediaSize=min" `
            -Destination `
              ".\VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.customized.iso"
        shell: powershell

      - name: Upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: ESXi Image
          path: VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.customized.iso

結果

小一時間かかっていた PowerCLI インストールが 5 分もかからず終わった…早っ!
カスタムイメージ作成だけなので、これで十分ですね。
f:id:masahiroirie:20220314002956p:plain

ヴイエムウェア株式会社に入社しました

本日 2022 年 3 月 1 日、ヴイエムウェア株式会社に入社しました。
ええ、ついに VMware K.K. 入社です。

You は何しに VMware

Role としては TAM (Technical Account Manager)になります。
ある程度のスパンで顧客に付き、顧客環境を理解しながら VMware 製品での課題解決を支援していくというお仕事。

先日の退職エントリでも書きましたが、いよいよ得意分野にフォーカスしたいということで、VMware に集中したお仕事をやっていきます。
とはいえ、サーバ仮想化はまだしも、EUC や Security は未知数領域ですが…まぁなんとか
なんだかんだ流れてくる情報量的に Citrix Workspace や Microsoft Intune よりは知っているんじゃないかなぁ

初日を終えて

初日はほぼオリエンテーションで終ったのですが、さすがなのはフルリモートでの実施。
PC 端末までもが自宅配送で、WS1 や Web 会議を駆使してのセットアップ。
さすがだなーと思う反面、出社がない分そこまで実感が出ないような…
なので、それらしい画像とかも何もありません。

所感

初日からとにかく圧倒的な情報量と各種リソースで溺れそうですが、なんとか泳ぎこなし、会社に貢献しつつ自分を伸ばしていきたいと思います。

関係各所の皆様は引き続きよろしくお願いいたしますmm

ところで

コミュニティのプロフィールとかで VMUG 所属っぽく書いていましたが、さすがに社員となると User Group では無いよなぁ…とは言え何らかの関わりは続けていきたいのですが、何か良い肩書きは無いものか。

vExpert 2022 受賞で振り返る 2021 Activity

昨日の記事と時系列が若干前後しますが…
2/16 (JST で 2/17 早朝) に vExpert 2022 の発表がありました。
blogs.vmware.com
そして今回も引き続き vExpert 2022 を受賞することができました!
ありがとうございます!
f:id:masahiroirie:20220219123816p:plain f:id:masahiroirie:20220218221302p:plain

2021 の Activity

ブログ

昨年書いた記事は 13 本。一応全部 VMware 絡みの内容でほぼ月一ペース。
投稿頻度に偏りはありますが、まぁ最低限このくらいのペースは維持したい。

というか、投稿増えない割に homelab 機器はどんどん増えているというのは…
そっちで還元しないと無駄使いで終わってしまいそうな😅 vhoge.hateblo.jp

Advent Calendar 2021 にも参加。
どこかで話ありましたが、ケツに火を付けられ目標を定めないとダラダラとやってしまうところはあるのかもなぁ。
adventar.org

登壇

スピーカーとしてのイベント参加は 2回。

  • Japan VMUG - 2021, June
  • VMware DevOps Meetup #11

www.youtube.com vmware.connpass.com

こちらもこのくらいのペースではやっていきたいなと思いつつ、一つチャレンジとしてJapan VMUG や DevOps Meetup 以外の場でも登壇してみたいなと。

ニフクラミートアップとかで扱う内容が近く駆け込み LT もあるので機会を伺いつつ、VMware 以外のトピックも扱うようなもう少し広めのテーマなイベントでなにか放り込めればなぁ。
(と言いつつも VMware 絡みでも deep なネタ持ち上げがちなので、場所に応じたネタは考えないと)

発表資料は以下に。上記の通りで、2021 は 2件追加。
speakerdeck.com

2022 もこのくらいのペースは維持しつつ

お仕事や他のこともあるのであまり傾倒しすぎるのも本末転倒ですが、前述の通り如何せん homelab 機器だけが増えてしまうのももったいない話なので、潤沢になったリソースで何か新しいネタを探しつつ、もう少し動ければと思う次第でした。

株式会社インターネットイニシアティブを退職します(しました)

2022/2/28 付で株式会社インターネットイニシアティブを退職いたします。
本日 2022/2/18 はまだ最終出社日ではありますが、機器や社員証も全て返却済なので実質本日で退職。
関係各所の皆様には大変お世話になりました。ありがとうございました。

ご時世がら飲み会は出来ず、最終日も半分以上はリモート越しの挨拶で対面はあまり出来ず寂しいところはありましたが、それでも一通りはお話でき、まぁ良かったかなと。

前回同様、そんなにセンセーショナルな話題はありません。
しかし、まさかこのブログやっているウチに 2 度目の退職ネタを書くことになるとは。。。
f:id:masahiroirie:20220218211312j:plain f:id:masahiroirie:20220218211331j:plain

ジャック・マーが語る年代別の過ごし方

アリババ創業者ジャック・マーの言葉。自分がかなり共感できる好きな言葉。
(今回の退職理由につながる前フリ)

20までは、良い学生であれ
30までは、小さい会社に入り、良いボスをフォローせよ
30からは、自分のためにやりたいことはすべてやれ
40からは、得意なことにフォーカスせよ
50からは、若者のために働け、若者は自分より良くできる
60からは、ビーチで孫と過ごせ

退職理由

一言で言うと「やりたいことにフォーカスしたい」になります。

元々はサーバ基盤・クラウドを得意領域として今までの培ってきたものを発揮しつつ、今後も伸ばしていきたいとコンサルロールとして入社し、当初はその領域でお仕事していました。
ところが、コロナ禍の影響もあってか2021年に入ってからはそういった案件に携われる機会がほとんど無くなってしまい、組織柄 NW やデジタルワークプレイス、情シス業務アウトソーシングなど幅広くやっていることもあって、自分が進みたい方向と実際にアサインされる案件に齟齬がでてきたというところが大きな理由です。
(リモートワークの影響で NW の見直しやデジタルワークプレイスの優先度が高まり、サーバ系が後回しになっている印象)

そこで上記のジャック・マーの言葉。
一応まだ 30 代ですが、やりたいこと得意なことによりフォーカスできる環境に移ろうということで一念発起した感じになります。

IIJに入社してどうだったか

まず、フィールド SE、エンジニアとほぼコンサル経験ゼロなところからもコンサルとして拾って貰えたことにはとても感謝しています。
また、パブリッククラウドの実物を触れたり、大規模な WAN や SASE/ZTNA など、ネットワーク回りの話に色々携われたのは大きな経験でした。

思うところはありますが、コンサルというロールで仕事をできたことは間違いなく大事なキャリアを積むことができました。

あと、昨今の IT 業界だと人の流動が激しいですが、それでも個人的に在籍期間は少し短かくなってしまったかなという印象。
そこは残念…というか、拾って貰った所属長には申し訳ないところ…

今後の予定

次のお仕事は決まっており、 3/1 から新天地となります。
その話はまた後日。。。

というわけで 10 日程はお休みになります。ご時世的に不穏なところはありますが、せっかく冬季の休暇なので雪山遠征でもしようかなと…

余談:vExpert の発表

ところで vExpert 2022 のアナウンス、当初の予定だと 2/18 となっていたので、時差的に結果のメールは確認できないのではと思っていましたが、予定よりも前倒しされ、2/16 (JST:2/17 早朝)に無事拝むことができました。
時系列前後しますが、こっちもブログに起こしておきたい…


application close は延びてバタバタした割には発表は前倒しと幸運だったなぁと。