2016年5月4日水曜日

ZabbixでGmailを使って障害メールを送信する設定

Zabbixで検知した障害をメール送信させる際に、GmailのSMTPサーバを使って送信する設定メモ。

スクリプトのダウンロード・配置

Zabbixの標準機能では実装できないようなので、以下からメール送信用のスクリプトをダウンロードする。

zabbix-jp/plugins
※「Download ZIP」ボタンから「plugins-master.zip」をダウンロード
https://github.com/zabbix-jp/plugins

ダウンロードしたスクリプトを解凍し、zabbix-server.confの「AlertScriptsPath」で指定されたディレクトリへ、フォルダごと配置する。私の環境の場合の配置先は以下ディレクトリとなる。

/etc/zabbix/alertscripts/

スクリプトの設定パラメーター編集

配置したスクリプト/etc/zabbix/alertscripts/sendmessage-smtp-php/sendmessage_smtp_php.shに対して、vi等にてパラメーター編集を行う。Gmailを使う場合は以下のように設定すれば良い。

--------------------
$MAIL_FROM      = "zabbix@localhost";
$MAIL_FROMNAME  = "Zabbix 障害通知";
$MAIL_SMTP_HOST = 'ssl://smtp.gmail.com:465';
$MAIL_SMTP_USER = '<gmailユーザー名>';
$MAIL_SMTP_PASS = '<gmailユーザーのパスワード>';
--------------------

Zabbixの設定

◆「管理」→「メディアタイプ」にてスクリプトを登録。

・名前:sendmessage_smtp_php.sh
・タイプ:スクリプト
・スクリプト名:sendmessage-smtp-php/sendmessage_smtp_php.sh
 ※絶対パスではなく「AlertScriptsPath」からの相対パスで記載



◆「管理」→「ユーザー」にてメール送信先の設定を実施。

・タイプ:sendmessage_smtp_php.sh
・送信先:<送信先メールアドレス>
・有効な時間帯: 1-7,00:00-24:00
・指定した深刻度のときに使用:すべてにチェック



◆「設定」→「アクション」にてメール送信時の条件を設定。
・名前:send mail
・デフォルトの件名:{TRIGGER.STATUS}: {TRIGGER.NAME}
・デフォルトのメッセージ:
--------------------
Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}

Item values:

1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}

Original event ID: {EVENT.ID}
--------------------
・リカバリメッセージ:チェックなし



・計算のタイプ:(A) and (B) and (C)
・アクションの実行条件:
--------------------
(A) メンテナンスの状態 期間外 メンテナンス
(B) トリガーの値 = 障害
(C) トリガーの深刻度 >= 軽度の障害
--------------------



メール送信テスト

設定完了したら実際にメールが飛ぶが試してみる。例として、ESXiからSNMPのwarm startを受信した際のメールは以下の内容となる。

--------------------
【件名】
Zabbix 障害通知 <hogehoge@gmail.com>

【本文】
Trigger: SNMP Trap
Trigger status: PROBLEM
Trigger severity: Average
Trigger URL:

Item values:

1. SNMP Trap log (esx01:snmptrap[]): 06:02:10 2016/05/04 PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [192.168.33.11]:20623->[192.168.33.22]
  errorstatus                    0
  messageid                      0
  community                      public
  transactionid                  69
  errorindex                     0
  requestid                      0
VARBINDS:
  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (0) 0:00:00.00
  SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: SNMPv2-MIB::warmStart
  SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 192.168.33.11
  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "public"
  SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: SNMPv2-MIB::snmpTraps
2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*

Original event ID: 200697
--------------------

参考資料

日本語アラートメールの送信方法
http://www.zabbix.jp/node/1441

2016年5月3日火曜日

ZabbixでESXiのSNMP Trapを監視する設定

自宅環境にZabbixを構築しており、ESXiからのSNMP Trapを監視できるように設定してみた。思いの外、手順が多かったので、忘れないようにまとめておく。

<環境>
・Zabbixバージョン:2.2.11
・Zabbixサーバ IPアドレス:192.168.33.22
・ESXiバージョン:VMware ESXi 6.0.0 Update 2
・ESXi IPアドレス:192.168.33.11
・SNMPコミュニティ名:public

