投稿

ESXi に DNS サーバを何個まで登録できるか

イメージ
ESXi の DNS サーバの最大登録可能数を調べる vSphere 構築経験のある多くの方は2つまでとお答えになるかもしれない。 なぜならば、DCUI や vSphere Client から設定した場合、Primary DNS と Alternative DNS の2つまでしか設定できないからだ。 GUI から設定する場合、苦し紛れにカンマ区切りなどで3つ以上登録しようと試みても無駄である。GUI でエラーになってはじかれるだけだ。 ならば、CLI はどうか。 /etc/resolv.conf に手動で追記していくだけであればストレージの許す限り記載することはできるだろうが、 この方法は当然ながら標準的な手順ではない。 esxcli を利用して DNS を登録することも可能である。具体的には以下のコマンドを利用する esxcli network ip dns server add -s <ip_address> 上記のコマンドを利用してどこまで登録可能かを試してみた。 具体的には以下のコマンドを用いて255個のDNSサーバを追加してみた for i in `seq 1 255`; do esxcli network ip dns server add -s 192.0.2.$i ;done なお、本ブログで記載される IP Address は例示用に予約されたものであり、RFC5737 から拝借している。 結果として、少々時間はかかるが登録自体は問題なく成功した。 実環境においてこれほど多くの DNS の登録をすることはあり得ないので、事実上制限なしと考えられる。 なお、参考のために他ベンダーも含める形で DNS 登録数の最大数を調べたところ、2 か 3 にしているところが多いようだ。 DNS を大量に登録した際の動作を調べる DNS クエリのタイムアウト時間:5 秒則 ESXi の DNS Client は最近の systemd-resolved などではなく、レガシーなソフトウェアであるため、 resolv.conf の上から順番に問い合わせていき、問合せ先の DNS に到達できなかった場合に次の DNS サーバに問い合わせる動作になる。 次の DNS サーバに問い合わせる条件はあくまでも到達できなかった場合であり、到達できた...

ESXiの特定のログで特定のメッセージが出た際にvCSAからメールが送信されるように仕込む

前回 と 前々回 の記事は標題の内容が実施したかったための準備だった。 本記事で紹介するスクリプトを理解するためには前提になるので、まだ読んでいない方は一読してほしい。 この記事では、ESXi の任意のログファイルに任意の文字列が記録された際に、vCSA 経由で任意のメッセージを送信するための雛形となるスクリプトを紹介する。 雛形スクリプト 以下のスクリプト (monitorLogFileAndInvokeAction.sh) を作成した #!/bin/sh logfile="/var/run/log/vmkernel.log" message="hogehogehoge" vcsa_ipaddress="<vcsa_ip>" id_rsa_filepath="<path_to_privatekey>" sender_address="<address sent from>" rcpt_address=<address sent to> action(){    ssh -i $id_rsa_filepath  $vcsa_ipaddress "echo $1 | sendmail -v -f $rcpt_address $sender_address" } monitorLogFileAndInvokeAction () { tail -fn0 $logfile | \    while read line; do       echo "$line" | grep "$message"       if [ $? = 0 ]       then           action "`date`"       fi    done } monitorLogFileAndInvokeAction  太字に部分は、環境や目的に合わせて適切な値を代入する必要がある。 今回の例では、監視するログファイルとして vmkernel.log を指定し、トリガーとなるメッセージとして h...

ESXiからvCSAに公開鍵認証でSSH接続する

 都合により、ESXi から vCSA に対して簡易に(スクリプト化可能な方法で)SSH接続をしたくなったので準備手順として、公開鍵認証の設定を記録する。 参考記事 今回の記事内容はおおむね以下の記事を参考にしている。 https://vhoge.hateblo.jp/entry/2021/01/04/231350 上記記事との差異の要点としては、通常は SSH Client 側で作成する公開鍵をサーバ側(vCSA 側)で作成している点である。 この理由は簡単で、ESXi には公開鍵作成に必要な ssh-keygen コマンドがないからである。 したがって、 vCSA 側で作成した秘密鍵を ESXi にコピーする必要がある 細かいところは上記記事を見ていただくとして、今回は端的な手順とコマンドの記載だけとする。 接続用ユーザを作る 今回は root ユーザでログインするつもりなので作ってない。 公開鍵を作成して設置 vCSAにて以下のコマンドを実行して公開鍵と秘密鍵を生成する #  ssh-keygen -t rsa -b 4096 公開鍵の設置については、作成された公開鍵( .pub のほう)を .ssh/authorized_keys に追記すればよい。 上記記事に従うなら、ssh-copy-id コマンドでも実施可能である。 とはいえ、コピー先が自分自身なので、 以下のようにすればよい。 # ssh-copy-id -i /root/.ssh/id_rsa.pub localhost ※自分自身へのSSHだがパスワードは要求されるので入力する 秘密鍵を設置 これは、参考記事にはないステップである。 vCSA で作成した秘密鍵(.pub がないほう)を ESXi の任意のディレクトリにコピーすればよい。 ただし、再起動でなくなってしまう RAMDISK に配置するのはイケてないので、Local Datastore か Scratch partition にコピーしよう。 接続テスト ESXiに接続して、 ssh コマンドで -i で秘密鍵を指定して vCSA に接続すればよい。 認証なしでログインできれば成功である。 # ssh -i id_rsa <vcsa_ipaddress> パスワード認証無効化など諸々 参考記事ではパスワー...

