vCenter 7.0でActive Directory over LDAPSを構成する
久しぶりにブログを更新してみようと思います。
vCenter 7.0からWindows統合認証が非推奨となり、LDAP/LDAPSかAD FSが推奨となりました。 Windows統合認証はWindows版vCenterがあった時代は、OSがWindowsであったため構成上問題はありませんでしたが、現在はPhoton OSのアプライアンス版しか存在しないため、Linux環境でWindowsの認証を利用必要があり複雑性が増していることから廃止予定となったようです。
ただし、ユーザ認証の設定について既存のADを利用する場合など考慮事項も多いため、設定変更を行う手順について確認を行ってみました。
構成
Active DirectoryのLDAPSの設定
Active Directoryがすでに設定済みの環境を用意します。 Active Directoryは初期設定ではLDAPSに利用される689ポートが開いていますが、証明書が登録されていないため、すぐに利用することはできません。
LDAPSを有効化させる方法は2つの方法があります。
今回はエンタープライズCAを利用した方法を確認してみようと思います。
エンタープライズCAのインストール
Windows Server 2019 (AD CS)でエンタープライズCAのインストールを行っていきます。
- Windows Server 2019 (AD CS)をドメイン参加させておきます。
- サーバーマネージャのダッシュボードから役割と機能の追加をクリックします。
- インストールの種類で役割ベースまたは機能ベースのインストールを選択し、次へをクリックします。
- サーバーの役割で、Active Directory証明書サービスを選択し、機能の追加を選択します。
- Active Directory証明書サービスの役割サービスで証明機関を選択し、次へをクリックします。
- インストールをクリックし、インストールを行います。
- 対象のサーバーに Active Directory 証明書サービスを構成するをクリックします。
- 資格情報にて、ドメインの管理者アカウントが入力されていることを確認し、次へをクリックします。
- 役割サービスにて、認証機関を選択し、次へをクリックします。
- セットアップの種類にて、エンタープライズ CAを選択し、次へをクリックします。
- CAの種類にて、ルートCAを選択し、次へをクリックします。
- 秘密キーにて、新しい秘密キーを作成するを選択し、次へをクリックします。
- CAの暗号化にて、RSA#Microsoft Software Key Strong Provider、 キー長に2048、SHA256を選択し、次へをクリックします。
- CAの名前にて、CAの名前を指定し、次へをクリックします。
- 有効期間にて、CA証明書の有効期間の長さを入力し、次へをクリックします。
- CAデータベースにて、証明書データベースを入力し、次へをクリックします。
- 確認にて、設定値を確認し、構成をクリックします。
- サーバーマネージャのダッシュボードからツール>証明機関をクリックし、グリーンのチェックマークがついていればインストールは完了です。
ADサーバーの証明書の発行の確認
エンタープライズCAから自動的にサーバー証明書が発行されることを確認します。
タスクスケジューラでサーバー起動時か8時間ごとに自動的に処理が行われているため、サーバーの再起動かタスクスケジューラのWindows>CertificateServiceClient>SystemTaskを実行します。
- ファイル名を指定して実行に
mmc
と入力し、コンソールを起動します。 - ファイルからスナップインの追加と削除をクリックします。
- スナップインの追加と削除にて、証明書を選択し、追加をクリックします。
- コンピューターアカウントを選択し、完了をクリックします。
- そのままで完了をクリックします。
- 選択されたスナップインに証明書が追加されたことを確認し、OKをクリックします。
- 個人>証明書をクリックし、サーバー証明書の発行を確認します。
ルート証明書のダウンロード
ルート証明書の取得方法はいくつかあります。
- エンタープライズCAの証明機関から取得
- ADサーバーのコンソールから取得
- openssl s_clientコマンドによる取得
openssl s_clientコマンドによる取得した際に、サーバー証明書は取得できますが、 ルート証明書が自己署名されているため、ルート証明書の取得ができません。
そのため、エンタープライズCAからの証明機関から取得してみます。
- サーバーマネージャのダッシュボードからツール>証明機関をクリックします。
- グリーンのチェックマークがついているアイコンを右クリックし、プロパティをクリックします。
- 証明書の表示をクリックします。
- 証明書にて、詳細タブをクリックし、ファイルにコピーをクリックします。
- 証明書のエクスポートウィザードにて、次へをクリックします。
- Base-64 encoded X.509 (.CER)を選択します。
- エクスポートするファイルにて、ファイル名に
ca.cer
などを入力し、次へをクリックします。 - 完了をクリックします。
- エクスポートした証明書を手元の環境にダウンロードします。
vCenterのIDソースの設定
最後にvCenterへLDAPSのユーザ認証の設定を追加します。
- vSphere Clientにadministrator@vsphere.localユーザでログインします。
- 管理>Single Sign-On>設定をクリックし、IDプロバイダ>IDソースで追加をクリックします。
- IDソースの追加にて、IDソースタイプにLDAPを介したActive Directoryを選択し、以下のような値を入力します。
- IDソース名: Active Directory over LDAPS
- ユーザーのベース識別名: cn=Users,dc=home,dc=lab
- グループのベース識別名: cn=Users,dc=home,dc=lab
- ドメイン名: home.lab
- ユーザー名: administrator@home.lab
- プライマリ サーバ URL: ldaps://windows2019-1.home.lab:636
- 証明書(LDAPSの場合)の参照をクリックし、先の手順でダウンロードしたルート証明書を登録します。
- 保存をクリックします。
- 以下のように設定が保存されれば、LDAPSのIDソースの追加が完了です。
- 一度vSphere Clientからログアウトし、ADユーザでログインできることを確認します。
エラーが発生するケースについて
保存をクリックした際に、設定に問題がある場合はエラーが発生することがあります。
LDAPを介したActive Directoryの課題について
LDAPを介したActive Directoryに設定を移行した場合、以下の課題があるように見えます。
- LDAPで登録し、LDAPSに切り替えたい場合、一度IDソースとして削除し再登録する必要がある
- LDAPSで登録し、証明書の有効期限が切れた場合、一度IDソースを削除し再登録する必要がある
- サーバー証明書を証明書と登録した場合、エンタープライズCAのデフォルト設定で1年間に1回サーバー証明書が更新されるめ、再登録が必要
LDAPSの証明書の有効期限が切れた場合に、新しい証明書を追加で登録できないため、 IDソースを切り替える際にユーザ認証ができないという課題があり、この辺りの考慮が必要になってきそうです。 vCenterのCLIツールでIDソースの再登録を自動化するという手もあるかもしれません。
参考情報
育児を効率化するために自宅をスマートホーム化してみた
この記事はFJCTアドベントカレンダー2018 5日目の記事です。FJCTでエンジニアをしている id:hidemium です。
本記事は、普段の仕事ではなく、育児についての話をしてみようと思います。
前の記事で、育休を1ヶ月取得した時の内容を書きましたが、3か月近くが経過したので変化してきたことや、育児を効率化するために行った自宅のスマートホーム化についてより詳細に書いてみようと思います。
概要
- 利用しているアプリ
- 買ってよかったもの
- スマートホーム化について
利用しているアプリ
まずは、育児で利用しているアプリをいくつか紹介します。
Trello
- かんばんベースのタスク管理ツール
- 予防接種など育児に関するタスクを夫婦間で共有するために利用
- 非エンジニアの妻でも問題なく使用ができています。
- こちらは引き続き利用しています。
みてね
- 家族で写真を共有するためのアプリ
- 生後何か月の写真か自動的に分類できるため、日々の変化を振り返ることができます。
- アプリを使い慣れていない親世代にも、アプリ導入やコメント追加がシンプルで好評でした。
- こちらは引き続き利用しています。
ぴよログ
- ミルクや排泄の時間などを記録するためのアプリ
- 粉ミルクから母乳にシフトしてきたため、利用頻度は低下しました。
Amazon
- AmazonプライムとAmazonファミリー会員に登録すればおむつが15%オフで買えるため便利です。
買ってよかったもの
次に、買ってよかったものを紹介します。こちらも少し変化してきました。
メイプルウェア ホットウォッシュ
- 40度前後の温水をキープして、温水でおしりふきができるもの。
- アルコールのおしりふきと比べて、肌荒れがなく硬くなった排泄物も取れやすいのが良かったです。
- 引き続き便利に使っています。
- 出版社/メーカー: 丸栄バイオファーマ
- メディア: Baby Product
- この商品を含むブログを見る
チェンジングテーブル
- 体重が増えてきたため、さらに腰への負担を軽減してくれるのでとても助かりました。
- おむつ交換台の両サイドに収納バスケットを設置すると、おむつやベビーコットン、ごみ箱を置けるので作業効率が各段に上がります。
★スニーグラル / SNIGLAR チェンジングテーブル[イケア]IKEA(10167891)
- 出版社/メーカー: IKEA
- メディア: ホーム&キッチン
- この商品を含むブログを見る
ベビーバス
- キッチンでの沐浴からお風呂場になったため、利用しなくなりました。
Google Home
- 子供を抱っこする回数が増え、家電の操作がしづらくなっため利用しています。
- こちらについて、以下で詳しく書いています。
食洗器
- 育児する側も食事をとる必要があるので、負荷軽減のため必須
乾燥機付き洗濯機
- 育児する側と合わせて子供の洗濯物が増えるため、負荷軽減のため必須
スマートホーム化について
最近ではスマートホームの機器や実例はたくさん出てきていますが、Goolge HomeとNature Remo、SwtichBotを取り入れてみました。
自宅のネットワーク構成は以下にようになっており、Edgerouteを使ってリビング用とHome Lab用にVLANを分けています。 リビング用のネットワークには無線LANのアクセスポイントがあり、こちらにGoolge Homeなどの機器が接続されています。
Google Homeの音声入力を使って家電を連携するためにはNature Remo、SwtichBotが必要となります。
Nature RemoはWifi機能のついた赤外線通信機能を持ったデバイスで、Wifiを通じて赤外線で操作できる家電のコントロールをすることができます。
また、SwtichBotは物理スイッチを押すための小型ロボットになり、こちらもWifiを通じて物理スイッチのオンオフができます。物理スイッチのオンができるものはいくつかありますが、オフができるものは現在のところ、これしかないかもしれません。SwtichBot Hubを使うとWifi機能が利用できます。SwtichBot Hub Plusは赤外線通信機能が搭載されましたが、一部の家電で操作ができなかったため、今回は物理スイッチの利用のみとなります。
Google Homeにはスマート家電と連携できる機能が増えて来ていますが、よりカスタマイズをするためにIFTTTを利用しています。 IFTTTはWebサービス同士を連携できるサービスになり、Google Homeの音声入力をしたいフレーズをトリガーに対象の家電の操作を実行できるように連携することができます。
全体として、以下のような流れとなります。
例えば、照明をつける場合、IFTTTに以下のような設定を行います。
trigger service | simple phrase | action service | action |
---|---|---|---|
Google Assistant | おはよう | Nature Remo | 照明 - オン |
エアコン、TV、シーリングライトなどの各家電の操作ごとにこのような設定を追加していきます。
また、以下のようにワンフレーズだけで複数の家電を操作するように設定することもでき、同時操作できるようになるとさらに威力を発揮します。
trigger service | simple phrase | action service | action |
---|---|---|---|
Google Assistant | おはよう | Nature Remo | 照明 - オン |
Google Assistant | おはよう | Nature Remo | エアコン - オン |
このような設定をすることで、子供を抱っこして手がふさがった状態でも家電の簡単な操作を行うことができるようになりました。
家電の操作以外でも、Spotifyと連携して音楽を聞いたり、料理中のタイマーとしても利用しています。
照明関連で困ったこと
ただし、すべて快適になったわけではなく、いくつか課題はありました。
まず夜間にGoogle Homeに音声入力するのが難しいという問題があります。はっきりしたフレーズではないと、Google Homeに聞き取ってもらえないため、何度か言い直さないといけないという問題がありました。 また、Google Homeの操作対象にしているリビングの電気自体が明るいため、睡眠を妨害してしまうということがあります。
そこで、Google Homeによる操作ではなく、センサーが付いたライトをいくつか利用しています。
人感センサーライト
- 廊下やトイレ、洗面所など利用するタイミングでしか電気をつけない個所と相性が良く利用しています。
アイリスオーヤマ LED電球 人感センサー付 口金直径26mm 60W形相当 電球色 LDR8L-H-S6
- 出版社/メーカー: アイリスオーヤマ(IRIS OHYAMA)
- メディア: ホーム&キッチン
- この商品を含むブログ (2件) を見る
明暗センサーライト
- 部屋が暗くなると自動点灯するため、夜間に抱っこする必要になった時に便利です。
ベッドサイドランプ
- 夜中に子供の確認を利用するために利用しています。
- ほのかな明かりであり、オンオフがタッチセンサーのため音がしないため、睡眠を妨害しないので便利です。
最後に
スマートホーム化や買ってよかったものについて紹介しました。
育児は、お風呂に入れたり、泣いたときに抱っこをするなど大部分の作業は効率化が難しいところもあり、スマートホーム化を行ったかといって劇的に楽になるわけではありませんが、ちょっとして作業を楽にはできると思っています。このような取り組みをすこしずつ取り入れ、育児を少し楽にしつつ、子供と触れ合える時間をより多くできるようにしたいと思っています。
明日は @SugiC さんの Alexa でおうちはっくの話です。
男性エンジニアが育休を取得してみた所感と育児グッズ紹介
育休を1ヶ月取得しており、ちょうど1か月が経過したので、エンジニアの視点で感じたことを記録しておこうと思います。毎年便利になってくると思うので、2018年はこのような感じだったなと振り返れば面白いかもしれないです。
概要
- 利用しているサービス
- 買ってよかったもの
- 1日の流れと運用ナレッジ
- 書籍
- 育休のメリット
- 育児をして気が付いたこと
利用しているサービス
Trello
- かんばんベースのタスク管理ツール
- 1か月検診やベビー用品の購入リストなど育児に関するタスクを夫婦間で共有するために利用
- 非エンジニアの妻でも問題なく使用ができている。
- かんばんやアジャイル開発に詳しいほうが主導して利用すると運用しやすいと思う。
- 育児以外にもTrelloを利用しており、このツールがなかったら、効率的に家族内のタスク管理はできなかったと思う。
みてね
- 家族で写真を共有するためのアプリ
- Google フォトと悩みましたが、幼児期や家族内のでの共有に特化しており、生後何か月か自動的に分類できるので気軽に使えるために採用
- アプリを使い慣れていない親世代にも、アプリ導入やコメント追加がシンプルで好評でした。
ぴよログ
- ミルクや排泄の時間などを記録するためのアプリ
- 育休中のパパとママ両方から更新が必要だったため採用
- まとめページで記録をグラフ化してくれるため便利
- 他のアプリは一人でしか更新ができないものも多く、育児を共同でするという考えがなさそうで残念でした。
パパっと育児
- ミルクや排泄の時間などを記録するためのアプリ
- 共同編集ができなさそうだったので見送りました。
- 泣き声から赤ちゃんが欲していることを推測してれる機能は面白かったが、精度があまり高くない。
- 赤ちゃんが欲していることを推測するというのは、子育てにおいて結構重要だが、音声から推測するというアプローチは精度が高くするのが難しいそう。
- 推測精度が高いものがあれば今すぐにでも欲しいが、子育てしている親ですら泣き声や動きから推測が難しいので、別のアプローチ方法のほうがいいかもしれない。
コープデリ
- 宅配サービス
- 複数の宅配サービスと比較して、商品数の多さと子育て割引きがあることから採用
- アプリのUIは独特すぎて慣れるまで時間がかかる。
- 定期購入はWebからしか追加できないので、アプリで完結できるようにしてほしい。
- カット済みの食材や調味料がセットになったミールキットは、短時間で料理が出来るので便利だった。
Amazon
- AmazonプライムとAmazonファミリー会員に登録すればおむつが15%オフで買えるため便利
メルカリ
- ベビー用品を格安で入手するために利用
- べビー用品は利用する期間が限られているため、直ぐに不要になるものもあるためフリマアプリと相性がいいと思う。
- 家にある不用品を出品して、ベビー用品に変換していく。
YouTube
- 抱っこや沐浴の方法などの動画があり、両親学級だけで不足している知識を補うために利用
- わらべ歌も豊富なので、今後利用していこうと思う。
買ってよかったもの
メイプルウェア ホットウォッシュ
- 40度前後の温水をキープして、温水でおしりふきができるもの。
- アルコールのおしりふきと比べて、肌荒れがなく硬くなった排泄物も取れやすいのが良かった。
- これがなかったら、快適なおむつ交換ができなかったと思う。
- ミルクを一時的に保温しておくのにも便利だった。
- 出版社/メーカー: 丸栄バイオファーマ
- メディア: Baby Product
- この商品を含むブログを見る
チェンジングテーブル
- おむつ交換台があると、腰への負担を軽減してくれるのでとても助かった。
- 届いた木材の加工精度が低く、一部木材を削って組み立てざるを得なかったが、安いので問題はないレベルだった。
- おむつ交換台の両サイドに収納バスケットを設置すると、おむつやベビーコットン、ごみ箱を置けるので作業効率が各段に上がった。
- 台の下に格納スペースもあるので、ベビー用品を格納できるので便利だった。
★スニーグラル / SNIGLAR チェンジングテーブル[イケア]IKEA(10167891)
- 出版社/メーカー: IKEA
- メディア: ホーム&キッチン
- この商品を含むブログを見る
足元灯
- 明暗センサーがついており、部屋が暗くなると自動点灯するため、夜間の授乳時に電気をつけなくても良いので便利。
- Google Homeに音声で伝えるより楽に電気をつけることができる。
トッポンチーノ
- 抱っこに慣れていない初心者でも簡単に赤ちゃんを抱っこできる優れもの。
- 寝かしつけた後に、赤ちゃんを起こさずに移動できるためかなりの負荷軽減になった。
はじめてのおふとん トッポンチーノ オーガニックコットンカバー 赤ちゃんおくるみ オリジナル 洗える
- 出版社/メーカー: ラタンハウス
- メディア: Baby Product
- この商品を含むブログを見る
ベビーバス
- 空気で膨らませるタイプのため、キッチンのシンクにちょうど入れることができ、沐浴する際に腰に負担がかからなくて良かった。
リッチェル Richell ふかふかベビーバスW グリーン 新生児~3カ月頃まで
- 出版社/メーカー: リッチェル
- メディア: Baby Product
- この商品を含むブログを見る
スリング
- 新生児でまだ軽い場合だとベビーカーに比べて移動しやすく、近所を散歩するだけであれば便利。
- 横抱きができるため、首が座っていない状態でも利用することができる。
Baba Slings ババスリング 【日本正規品保証付】【正規代理店】 抱っこひも/ベビースリング BBS006 シルバー
- 出版社/メーカー: Baba Slings
- 発売日: 2017/04/20
- メディア: Baby Product
- この商品を含むブログを見る
Google Home
- 赤ちゃんを抱っこしていると家電の操作がしづらくなるため利用
- 家電操作のため、NatureRemoとSwtichBotを同時に利用
- 授乳のため夜中にGoogle Homeを使うとふらふらして音声がはっきりせず誤動作が多くなるため、CMのようにはならない。
- 少し便利になるぐらいなのであまり期待はしないほうがいい。
食洗器
- 育児する側も食事をとる必要があるので、負荷軽減のため必須
乾燥機付き洗濯機
- 育児する側と合わせて赤ちゃんの洗濯物が増えるため、負荷軽減のため必須
1日の流れと運用ナレッジ
新生児の運用作業は、赤ちゃんが泣いてからその欲求を満たす作業となります。基本的には、泣き声の原因分析とおむつ交換と授乳と沐浴の4つになります。授乳はだいたい3時間毎に発生するが、おむつ交換を含めると毎時間何かしらのイベントは発生します。イベントの発生頻度を抑えることは難しいので、各作業を短縮する方向になります。
泣き声の原因分析
- 赤ちゃんが泣いた原因を調べるフェーズ
- おむつのおしっこお知らせサインの有無とぴよログの記録から前回の授乳時間を確認する。
- 黄昏泣きなど泣き声の原因が不明な場合もあり、一番時間がかかる場合もある。
- お腹が減ったか、おむつを交換したいか、抱っこしてほしいだけかの判別が難しい場合があり、赤ちゃんが欲していることを正確に推測してれるサービスがあると今直ぐにでも欲しい。
おむつ交換
- チェンジングテーブルの周囲に収納ボックスを配置して、収納ボックスに必要なものを配置しておきおむつ交換を行う。
- パンパースは他のメーカーに比べておしっこお知らせサインが良く見えて、少し大きいつくりなので履かせやすいので便利だった。
授乳
- ぴよログの記録を確認しつつ、2時間30分が経過したあたりからミルクの準備を始める。
- 哺乳瓶は最初2個からスタートしたが、哺乳瓶を洗う量が増えてもまとめ洗いを行い頻度を低くしたほうが効率がいいため、4個で運用している。
- 粉ミルクは、キューブタイプのほほえみらくらくキューブを利用しており、40ml単位でミルクを用意できるので便利。(他のメーカーは100ml単位で粉ミルクが分けられているので調整しにくい)
- 夜間の授乳時には、足元灯が光っており、部屋の電気をつける時と比べて光の強度が低いため、睡眠への影響を軽減できる
沐浴
- キッチンのシンクに、ビニールタイプのベビーバスを入れ、腰の負担を軽減しつつ沐浴を行う。
書籍
育児の書籍は数多くあるが、基本的な書籍を数冊購入し、基本的な情報はその書籍で確認し、必要に応じてネットで情報収集するのがちょうど良いかと思う。(もちろん、医師や助産師からのアドバイスは真摯に聞いた上で)