1. snmptrapdの設定

まず、net-snmpをインストールする。net-snmpはZabbixインストール時の前提パッケージとなっているので、通常はインストールされており問題はないが、net-snmp-perlが入っていない場合は必要となるため追加でインストールする。

# yum install net-snmp
# yum install net-snmp-perl

次にsnmptrapdの設定として、/etc/snmp/snmptrapd.confに以下を追加する。
--------------------
authCommunity   log,execute,net public
perl do "/etc/zabbix/alertscripts/zabbix_trap_receiver.pl";
--------------------

次に、/etc/sysconfig/snmptrapdに以下を追加する。
--------------------
OPTIONS="-Lsd -p /var/run/snmptrapd.pid -M /usr/share/snmp/mibs:/usr/share/snmp/venders -m all"
--------------------

上記は、MIBの保存ディレクトリとして/usr/share/snmp/vendersも追加する設定を加える設定となる。指定したディレクトリへ、ESXiのMIBを配置することをお忘れなく。

※MIBは以下からダウンロードできる
SNMP MIB module file download (1013445)
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1013445

最後にサービス起動&起動時に自動起動するようにする。

# service snmptrapd start
# chkconfig snmptrapd on

2. Zabbixの設定① (CLIでの設定)

ZabbixでSNMPTrapを受信する方法として、SNMPTTを使うか、Zabbix付属のPerlスクリプトを使うかの2パターンがある。今回は後者のPerlスクリプトでの実装を行う。

まず、該当のPerlスクリプトを規定のディレクトリに配置する(デフォルトで置かれている可能性もあり)。

# cp /var/lib/zabbix/zabbix_trap_receiver.pl /etc/zabbixx/alertscripts/
# chmod 755 /etc/zabbixx/alertscripts/zabbix_trap_receiver.pl

次にZabbixの設定ファイルを編集する。

/etc/zabbix/zabbix_server.confの以下箇所を編集する。
--------------------
SNMPTrapperFile=/var/log/zabbix/zabbix_traps.tmp
StartSNMPTrapper=1
--------------------

最後にzabbix-serverをリスタートする。

# service zabbix-server restart

この状態でSNMP Trapを正常に受信し、スクリプトが実行されることを確認してみる。以下コマンドでテストTrapを送信する。

# snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"

/var/log/messagesにTrapの内容が表示されていればsnmptrapdの動作はOK。

# tail /var/log/messages
--------------------
May  3 21:49:04 t3022ce67 snmptrapd[15789]: 2016-05-03 21:49:04 0.0.0.0(via UDP: [127.0.0.1]:58671->[127.0.0.1]) TRAP, SNMP v1, community public#012#011IF-MIB::linkDown Enterprise Specific Trap (33) Uptime: 0:00:00.55#012#011IF-MIB::linkDown = Hex-STRING: E2 80 9C 74 65 73 74 73 74 72 69 6E 67 30 30 30 #012E2 80 9D
--------------------

さらに、/var/log/zabbix/zabbix_traps.tmpにTrapの内容が表示されていれば、Perlスクリプトもきちんと動作していることが確認できる。

# tail -20 /var/log/zabbix/zabbix_traps.tmp
--------------------
23:42:00 2016/05/03 ZBXTRAP 127.0.0.1
PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [127.0.0.1]:38270->[127.0.0.1]
  errorstatus                    0
  messageid                      0
  community                      public
  transactionid                  48
  errorindex                     0
  requestid                      0
VARBINDS:
  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (55) 0:00:00.55
  SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: IF-MIB::linkDown.0.33
  IF-MIB::linkDown               type=4  value=STRING: "teststring000"
  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "public"
  SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: IF-MIB::linkDown
--------------------

3. ESXiの設定

Zabbixに監視設定を実施する前に、ESXiからSNMP Trapを飛ばす設定を実施しておく。ESXi6.0ではSNMPを有効にするためには、ESXi Shellから実施する必要があるため、SSHでESXiにログインした後、以下ファイルを編集&サービスリスタートにて有効化する。