vCSA からメールを送信する

都合により vCSA から任意の Email をとばしたくなったので方法を調べてみた。 環境情報 まず前提かつ必要となる条件は以下である。 必須条件: vCSA が正常に動作していること 宛先ドメインを解決可能な DNS が設定されていること(ラボ用と別でよい) vCSA が DNS および SMTP サーバと適切に疎通可能であること 任意条件: vSphere Client から SMTP サーバ IP を設定していること 意外に思うかもしれないが、vSphere Client から設定できる SMTP Server は必須ではないと判断している。 今回の環境ではメールサーバ都合で実際にメール送信が確認できなかったので、確証ではないがおそらく SMTP サーバの指定は必要ない。 一方で、DNS で宛先ドメインの MX レコードを引けることは必須であると思われる。 SMTP サーバの設定をした場合は、DNS で検索した MX レコードではなく設定した SMTP サーバが利用される。 ならば、DNS で宛先ドメインを解決できなくてもいいのではないか、と考えたくなるが、DNS で宛先ドメインを検索できない場合は Name Server Timeout になり、メールの送信が完了しない。 今回の環境では MX レコードで検索できる SMTP サーバが、セキュリティ都合で利用できなかったため、 vSphere Client で SMTP サーバを設定することで、MX レコードのメールサーバではなく、vSphere Client で設定した SMTP サーバに転送するようにしている。 DNSについての補足 DNS で宛先ドメインが検索できることが必須であると記載したが、この DNS サーバは仮想環境用の DNS サーバと異なっていてもよい。 言い換えると、仮想環境で VCSA が必要とする名前解決(ESXi や AD など)を提供する DNS サーバと、今回の目的であるメール送信の宛先ドメイン検索用の DNS サーバを2台設定しても問題ないという意味である。 DNS Client の挙動に多少の造詣のある人なら違和感を覚えるかもしれない。 通常、resolv.conf に DNS サーバが複数記載されている場合でも、名前解決で利用されるDNS は resolv.conf の一...

vCenter に定義されているアラーム定義のダンプを取得する方法

  アラーム定義情報を一括で取得したい!   VxRailのログを見ていると、ときどき突如としてalarm-xx が現れることがあります。     alam-xxはvCenterで定義されている個々のアラームに対応するMoref IDなので、当然ながらそれに対応するアラーム定義があるのですが、残念ながらMoref IDは環境によって異なりますし、(あるかもしれませんが)ID採番のRuleなどもなさそうなのでMorefIDだけからアラームの詳細を予測することができません。       そのため、何かが起きていることはわかるのですが、「何が起きているの!!??」とちょっとドキドキしてしまいます。 そういう時、「全部のAlarmのMorefIDと対応する情報が一括で取得できたらいいのに・・・」と常々思っていました。       また、運用管理者の観点からも現在のシステムに定義されているアラームの一覧やダンプを取得したい!ということはあるかと思います。     しかしながら、WebClientや標準のコマンドとしてアラーム定義の細かい情報を一括でExportしたりする方法は見当たりませんでした。 アラーム名と定義場所は出せるかも知れませんが細かいトリガーやアクションの情報となるとWebClientから一つ一つコピー&ペーストするような作業になってしまうのでとてもやる気になりません。     ということで、今回はvSphere SDK for pythonを利用して、VCSA CLI上で一括でアラーム定義情報をDumpスクリプトを作成しましたので、使用方法と合わせて共有させていただきます。     開発・検証環境   今回のスクリプトは以下の環境で動作検証をしました。 多少Versionが違っても動くとは思います。 もし動かなかったらコメント等で教えていただければ、時間があるときに修正します。 もちろんご自由にスクリプトを書き換えていただいてもかまいません。   VxRail™ Appliance 4.5.229 VMware vCenter Server Virtual Appliance (vCS...

【VxRail】 新・既存環境からvSAN 環境へのMigration【Flings】【Cross vCenter Workload Migration Utility】

イメージ
  本記事では、VMware Flingsで提供される無償のCross vCenter vMotionツールについて紹介します。 前回までの記事は以下です。            既存環境からvSAN 環境へのMigration:その① 【イントロダクション】 既存環境からvSAN 環境へのMigration:その②  【PowerCLIのInstall】 既存環境からvSAN 環境へのMigration:その③ 【既存環境からのvMotion】 【VxRail】 続・既存環境からvSAN 環境へのMigration【実環境向けのコマンド考察】     本シリーズの久々の投稿となります。 本シリーズは、Non-Shared SSO環境(≒ ELMなし)のvCenter間でのvMotionについて、PowerCLIを利用した方法を解説してきました。 今回はPowerCLIから離れて、より簡単に同じことが実施できるツールについて紹介させていただきます。   VMware Flingsとは? 今回紹介するツールはVMware Flingsで公開されてます。       Flings | VMware Flings VMware Flingsとは何なのか?という疑問に思う方もいらっしゃると思います。 VMware Flingsのサイトにアクセスするとトップに以下の説明(?)がありました。       Flings are apps and tools built by our engineers and community that are intended to be explored.   つまり、vmwareの有志のエンジニアが作成している各種便利ツールをやアプリを公開している場です。(だと理解してます) ここで公開されているツールは、基本的にvmware製品サポートには含まれませんが、便利だと思います。(需要があれば)   Cross vCenter Workload Migration Utility 今回ご紹介するツー...