- 作者: 土屋恵司
- 出版社/メーカー: 学研プラス
- 発売日: 2017/02/28
- メディア: 単行本
- この商品を含むブログを見る
育休のメリット
育休を通して以下のようなメリットがありました。
- 新生児期は赤ちゃんが日々変化してくため、間近で成長を見ることができること
- 夫婦間で育児について考える時間をたくさん取ることができる。
- 育児中のトラブルを夫婦で対応することで、問題解決がスムーズにでき、夫婦間の信頼が向上する。(チーム開発と似ている)
- 育児に関するオペレーションについて技量が向上するので、妻のサポートに入りやすくなる。
育児をして気が付いたこと
育児をしてして気が付いたこととしては以下のようなものがありました。
- 3時間ごとに授乳が必要なため、遠出をするためには街中の授乳スペースが必要であること
- 遠出をした場合に、ベビーカー置き場があるととてもありがたいこと
- ベビーカーで移動する場合、街中の凹凸が走行にかなり影響すること
最後に
育休を取得したことで、育児へフルタイムで参加でき、子供と触れ合える時間をとることができ貴重な経験ができました。ベビー用品は、BabyTechという言葉が出てきたように、医学、化学、機械、情報など様々な分野の成果が反映されており、今後もどんどん便利になっていってほしいです。
VMware WorkstationにvSphere 6.5/Virtual SAN 6.5を構築する
この記事は NIFTY Advent Calendar 2016の 21 日目の記事です。
昨日は@licht110さんのserverspec+ansible+vagrant-vsphereでやるテスト駆動サーバー運用という記事でした。
ハイパーコンバージドインフラストラクチャが注目されていますが、VMwareでは、x86サーバを複数台束ねて仮想的なストレージを構築できるVirtual SANという機能を提供しています。
ただし、Virtual SANを試すためには、最低3台のホストを用意する必要があり、検証環境を用意するのも敷居が高くなっています。
今回は、自宅でもVirtual SANを試せるように、VMware Workstation上にオールフラッシュのVirtual SAN 6.5を構築する方法を紹介します。
構成
- vCenter 6.5 (2vCPU、10GB MEM)
- ESXi6.5 (Nested) (2vCPU、6GB MEM) x 4
- Virtual SAN 6.5
- VMware Workstation 11.1.4 *1
- SSD (PC側)
インストール
仮想ネットワークの設定
Workstationの仮想ネットワーク エディタを開き、ホストオンリーのネットワーク(プライベートネットワーク)を2つ作成し、以下の用途とします。
名前 | 用途 |
---|---|
VMnet1 | Management Network、Virtual Machine Network、vMotion Network |
VMnet2 | VSAN Network |
DNSサーバの構築
vCenterのデプロイで必須となるため、まずは、DNSサーバを用意します。
vSphere Web Clinentでの操作が必要となるので、今回はWindows Server 2012 R2をWorkstationにデプロイし、機能と役割からDNSサーバをインストールします。
DNSサーバの構築方法は省略しますが、vCenterのホスト名が名前解決できるように、DNSサーバに前方参照ゾーンと、Aレコードを追加しておきます。
Nested ESXiの構築
ESXi 6.5 Virtual Appliance is now availableにて、Nested_ESXi6.5のアプライアンスが提供されており、Nested_ESXi6.5_Appliance_Template_v1.ova
というファイルをダウンロードします。
アプライアンスの構成は以下のようになっています。
- ESXi 6.5 OS
- GuestType: ESXi 6.5
- vHW 11
- 2 vCPU
- 6GB vMEM
- 2 x VMXNET vNIC
- 1 x 2GB HDD (ESXi Installation)
- 1 x 4GB SSD (for use w/VSAN, empty by default)(SSDとしてラベル済み)
- 1 x 8GB SSD (for use w/VSAN, empty by default)(SSDとしてラベル済み)
ダウンロードしたovaファイルをダブルクリックし、Workstationに追加します。
OSを起動する前に、VMの設定の変更を行います。VMの設定の変更は、VM>設定を開き、Intel VT-x/EPT または AMD-V/RVI を仮想化
の有効化と、ネットワークアダプターにVMnet1、ネットワークアダプター2にVMnet2を設定します。
VMの起動後に、DCUIにログインし、パスワードの追加(初期ではパスワードが空のため)と、Management NetworkのIPを追加します。
今回は、Virtual SANの検証をするため、Nested ESXiを4台用意します。
vCenter Server Appliance (VCSA)の構築
VCSAのisoファイル(VMware-VCSA-all-6.5.0-4602587.iso)をダウンロードし、isoファイルとしてマウントします。
マウントしたディスクのvcsa配下にVMware-vCenter-Server-Appliance-6.5.0.5100-4602587_OVF10.ova
というovaファイルがあるので、ovaファイルをダブルクリックし、Workstationに追加します。
OSを起動する前に、VCSAのVMのvmxファイルを開き、以下の内容を追記します。
guestinfo.cis.deployment.node.type = "embedded" guestinfo.cis.appliance.net.addr.family = "ipv4" guestinfo.cis.appliance.net.mode = "static" guestinfo.cis.appliance.net.pnid = "vcenter65-1.lab.local" guestinfo.cis.appliance.net.addr = "192.168.229.170" guestinfo.cis.appliance.net.prefix = "24" guestinfo.cis.appliance.net.gateway = "192.168.229.1" guestinfo.cis.appliance.net.dns.servers = "192.168.229.10" guestinfo.cis.appliance.root.passwd = "VMware1!" guestinfo.cis.appliance.ssh.enabled = "True" guestinfo.cis.deployment.autoconfig = "True" guestinfo.cis.appliance.ntp.servers = "pool.ntp.org" guestinfo.cis.vmdir.password = "VMware1!" guestinfo.cis.vmdir.site-name = "default-site" guestinfo.cis.vmdir.domain-name = "vsphere.local" guestinfo.cis.ceip_enabled = "False"
VCSAのVMを起動すると、上記の設定が自動的に追加されます。VCSAの初回起動には時間がかかるので、しばらく待ちます。
なお、DNSサーバを用意しない場合、VCSAの初回起動時に以下のエラーが出ることがあり、はまりました。
Encountered an internal error. Traceback (most recent call last): File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 2017, in main vmidentityFB.boot() File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 349, in boot self.configureSTS(self.__stsRetryCount, self.__stsRetryInterval) File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 1478, in configureSTS self.startSTSService() File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 1140, in startSTSService returnCode = self.startService(self.__sts_service_name, self.__stsRetryCount * self.__stsRetryInterval) File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 88, in startService return service_start(svc_name, wait_time) File "/usr/lib/vmware/site-packages/cis/utils.py", line 784, in service_start raise ServiceStartException(svc_name) ServiceStartException: { "resolution": null, "detail": [ { "args": [ "vmware-stsd" ], "id": "install.ciscommon.service.failstart", "localized": "An error occurred while starting service 'vmware-stsd'", "translatable": "An error occurred while starting service '%(0)s'" } ], "componentKey": null, "problemId": null } This is an unrecoverable error, please retry install. If you run into this error again, please collect a support bundle and opne a support request.
起動した後で、VCSAにログインし、VCSAにNested ESXiを追加します。ホストを追加するとこのようになります。vSphere 6.5では、以前のバージョンと比べてWeb Clinetのナビゲーションの構成が変わっています。
Virtual SANクラスタの構築
Virtual SANネットワークの設定
ESXiに2本NICが刺さっているので、vmnic0をvSwitch、vmnic1をVirtual SAN用のvDSとして構成します。
さらに、各ESXiにVirtual SAN用のVMkernel Adapterを作成し、Virtual SAN用のvDSに所属させます。
Virtual SANクラスタの有効化
Virtual SAN用クラスタのConfigure>Generalから、Configureをクリックし、Virtual SANの構成ウィザードを開きます。ストレージへのディスクの追加モードや、クラスタでデデュープおよび圧縮を有効にするオプション、クラスタのフォールトトレランスのモードがありますが、まずは初期設定のまま進みます。
次に、Virtual SAN用ネットワークの検証が行われます。
手動モードとしたので、クラスタごとに使用するディスクを確認します。4GB SSDはキャッシュ用、8GB SSDはキャパシティ用として利用します。
構成ウィザードが終わると、Virtual SANの構成が開始されるので、タスクが完了するまで少し待ちます。
ストレージポリシーの作成
Virtual SANの設定が完了したので、次はストレージポリシーを作成していきます。Virtual SANでは、ミラー数やストレイピング数などをストレージポリシーによって定義し、VMに適用することで、VMごとのサービスレベルを設定することができます。
Policies and Profiles>VM Storage Prolicies>Virtual SAN Default Storage Policyを選択します。Manage>Rule-set1: VSANから、Editをクリックし、ストレージポリシーの設定画面を開きます。
許容障害数(failures to tolerate = FTT)で、何台の物理ホスト障害に耐えらるか設定でき、今回は1
としておきます。また、Add-ruleから障害の許可方法を追加し、RAID-5/6 Erasure Coding
を選択します。イレージャコーディングを使用すると、ミラーリング (RAID 1) と同じレベルのデータ保護が可能であるのに加えて、使用するストレージ容量が少なくて済みます。
仮想マシンへのストレージポリシーの適用
ストレージポリシーが用意できると、仮想マシンを作成する段階で、ストレージポリシーを選択することができます。ここで先ほど作成した、ストレージポリシーを適用することで、ストレージポリシーに従ってFTTやRAIDが決定されます。
Virtual SANの稼働状態の確認
最後に、Virtual SANで実際にどのように仮想マシンのデータが管理されているか確認しておきます。
Cluster>Monitor>Virtual SAN>Capacityを見ると、データの使用量を確認できます。クラスタでデデュープおよび圧縮を有効にした場合、下のようにDeduplication and Compression Overviewに圧縮しなかった場合と圧縮した場合のデータの使用量が見え、デデュープおよび圧縮により6GB->4GBとストレージの効率が良くなっていることが分かります。
また、仮想マシン>Monitor>Policiesを見ると、仮想マシンのvmdkファイルがRAID-5で各ホストに分散されて管理されていることが分かります。
最後に
WorkstationにvSphere 6.5 & Virtual SAN 6.5を構築してみましたが、一通りVirtual SANの設定ができ、VCSAの操作ももたつくことなく等の問題はありませんでした。Virtual SANの操作感や設定を試してみる方法として良いのではと思います。(ただ、メモリがとても必要なので潤沢にメモリを用意しましょう。)
今後は、障害時の動作など、色々試してみようと思います。
明日は@tsubasaogawaさんの記事です。お楽しみに。
参考
- VMware Virtual SAN のドキュメント
- ESXi 6.5 Virtual Appliance is now available | virtuallyGhetto
- vGhetto Automated vSphere Lab Deployment for vSphere 6.0u2 & vSphere 6.5 | virtuallyGhetto
- VSAN Setup in VMware Workstation Part 1 - Initial Lab preparation
- How to deploy the vCenter Server Appliance (VCSA) 6.5 running on VMware Fusion & Workstation? | virtuallyGhetto
*1:ただし、メモリは32GB程度必要になります。
PackerでWindows Server 2012 R2のVMwareイメージをビルドする
この記事は NIFTY Cloud Advent Calendar 2015の 20 日目です。
ESXi上で動作するOSイメージを自動ビルドするのにPackerが使われています。
LinuxのOSイメージをPackerでビルドする事例はありますが、Windowsについてはまだまだ少ないと感じており、今回は、WindowsのOSイメージをPackerでビルドする方法を紹介します。
構成
- Packer 0.8.6
- Windows Server 2012 R2 (ビルド対象OS)
- Ubuntu 15.04 (作業OS)
- ESXi 5.5U3 (Nested)
- VMware Workstation 11.1.3
※Workstation上に、UbuntuとESXiを稼働させています。
インストール
Packerのインストール
まず、Packerのインストールを行います。
$ wget https://dl.bintray.com/mitchellh/packer/packer_0.8.6_linux_amd64.zip $ mkdir /usr/local/packer $ unzip -d /usr/local/packer packer_0.8.6_linux_amd64.zip $ echo 'export PATH="${PATH}:/usr/local/packer"' | sudo tee -a /etc/profile.d/packer.sh; source /etc/profile.d/packer.sh $ packer --version 0.8.6
Packer Template
Packerを使ってビルドするには、Packer用のテンプレートファイル(json形式)を作成する必要があります。GitHub上にいくつかプロジェクトがあり、設定ファイル一式を取得することができます。
ただし、上記の設定ファイルだけだと一部動作しないところもあり、環境に合わせて変更を行います。今回の環境に合わせて修正を行った設定ファイルを使います。
$ git clone https://github.com/hideakihal/packer-windows-esxi.git $ cd packer-windows-esxi
ISOイメージの配置
packer-windows-esxi/iso配下にWindows Server 2012 R2のOSイメージを配置します。
また、合わせてwindows_2012_r2.jsonのvariablesにISOファイルのファイル名とハッシュ値を入力します。
$ vi windows_2012_r2.json "variables": { "iso_url": "./iso/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO", "iso_checksum_type": "md5", "iso_checksum": "5B5E08C490AD16B59B1D9FAB0DEF883A", :
ESXi の GuestIPHack の有効化
VMware Tools が起動していない仮想マシンの IP を取得するため、 GuestIPHack を有効にします。
ESXi に SSH でログインして、下記のコマンドを実行します。
esxcli system settings advanced set -o /Net/GuestIPHack -i 1
ビルド方法
上記の準備ができたところで、以下のコマンドを実行し、ビルドを行います。コマンドに PACKER_LOG=1 PACKER_LOG_PATH=build.log を追加すると、詳細なログを出力することができるのでデバッグに便利です。
PACKER_LOG=1 PACKER_LOG_PATH=build.log \ packer build \ -var 'remote_host=<ESXi の IP アドレス>' \ -var 'remote_datastore=<データストア名>' \ windows_2012_r2.json
Packer Templateの解説
ビルドの流れ
今回作成した設定ファイルは、以下の流れでビルドを行っています。
- buildersによるOSリソースの設定
- 応答ファイル(Autounattend.xml)によるOSインストール
- 言語設定(SetupUILanguage等)
- インストールエディション選択(ImageInstall>OSImage>InstallFrom)
- ディスク構成(DiskConfiguration)
- コンピュータ名(ComputerName)
- アカウント設定(UserAccounts)
- 初期設定スクリプト(FirstLogonCommands)
- 初期設定(init.bat)
- Windows Update(win-updates.ps1)
- WinRM有効化(winrm.bat)
- WinRMにてログインし、provisionersで設定した事後スクリプトを実行
Windows Updateについて
Windows Updateを行っていますが、応答ファイルを以下のように修正することで無効にすることもできます。
$ vi Autounattend.xml <!-- WITHOUT WINDOWS UPDATES --> <SynchronousCommand wcm:action="add"> <CommandLine>cmd.exe /c a:\winrm.bat</CommandLine> <Description>Fire-up winrm!</Description> <Order>99</Order> </SynchronousCommand> <!-- WITH WINDOWS UPDATES <SynchronousCommand wcm:action="add"> <CommandLine>cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\win-updates.ps1 -DoneScript a:\winrm.bat</CommandLine> <Description>Run Windows Updates</Description> <Order>99</Order> <RequiresUserInput>true</RequiresUserInput> </SynchronousCommand> -->
参考までにビルド時間は、Windows Updateがある場合は3時間30分、Windows Updateがない場合は15分かかりました。そのため、デバッグ中はWindows Updateはオフにしたほうが良いかと思います。
また、応答ファイルをデバッグする場合は、Windows ADKをインストールし、Windows システム イメージ マネージャーを利用すると便利です。
Windowsのprovisionerについて
Windowsイメージをビルドする際に利用できる provisioner は、PowerShell(powershell) と Windows Shell(windows-shell) しかありません。
OpenSSHをインストールして、Shell provisioner(shell) を試してましたが動作しませんでした。(動かす方法があるかもしれませんが。)
powershellはpowershellスクリプトを実行でき、windows-shellはcmdによるコマンドを実行できます。
今回は以下のように、VMware ToolsのインストールとRDP有効化のために利用しています。他の設定を行いたい場合は、ここにスクリプトを追加するかたちになります。
$ vi windows_2012_r2.json "provisioners": [ { "type": "windows-shell", "scripts": [ "scripts/vm-guest-tools.bat", "scripts/enable-rdp.bat" ] } ],
ただし、powershellとwindows-shellを利用するためには、WinRMによる接続を行う必要があり、テンプレートファイルにWinRM接続の設定を定義しておく必要があります。
$ vi windows_2012_r2.json "communicator": "winrm", "winrm_username": "packer", "winrm_password": "packer", "winrm_timeout": "6h",
vCenterの開発環境としてVCSIMを構築する
VMware vSphere APIのPythonバインディングであるpyvmomiを利用して、スクリプトから仮想マシンを操作することができます。しかし、pyvmomiのスクリプトを開発するため、vCenterの開発環境を用意する必要がありますが、構築には手間がかかります。そこで、今回はvCenterをシミュレートするvCenter Server Simulator (VCSIM)を試してみました。
※VCSIMはVMwareの公式サポートは受けられないため自己責任となります。
インストール
以下のリポジトリを参考に導入を行ったのですが、Packerを使って、vCSAのovaファイルからVagrantで使うVirtualBox用のboxの生成することが上手くできなかったので手動でインストールしています。
vCenter Server Applianceのインポート
VMware社のサイトからvCenter Server ApplianceのOVAファイル (VMware-vCenter-Server-Appliance-5.5.0.5100-1312297_OVF10.ova) をダウンロードします。
VirtualBoxを起動し、ファイル>仮想アプライアンスのインポートをクリックします。
上記のovaファイルを選択し、開くをクリックします。
次へをクリックします。
アプライアンスの設定にて、RAMを8192MBから4096MBに変更し、インポートをクリックします。
vCenter Server Applianceを選択し、起動をクリックします。
コンソール画面に「Press any key and proceed with booting.」を表示されるので、適当なキーをクリックします。
VCSIMの設定
起動したvCenter Serverにログインします。
※ID: root、PASS: vmware(vCSAのデフォルト設定)
gitコマンドをインストールします。
$ sudo zypper addrepo http://download.opensuse.org/repositories/devel:/tools:/scm/SLE_11_SP2/devel:tools:scm.repo $ sudo zypper install git-core
以下のリポジトリを取得します。
$ git clone https://github.com/tehranian/vagrant-vcenter-simulator.git
以下のスクリプトを実行します。
$ cd vagrant-vcenter-simulator/scripts $ chmod 700 vcenter-55-simulator-setup.sh $ ./vcenter-55-simulator-setup.sh
VCSIMの構成は以下のファイルで指定しています。以下の構成では、クラスターが2個、クラスターごとにホストが8個、ホストごとにVMが8個の構成であるため、ホストが16個、VMが128個設定されることになります。
$ cat /etc/vmware-vpx/vcsim/model/initInventory-vagrant.cfg <config> <inventory> <dc>1</dc> <host-per-dc>0</host-per-dc> <vm-per-host>0</vm-per-host> <poweron-vm-per-host>0</poweron-vm-per-host> <cluster-per-dc>2</cluster-per-dc> <host-per-cluster>8</host-per-cluster> <rp-per-cluster>8</rp-per-cluster> <vm-per-rp>8</vm-per-rp> <poweron-vm-per-rp>6</poweron-vm-per-rp> <dv-portgroups>0</dv-portgroups> </inventory> <worker-threads>2</worker-threads> <synchronous>true</synchronous> </config>
vSphere Web ClientからVCSIMに接続すると以下のように見えます。
動作確認
pyvmomiを使って、VCSIMに接続できるか確認してみます。pyvmomi community samplesを使えるDockerfileがあったため、こちらを利用します。
Dockerをインストール済みのUbuntuサーバにログインし、以下のようにDockerfileをビルドします。
$ git clone https://github.com/ozzyjohnson/docker-pyvmomi.git $ cd docker-pyvmomi $ sudo docker build -t debian-pyvmomi .
以下のようにコンテナを起動します。
$ sudo docker run -t -i debian-pyvmomi /bin/bash
pyvmomi community samplesディレクトリに移動し、サンプルスクリプトを実行します。
# cd /pyvmomi-community-samples/samples # python hello_world_vcenter.py -s <VCSIMのIPアドレス> -u root -p vmware Hello World! If you got here, you authenticted into vCenter. The server is 192.168.xxx.xxx! current session id: 5216d94f-21bc-9e49-1ce9-d6bcece2c165 Well done! Download, learn and contribute back: https://github.com/vmware/pyvmomi-community-samples
こちらはvCenter配下の全VMを確認しています。
# python getallvms.py -s <VCSIMのIPアドレス> -u root -p vmware Name : DC0_C0_RP0_VM2 Path : [GlobalDS_0] DC0_C0_RP0_VM2/DC0_C0_RP0_VM2.vmx Guest : Microsoft Windows Server 2003 Standard (32-bit) Instance UUID : 5038f77b-ce04-6ca9-e481-89958a8ce3eb Bios UUID : 42381903-f65d-d3c4-9d9b-d7c3b25fefd3 State : poweredOn :
Play Frameworkでイベント支援サービスを作ってみました
id:hirahiro56とid:nemorosus4160と一緒にPlay Frameworkを使ってWebサービスを作ってみました。
キャッチボールを目的に、告知ページ・申し込みフォームを作成するサービス「Chiball.net」です。
Chiball.net:http://chiball.net/
キャッチボールをする機会が減ってきて、キャッチボールできる場所ってどこにあるんだろうと思って調べてみると、あまり情報がまとまっているところが少なかったので、サービスとしてあれば便利かもと思い作ってみました。
機能として、以下のものが利用できます。
- 告知ページ・申し込みフォームを作成
- チャット機能
- キャッチボール場所の検索
サービスを作ったときに使ったツールをメモしておくと、後々便利そうだったのでまとめてみました。
全体の構成
フレームワーク
Scala/Javaで書かれたWebアプリケーションフレームワークを利用しました。チャット機能を実現するために、Play FrameworkでWebSocketを使っています。
Play Frameworkの開発環境の構築やModelの使い方については以下で触れています。
※過去の記事のリンクになります。
Play Frameworkライブラリ
ログイン認証には、Play FrameworkのライブラリであるSecureSocialを利用しました。
Bootstrap系
見栄えを整えるためBootstrapを利用しました。BootstrapはレスポンシブWebデザインに対応しているため、スマホ対応も楽にできました。
- Bootstrap本家
- bootstrap datetimepicker(日付入力)
- bootstrap select(セレクトメニュー)
- bootstrap file input(ファイル入力)
- bootstrap markdown(Markdownエディタ)
バージョン管理
プライベートリポジトリを無料で利用できるため、Bitbucketを利用しました。WikiやIssueも利用できるので共通手順の整理や課題管理に利用することができました。
- Bitbucket
BitbucketではGitHub Flowを使いましたが、GitHub Flowついては以下で触れています。
※過去の記事のリンクになります。
ロゴ作成
- Squarespace
おわりに
機能としてはまだまだですが、無事リリースまでもっていくことができました。機能拡張やデプロイやテストの自動化などまだまだ試してみたいことが多く、今後の課題にしたいと思います。
また、作るのにあたってPlay Framework 2徹底入門を読みましたが、書籍の後半に実用的な記載が多くがとても参考になりました。

Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発
- 作者: 掌田津耶乃,原一浩
- 出版社/メーカー: 翔泳社
- 発売日: 2013/12/17
- メディア: 大型本
- この商品を含むブログ (7件) を見る