/etc/vmware/snmp.xmlの下線の箇所を編集。
 ※<enable>:デフォルトfalseなのでtrueに変更
 ※<communities>:デフォルト空白なのでpublicに変更
 ※<targets>:デフォルト空白なので、Trap送信先を以下形式で指定
       <IPアドレス>@162 <コミュニティ名>
--------------------
<config><snmpSettings><enable>true</enable><port>161</port><syscontact></syscontact><syslocation></syslocation><EnvEventSource>indications</EnvEventSource><communities>public</communities><targets>192.168.33.22@162 public</targets><EventFilter>1.3.6.1.4.1.6876.4.90.0.401</EventFilter><engineid>00000063000000a100000000</engineid><loglevel>info</loglevel><authProtocol></authProtocol><privProtocol></privProtocol><largestorage>true</largestorage></snmpSettings></config>
--------------------

設定後、サービスをリスタートする。

[root@esx01:~] /usr/bin/services.sh restart

SNMPの設定確認を実施。

[root@esx01:~] esxcli system snmp get
--------------------
   Authentication:
   Communities: public
   Enable: true
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps:
   Port: 161
   Privacy:
   Remoteusers:
   Syscontact:
   Syslocation:
   Targets: 192.168.33.22@162 public
   Users:
   V3targets:
--------------------

さらに、5分起きに出力されるTrapの抑制を実施する。

[root@esx01:~] esxcli system snmp set --notraps 1.3.6.1.4.1.6876.4.90.0.401

再度設定を確認。Notrapsに設定が反映されていることを確認する。

[root@esx01:~] esxcli system snmp get
--------------------
   Authentication:
   Communities: public
   Enable: true
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 1.3.6.1.4.1.6876.4.90.0.401
   Port: 161
   Privacy:
   Remoteusers:
   Syscontact:
   Syslocation:
   Targets: 192.168.33.22@162 public
   Users:
   V3targets:
--------------------

4. Zabbixの設定② (Web GUIでの設定)

SNMP Trapを監視できるようにするため、ZabbixのWeb GUIにて、以下の順に設定していく。

4.1 テンプレートの作成

・テンプレート名:Template SNMP Trap
・所属グループ:Templates



4.2 アイテムの作成

・名前:SNMP Trap log
・タイプ:SNMP トラップ
・キー:snmptrap[]
・データ型:ログ
・ヒストリの保存期間(日):90
・ログの時間の形式:hh:mm:ss yyyy/MM/dd
・アプリケーションの作成:SNMP Trap
・アプリケーション:-なし-



4.3 トリガーの作成

・名前:SNMP Trap
・条件式:{Template SNMP Trap:snmptrap[].regexp(.*VMWARE-VMINFO-MIB.*)}=0
 ※VMWARE-VMINFO-MIBは情報レベルのTrapのため、トリガーの動作対象外とした
・障害イベントを継続して生成:チェック
・深刻度:重度の障害


4.4 ホストへテンプレート適用

作成したテンプレートをESXiのホストへリンクする。同時にSNMPインタフェースの設定も実施しておくこと。詳細な手順は割愛。

4.5 動作確認

「監視データ」→「概要」画面にてアプリケーションを「SNMP Trap」でフィルタするとSNMP Trapの受信状況がわかる。


テストTrapを飛ばして動作試験をする場合は、ESXiにてサービスをリスタートする(もっと簡単にTrapを飛ばす方法はあると思うが)。

[root@esx01:~] /usr/bin/services.sh restart

正常であれば、情報が更新される。SNMPv2-MIB::warmStartやVMWARE-VMINFO-MIB::vmwVmHBDetectedが出力されればOK。


参考

Zabbix Documentation 2.2 3 SNMPトラップ
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtypes/snmptrap

ESXi 5.1 ホスト上で、SNMP の有効化及びテストができない (2070242)
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2070242

SNMP Trap is repeated every 5 minutes (2020271)
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2020271
2016年4月30日土曜日

仮想ネットワークアプライアンス「VyOS」の導入・初期設定をしてみた

先日自宅の検証環境用途としてESXiサーバを構築し、複数台の仮想マシンを作ったのだが、インターネット接続に使用しているセグメントと検証用のセグメントを分離したいと考えていた。

構成として考えているのは以下の様になる。ESXiのvSwitchを使って内部セグメントを作り、1台仮想マシンでルーターを建てて、必要に応じてルーティングできるようにしたい。

   |
   |
  ◎ブロードバンドルーター
   |
   |
--------------------------vSwitch0 192.168.33.0/24 外部セグメント
      |                     |
      | .31          PC/NAS etc
     ◎仮想ルーター
      | .31
      |
--------------------------vSwitch1 192.168.11.0/24 内部セグメント
            |
     検証用サーバ etc

上記を実現するために当初はLinuxで仮想ルーターを作ろうと思っていたのだが、オープンソースで「VyOS」というネットワークアプライアンスOSが存在することがわかったので使ってみることにした。

以下にインストールから初期設定までに実施内容を記載する。

VyOSのインストール

VyOSのインストールはVyOS.jpのユーザーガイドに詳しく記載されているため、そちらを参照。


基本操作

VyOSはよくあるネットワーク機器のような操作性を持っており、通常モードと設定モードの2つがある。ただし、CISCOのOSと異なり特権モードとグローバルコンフィグレーションモードといった違いはない。

現在どちらのモードとなっているかは、プロンプトから見分けることができる。

$ ←通常モード
# ←設定モード

コマンド体系については、確認系のコマンド(show ~)はCISCOライクだが、設定系(set ~)・削除系(delete ~)のコマンド体系はわりと異なる印象。また、TAB補完については、コマンドとその意味が表示されるなど、かなり親切に作られている。

設定投入時は通常以下の流れとなる。

$ configure  ←設定モードに移行
# set ~      ←設定コマンドを投入(削除の場合はdelete ~)
# compare   ←現在の設定と未反映の設定の差異を確認
# commit     ←設定の反映
# save         ←設定の保存
# exit          ←通常モードに戻る
$ show ~    ←設定確認

初期設定

起動直後の状態ではネットワーク設定がされていないので通信ができない。したがって、vSphere Clientの仮想コンソールを利用して初期設定を行う。

◆sshアクセスの有効化
# set service ssh port '22'

◆インターフェースの設定
外側のインターフェースのIP設定
# set interfaces ethernet eth0 address '192.168.33.31/24'
# set interfaces ethernet eth0 description 'OUTSIDE'

内側のインターフェースのIP設定
# set interfaces ethernet eth1 address '192.168.11.31/24'
# set interfaces ethernet eth1 description 'INSIDE'

◆デフォルトゲートウェイ設定
0.0.0.0/0に対するルーティング設定を実施。これがデフォルトゲートウェイと同義になる
# set protocols static route 0.0.0.0/0 next-hop 192.168.33.1 distance '1'

確認
$ show ip route
---------------
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

S>* 0.0.0.0/0 [1/0] via 192.168.33.1, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.11.0/24 is directly connected, eth1
C>* 192.168.33.0/24 is directly connected, eth0
---------------

◆タイムゾーン設定
# set system time-zone Asia/Tokyo

◆ntp設定
既存のNTP設定をすべて削除
# delete system ntp server 

新たにNTP同期先を設定
# set system ntp server 192.168.33.3

設定を反映して保存
# commit
# save

※反映時に以下メッセージが表示される
---------------
[ system time-zone Asia/Tokyo ]
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.

[ system ntp ]
Stopping NTP server: ntpd.
Starting NTP server: ntpd.
---------------

NTPの同期状況の確認
$ show ntp 
     remote           local      st poll reach  delay   offset    disp
=======================================================================
*192.168.33.3    192.168.33.31    2   64    1 0.00014 -0.000208 0.96825

◆コンソールデバイスの削除
仮想マシン環境ではコンソールデバイスが不要であり、ログに以下の様なエラーが10秒毎に出力されてしまうため無効化する。

---------------
Apr  6 17:03:44 vyos001 getty[22165]: ttyS0: tcgetattr: Input/output error
Apr  6 17:03:54 vyos001 getty[22166]: ttyS0: tcgetattr: Input/output error
Apr  6 17:09:05 vyos001 getty[22167]: ttyS0: tcgetattr: Input/output error
Apr  6 17:09:15 vyos001 getty[22169]: ttyS0: tcgetattr: Input/output error
Apr  6 17:09:25 vyos001 getty[22170]: ttyS0: tcgetattr: Input/output error
Apr  6 17:09:35 vyos001 getty[22171]: ttyS0: tcgetattr: Input/output error
---------------

現在の設定を確認
# show system console 
---------------
 device ttyS0 {
     speed 9600
 }
---------------

デバイスを削除
# delete system console device ttyS0 

SourceNAT設定

内部セグメントにいる192.168.11.110の仮想マシンにSourceNATをかけて、インターネット接続をできるように設定してみる。

outbound-interfac(通信が出て行く側のインタフェース)をeth0に設定
# set nat source rule 110 outbound-interface eth0

ソースアドレス(NAT変換対象)を192.168.11.110に設定
# set nat source rule 110 source address '192.168.11.110'

NAT変換後IPアドレスを192.168.33.31(VyOSのeth0のIPアドレス)に設定
# set nat source rule 110 translation address '192.168.33.31'

設定確認
$ show nat source rules
---------------
Disabled rules are not shown
Codes: X - exclude rule, M - masquerade rule

rule    intf              translation
----    ----              -----------
110     eth0              saddr 192.168.11.110 to 192.168.33.31
        proto-all         sport ANY
---------------



Firewall設定

外部セグメントから内部セグメントに対してFirewallによる通信制御を行う。とりあえず、pingと管理通信のみ実施可能になるよう設定する。

内部と外部セグメントのグループを作成
# set firewall group network-group NET-11 network '192.168.11.0/24'
# set firewall group network-group NET-33 network '192.168.33.0/24'

管理通信のポート番号のグループを作成
# set firewall group port-group PORT-MNT port '22'
# set firewall group port-group PORT-MNT port '443'
# set firewall group port-group PORT-MNT port '3389'

OUTSIDE-INというFirewallを作成し、デフォルト拒否に設定
# set firewall name OUTSIDE-IN default-action 'drop'

TCPの確立済み戻り通信の許可
※established:確立済みパケット
※related:確立済みパケットに関連するパケット
# set firewall name OUTSIDE-IN rule 10 action 'accept'
# set firewall name OUTSIDE-IN rule 10 state established 'enable'
# set firewall name OUTSIDE-IN rule 10 state related 'enable'

外部からのecho-requestの許可
# set firewall name OUTSIDE-IN rule 20 action 'accept'
# set firewall name OUTSIDE-IN rule 20 icmp type-name 'echo-request'
# set firewall name OUTSIDE-IN rule 20 protocol 'icmp'

外部からの管理通信の許可
# set firewall name OUTSIDE-IN rule 100 action 'accept'
# set firewall name OUTSIDE-IN rule 100 destination group network-group 'NET-11'
# set firewall name OUTSIDE-IN rule 100 destination group port-group 'PORT-MNT'
# set firewall name OUTSIDE-IN rule 100 protocol 'tcp'

外部インタフェースにFirewallを適用
# set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'

設定の確認
$ show firewall
---------------
-----------------------------
Rulesets Information
-----------------------------
--------------------------------------------------------------------------------
IPv4 Firewall "OUTSIDE-IN":

 Active on (eth0,IN)

rule  action   proto     packets  bytes
----  ------   -----     -------  -----
10    accept   all       767928   1335923290
  condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 state RELATED,ESTABLISHED

20    accept   icmp      801      76896
  condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 icmptype 8

100   accept   tcp       21       1080
  condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 match-DST-NTWRK-GROUP NET-11 match
              -set PORT-MNT dst

10000 drop     all       307      36694
  condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0
---------------

参考

VyOS.jp


2016年3月28日月曜日

Shuttle DS81を買ってESXi 6.0をインストールした話② (ESXi Custom Image作成~インストール完了まで)

前回、DS81の起動まで成功したので、引き続きOSインストールを行う。複数の仮想化サーバを構築したいので、ESXi 6.0をインストールすることにする。

★前回はこちら↓

Shuttle DS81を買ってESXi 6.0をインストールした話① (組み立て~起動まで)
https://tech-mmmm.blogspot.jp/2016/03/shuttle-ds81esxi-60.html

ESXi Custom Imageの作成

DS81のNICは「Realtek 8168」という種類のようだが、これは通常のESXiのインストールメディアにはドライバーが組み込まれていない。ESXiはインストール時にNICが1つも見つからない場合、インストール画面が先に進めなくなる仕様となっているため、事前にドライバーを組み込んだインストールイメージを作る必要がある。これをCustom Imageという。

Custom Image作成は、以下のサイトのPowerCLIベースのツールを利用する。私が利用した際は、「Version 2.4.3 (2015-09-11)」となっていた。

・ESXi-Customizer-PS
http://www.v-front.de/p/esxi-customizer-ps.html

前述のとおりPowerCLIベースのツールであるため、PowerCLIもダウンロードしてインストールしておく。

・vSphere PowerCLI 6.3
https://developercenter.vmware.com/web/dp/tool/vsphere_powercli/6.3

Realtekのドライバは以下からダウンロードする。

・Realtek NIC on vSphere 6
http://www.vdicloud.nl/2015/02/07/realtek-nic-on-vsphere-6/
ファイル名:net51-drivers-1.0.0-1vft.510.0.0.799733.x86_64

以上で必要なものは揃った。

後はPowerCLIを起動して、以下の構文でESXi-Customizer-PSを実行するだけでよい。なお、インターネットからISOをダウンロードしつつドライバを組み込んでCustom Image化するので、インターネット接続できる端末にて実行すること。

   .\ESXi-Customizer-PS-v2.4.ps1 <バージョン> -pkgDir <ドライバ保存フォルダ>

   <バージョン>
    -v50 : Create the latest ESXi 5.0 ISO
    -v51 : Create the latest ESXi 5.1 ISO
    -v55 : Create the latest ESXi 5.5 ISO
    -v60 : Create the latest ESXi 6.0 ISO

   <ドライバ保存フォルダ>
    Realtekのファイルを保存したフォルダを指定。

以下に実際に実行した結果を記載する。

   .\ESXi-Customizer-PS-v2.4.ps1 -v60 -pkgDir c:\mydoc\vib\


以下のとおり、Realtekのドライバーが組み込まれているのがわかる。

-----------------------------------------------
Loading Offline bundles and VIB files from C:\mydoc\vib\ ...
   Loading C:\mydoc\vib\net51-drivers-1.0.0-1vft.510.0.0.799733.x86_64.vib ... [OK]
      Add VIB net51-drivers 1.0.0-1vft.510.0.0.799733
 [New AcceptanceLevel: CommunitySupported] [OK, added]
-----------------------------------------------

成功すると、ESXi-Customizer-PSと同じフォルダに「ESXi-6.0.0-20160302001-standard-customized.iso」というファイルが出力される。6.0のどのバージョンになるか気になったので、インストール後にバージョン確認をすると、以下のとおりISO作成時点の最新版となっているようだった。

   [root@esx01:~] vmware -vl
   VMware ESXi 6.0.0 build-3620759
   VMware ESXi 6.0.0 Update 2

ブート可能なUSBメモリの作成

Shuttle DS81にESXiをインストールするため、USBからのインストールをすることにする。検索するといくつかフリーソフトがあるようだが、今回は「Rufus」を使うことにする。

・Rufus
http://rufus.akeo.ie/

このツールを使って、以下の様な設定でブート用USBメモリを作成した。


何やらエラーが出たが、よくわからないので「はい」を選択しておく。その後は特に問題なく、USBへの書き込みが完了した。


ESXiインストール

後はESXiのインストールとなるのだが、起動する前に、先ほど作ったUSBメモリを背面のUSB3.0ポートに指しておく。起動直後に「DEL」キーを押しBIOSに入り、Boot順位変更の画面を表示する。この際にUSBメモリが選択可能となっているはずなので、順位を一番上に変更しておく。

なお、私の場合、流用したSSDに、以前のESXi環境がインストールされていたため、意図的にSSDをBoot対象から消しておいた。

後はBIOSを保存して再起動すると、USBメモリからインストーラが起動するはず。NICも正常に認識していれば成功となる。

まとめ

久しぶりにCPUやメモリを自分で組み立ててPCを作るのは、なかなか楽しい経験だった。また、ESXiのCustom Imageの作成やUSBメモリからのブート方法を試す良い機会だった。

現在このPCはWindows、Linuxだけでなく、メーカーから提供されている評価版製品や仮想ルーター等をインストールして遊んでいる。検証で遊ぶ分にはCPU・メモリ・ディスク速度の性能はまったく問題はない。しいて言えば、ディスク容量が256GBと少ないので、将来的にはmSATAの増設を実施するかもしればい。

2016年3月26日土曜日

Shuttle DS81を買ってESXi 6.0をインストールした話① (組み立て~起動まで)

古いノートPCにVMware ESXi 6.0をインストールして、お遊び用の仮想化サーバとして利用していたのだが、以下問題があった。

 ・低すぎるスペック(Core 2 Duoの2コアのCPU・4GBのメモリ)
 ・起動中はアイドル状態でもかなり本体が熱い

特に熱問題は火事につながるのではないかと心配になるほどだったので、いっそのことPCを1個新調することにした。

機器選定

機器選定を実施するにあたり、3つの条件があった。

 ①大きなデスクトップPCを置くスペースは確保できないので、「省スペース」であること
 ②古いノートPCで使用していた2.5インチのSSDを流用できること
 ③低コストであること(目標は5万円以下)

上記を満たすものをAmazonで探すと、最終的な候補は以下となった。

 ①Intel NUC Kit NUC5i3RYH
  ・CPU:Core i3-5010U
  ・対応メモリ:DDR3L SODIMM 1.35V、1333、1600、1866MHz対応、16GB MAX
  ・対応ストレージ:2.5インチHDDorSSD 9.5mm厚対応/M.2 SSD
  ・大きさ/重量:13.7 x 10 x 12.5 cm / 408g
  ・消費電力:65W
  ・38,831円

 ②Shuttle SH170R6
  ・CPU:LGA1151対応 (第6世代 Intel Coreプロセッサー対応 最大TDP95W)
  ・対応メモリ:DDR4 2133 DIMM 4スロット (最大容量64GB) デュアルチャンネル×2
  ・対応ストレージ:3.5インチHDDorSSD x 2、M.2スロット
  ・大きさ/重量:216 (幅)× 332 (奥行き)× 198 (高さ)mm / 3.5kg
  ・消費電力:300W
  ・33,980円

 ③Shuttle DS81
  ・CPU:LGA1150対応CPU(TDP65W迄) Haswell Refresh対応
  ・対応メモリ:DDR3 1333/1600 SO-DIMM、2スロット,デュアルチャンネル (最大容量16GB)
  ・対応ストレージ:2.5インチHDDorSSD、mSATA
  ・大きさ/重量:165(幅)×190(奥行き)×43(高さ)mm / 1.63kg
  ・消費電力:90W
  ・22,680円

①は最初から最も小さくコンパクトになるが、CPUの選択ができず、性能から考えるとややコストパフォマンスが悪い。②は拡張性十分だが筐体が大きすぎる(特に5インチベイがあるので、幅が普通のデスクトップと同等)し、それに高価。③は対応するCPUに制約はあるものの、コストが安く大きさもちょうどよい。

ということで、③のShuttle DS81にて省スペースPCを組み上げることにした。また、DS81にはPCでは珍しく、オンボードで1Gb Ethernetが2ポートもあるので、将来的に面白い使い方ができそうということも選定理由となった。

Shuttle DS81に必要なパーツ選定

Shuttle DS81はベアボーンキットであり、CPU・メモリ・ディスクはすべて別に入手が必要。今回は仮想化サーバ用途なのでグラフィック性能は必要なく、重い処理をさせる予定もないので、CPUはCore i3を選定した。逆にメモリは仮想サーバが増えれば増えるほど必要となるので、最大の16GB(8GB x 2)で組むことにした。ディスクはもともと古いノートPCで使用していた256GBの2.5インチSSDを流用する。

後は細かい備品として、ディスプレイ出力用のHDMIケーブル(ディスプレイは所有していないので、一時的にテレビで初期設定する想定)、初期設定用USBキーボード、冷却ファンのホコリフィルターを購入。結果として明細は以下のとおりとなった。


 ・本体:Shuttle DS81 ¥ 22,680
 ・CPU:Intel Core i3-4170 3.70GHz LGA1150 ¥ 14,469
 ・メモリ:SP シリコンパワー 8GB×2枚組 DDR3-1600 PC3-12800 SO-DIMM ¥ 8,990
 ・USBキーボード:サンワサプライ SKB-L1UBK ¥ 496
 ・HDMIケーブル:エレコム  1.5m ブラック \ 712
 ・冷却ファンフィルター :SilverStone SST-FF141 \ 545
 -----------------
 ・合計:\ 47,892

予算ちょうど。Amazonやヨドバシ.comで注文したら、2日以内に全部家に届くというすごい時代。

DS81の組み立て

ものが集まったので、組み立てを行うことにする。

1. DS81開封

DS81を箱から出すと、内容物は以下のとおりだった。


 ・本体
 ・ACアダプター
 ・取付用金具
 ・ネジ
 ・熱伝導グリス
 ・CPUスロットカバー
 ・各言語のマニュアル
 ・DVD

DS81の背面。1Gb Ethernet x 2、シリアルポート x 2、ディスプレイポート x 2、HDMI x 1、USB x 4(2つはUSB3.0対応)という、通常のデスクトップPCでは見かけない面白いインタフェース構成。シリアルポートの使い道がまったく思いつかない。


2. 分解

CPUやメモリを取るつけるため、蓋を開けて分解していく。蓋は後ろのネジを2箇所緩めれば簡単に開く。



蓋を開けた直後はファンと2.5インチベイしか見えない状態なので、さらに分解していく。

最終的にはCPUスロットとメモリスロットにアクセスできるようになった。


3. CPU取り付け

CPUの固定具を開け、CPUを起き、固定具にて固定するだけ。



固定後に熱伝導グリスを塗ってからファンを取り付ける。熱伝導グリスの塗り方は諸説あるし、塗り方を変えてもあまり温度に変化がないという記事も見かけたりする。結果的に私は均等に塗ろうとして失敗。あきらめてファンを取り付けたが、現状支障はなさそうということを伝えておく。


4. メモリ取り付け

斜め45度でスロットに差し込み倒すだけ。とても簡単。


5.SSD取り付け

2.5インチベイに付属のネジを使って止めるだけ。電源とSATAケーブルは初期状態で使える位置に出ているので、それを差し込む。


6. 蓋取り付け

最後に蓋を取り付けて完成。蓋のネジは取り外ししやすいように、手で回せるネジに変えておいた(本当は付属の金具取り付け用のネジのようだが、大きさはちょうどよい)。


なお、DS81は上部の穴から吸い込み、側面から熱を逃がす作りとなっているので、フィルターを購入して上部の穴に付けておいた。

起動

完成したのでいよいよ起動させてみる。ディスプレイは持っていないのでテレビにHDMIで繋げ、今回のために購入した激安キーボードを接続して電源をONする。マウスは不要なので接続しない。BIOSに入りたかったのだがキーがわからず、もともとSSDにインストールしていたESXiが起動してしまう失敗を数回繰り返した後、DELキーでBIOSに入ることに成功。

BIOSではCPUもメモリもきちんと認識していた。


一旦、ここまで。次回はESXi 6.0のCustom Image作成からインストール完了までを記載する。

★次回はこちら↓

Shuttle DS81を買ってESXi 6.0をインストールした話② (ESXi Custom Image作成~インストール完了まで)
https://tech-mmmm.blogspot.jp/2016/03/shuttle-ds81esxi-60-esxi-custom-image.html

人気の投稿