まだまだ仕事でバタバタしていますが、PJ管理をする必要に迫られており、何かしらのツールを考えていました。
Docker+Redmineで落ち着きそうだ。
メチャクチャ便利です。
まだまだ仕事でバタバタしていますが、PJ管理をする必要に迫られており、何かしらのツールを考えていました。
Docker+Redmineで落ち着きそうだ。
メチャクチャ便利です。
先日QNAPのNUTを利用してクライアントに商用電源の状態を共有していたのですが、QNAPで送信出来るクライアントの数が6個までしか設定できません。
直接/etc/config/ups/upsd.confを編集してもWEB GUIから制御できなかったりしたので、raspiをnutdにしてQNAPをクライアントに変更します。
qanpの設定を見比べながら設定していきます。
まず、UPSをraspiに接続してlogを見てみます。
[103417.777158] usb 1-1.5: new full-speed USB device number 4 using dwc_otg [103417.910716] usb 1-1.5: New USB device found, idVendor=051d, idProduct=0003 [103417.910735] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [103417.910746] usb 1-1.5: Product: Smart-UPS 750 FW:UPS 08.3 / ID=18 [103417.910758] usb 1-1.5: Manufacturer: American Power Conversion [103417.910769] usb 1-1.5: SerialNumber: AS1317214978 [103417.941831] hid-generic 0003:051D:0003.0001: hiddev96,hidraw0: USB HID v1.00 Device [American Power Conversion Smart-UPS 750 FW:UPS 08.3 / ID=18] on usb-3f980000.usb-1.5/input0
USBの状態も確認しておく
$ lsusb Bus 001 Device 004: ID 051d:0003 American Power Conversion UPS
$ sudo apt-get updatesudo apt-get install nut nut-client nut-server
Reading package lists… Done
Building dependency tree
Reading state information… Done
nut is already the newest version (2.7.4-5).
nut-client is already the newest version (2.7.4-5).
nut-server is already the newest version (2.7.4-5).
nut-server set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
[/code]
クライアントとしてインストールしていたので、なにもインストールされないです。
設定ファイルを書き換えていく。
ups.confに書くのは、UPSのドライバと接続方法を記載する。
/etc/ups/ups.conf
# cp ups.conf ups.conf.org /etc/ups/ups.conf [qnapups] driver = usbhid-ups port = auto desc = "APC ES-750" pollinterval=1
ドライバサービスを再起動する。
# systemctl restart nut-driver # systemctl status nut-driver Oct 16 16:10:39 ras systemd[1]: Starting Network UPS Tools - power device driver controller... Oct 16 16:10:39 ras upsdrvctl[9680]: interrupt pipe disabled (add 'pollonly' flag to 'ups.conf' to g Oct 16 16:10:39 ras upsdrvctl[9680]: Using subdriver: APC HID 0.96 Oct 16 16:10:39 ras upsdrvctl[9680]: Network UPS Tools - Generic HID driver 0.41 (2.7.4) Oct 16 16:10:39 ras upsdrvctl[9680]: USB communication driver 0.33 Oct 16 16:10:39 ras upsdrvctl[9680]: Network UPS Tools - UPS driver controller 2.7.4 Oct 16 16:10:39 ras systemd[1]: Started Network UPS Tools - power device driver controller. Oct 16 16:10:39 ras usbhid-ups[9685]: Startup successful
upsd.confに書くのは、主にアクセス権に関するもので、今回はアクセス制限をしたいので、追記する。最後に、LISTENを記載するのを忘れずに。
/etc/ups/upsd.conf
ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 ACL localnet 192.168.0.0/24 ACL client_1 192.168.10.1/32 ACL client_2 192.168.0.232/32 ACL client_3 192.168.0.235/32 ACL client_4 192.168.0.236/32 ACL client_5 192.168.0.237/32 ACCEPT localhost ACCEPT localnet ACCEPT client_1 ACCEPT client_2 ACCEPT client_3 ACCEPT client_4 ACCEPT client_5 REJECT all MAXAGE 20 LISTEN 0.0.0.0
本来なら、権限ごとにIDとパスワードを設定すべきだが、一括管理するので、IDは全てadminを利用することにする。
/etc/ups/upsd.users
[admin] password = [passwd] allowfrom = localhost actions = SET instcmds = ALL upsmon master # or upsmon slave
サーバーモードは、standalone , netserver , netclientとある。
/etc/nut/nut.conf
MODE=netserver
nut-serverの再起動を行い、upscでUPSの状況を確認してみる。
# service nut-server restart # upsc es750 Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.runtime: 1620 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 27.1 battery.voltage.nominal: 24.0 device.mfr: American Power Conversion device.model: Smart-UPS 750 device.serial: AS1317214978 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 1 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: APC HID 0.96 driver.version.internal: 0.41 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: UPS 08.3 / ID=18 ups.mfr: American Power Conversion ups.mfr.date: 2013/04/27 ups.model: Smart-UPS 750 ups.productid: 0003 ups.serial: AS1317214978 ups.status: OL ups.timer.reboot: -1 ups.timer.shutdown: -1 ups.vendorid: 051d
nut-serverの設定が終わったので、nut-server自体が電源状態を受け取れるようnut-clientの設定も行う。
設定は、/etc/nut/upsmon.confに記述する。
$ sudo vi /etc/nut/upsmon.conf MONITOR qnapups@localhost 1 admin 123456 master
一通りの設定と接続確認が終わったので、nutを再起動する。
# service nut-server restart # service nut-client restart # service nut-monitor restart
$ sudo vi /etc/nut/upsmon.conf MONITOR qnapups@localhost 1 admin 123456 master
TS-869にSquidをインストールして許可したDomainのみアクセス可能とする。
App CenterからSquidをインストール
設定画面でManual configurationに変更し、configを記載する。
### squid.conf ### # The user name and group name Squid will operate as cache_effective_user httpdusr cache_effective_group everyone # # Recommended minimum configuration: # # Auth Method #auth_param basic program /share/MD0_DATA/.qpkg/Squid/opt/libexec/squid/ncsa_auth /etc/shadow #auth_param basic children 5 #auth_param basic realm Squid proxy-caching web server #auth_param basic credentialsttl 2 hours acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed acl localnet src 192.168.0.0/16 #acl homenet src 192.168.10.0/16 acl whitelist dstdomain "/share/MD0_DATA/.qpkg/Squid/whitelist" #acl whitelist_regex url_regex "/share/MD0_DATA/.qpkg/Squid/whitelist_regex" acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT #acl ncsa_users proxy_auth REQUIRED # # Recommended minimum Access Permission configuration: # # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager acl noncache-servers dstdomain .tokyosteel.co.jp no_cache deny noncache-servers # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet whitelist #http_access allow localnet homenet whitelist whitelist_regex #http_access allow ncsa_users # And finally deny all other access to this proxy http_access deny all # Squid normally listens to port 3128 http_port 3128 # We recommend you to use at least the following line. hierarchy_stoplist cgi-bin ? # Uncomment and adjust the following to add a disk cache directory. #cache_dir ufs /share/MD0_DATA/.qpkg/Squid/opt/var/squid/cache 100 16 256 cache_mem 8 MB # Leave coredumps in the first cache dir coredump_dir /share/MD0_DATA/.qpkg/Squid/opt/var/squid/ access_log /share/MD0_DATA/.qpkg/Squid/opt/var/squid/logs/access.log squid cache_log /share/MD0_DATA/.qpkg/Squid/opt/var/squid/logs/cache.log cache_store_log /share/MD0_DATA/.qpkg/Squid/opt/var/squid/logs/store.log # Add logfile rotated mechanism logfile_rotate 7 debug_options rotate=1 # mime_table /share/MD0_DATA/.qpkg/Squid/opt/etc/squid/mime.conf pid_filename /share/MD0_DATA/.qpkg/Squid/opt/var/squid/run/squid.pid diskd_program /share/MD0_DATA/.qpkg/Squid/opt/libexec/squid/diskd unlinkd_program /share/MD0_DATA/.qpkg/Squid/opt/libexec/squid/unlinkd icon_directory /share/MD0_DATA/.qpkg/Squid/opt/share/squid/icons err_page_stylesheet /share/MD0_DATA/.qpkg/Squid/opt/etc/squid/errorpage.css error_default_language en-us error_directory /share/MD0_DATA/.qpkg/Squid/opt/share/squid/errors/ja #error_directory /share/MD0_DATA/.qpkg/Squid/opt/share/squid/errors/en-us # Add any of your own refresh_pattern entries above these. refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
whitelistを記述する。
acl whitelist dstdomain “/share/MD0_DATA/.qpkg/Squid/whitelist”としているので、
### /share/MD0_DATA/.qpkg/Squid/whitelist ### # White list # government .go.jp # Evernote .evernote.com # Dell .dell.com .dell.co.jp .dellcdn.com # 電子マニフェスト .jars.gr.jp .jwnet.or.jp .jwnetweb.jp ocsp.digicert.com crl.globalsign.net # 関西電力 .kepco.co.jp #google .gstatic.com .googleusercontent.com .googleapis.com .google.com .google.co.jp # mozilla .mozilla.org .mozilla.jp # windows update .microsoft.com .windowsupdate.com .windows.com
みたいに書いていけばいいじゃないか。
先の記事でQNAPにUPSを接続し、QNAPのNUTでクライアントに商用電源の状態を送り、クライアントマシンをshutdownするまでの設定を行ったが、あと1台VMWare ESXiが稼働している。
このマシンにもshutdownの信号を受信できるよう少し調べてみたが、ssh経由でshutdownを行う感じで出来そうだ。
具体的には、QNAPのNUT SERVERからVMwareESXi上に展開したWindowsマシンでNUT CLIENTを建てて、商用電源の喪失信号を受けると、ShutdownScriptを走らせる。
upsmon.conf内のSHUTDOWNCMDを変更
OSのシャットダウンを行わず、ESXiにゲストの停止(/bin/shutdown.sh)とESXi自体の停止(poweroff)をSSHで実行すると良いそうだ。
#SHUTDOWNCMD “/sbin/shutdown -h +0”
SHUTDOWNCMD “/usr/bin/ssh root@ESXiのIP ‘/bin/shutdown.sh;/bin/poweroff’”
下記参考ページの構成と私の構成が異なっており、そのまま対応できない。
しかし、非常に参考になる。
参考ページのGuestOSはUbuntuを利用されているが、私の環境ではWindowsなので、WinNUTを使いGuestWindowsホストのupsmon.confにシャッドダウンコマンドにsshを足して設定すれば良さそうだ。
sshの設定は、参考ページと同じで良さそうだ。
upsmon.conf内のSHUTDOWNCMDを変更することでゲストOSのシャットダウンを行うのではなく、ESXiにゲストの停止(/bin/shutdown.sh)とESXi自体の停止(poweroff)をSSHで実行する。 #SHUTDOWNCMD “/sbin/shutdown -h +0” SHUTDOWNCMD “/usr/bin/ssh root@ESXiのIP ‘/bin/shutdown.sh;/bin/poweroff'” なお、これを動作させるためにはESXi上で以下の設定をしておく必要がある。 +ESXiへのSSHログインができるように設定しておく。~ →vSphere Clientからホストの[構成]-[セキュリティプロファイル]で[サービス]のプロパティを開きSSHを選んでオプションボタンを押す。「ホストに連携して開始および停止」を選んで開始ボタンを押した後、OKボタンを押す。 +nutを入れたサーバからのパスワードなしでコマンドを実行するために、SSHキーを登録する。~ →ESXiサーバの/etc/ssh/keys-root/authorized_keys にパブリックキーを登録する。 +ESXi 上でゲストOSの自動起動・停止を設定しておく。~ →vSphere Clientからホストの[構成]-ソフトウェア項目の[仮想マシン起動/シャットダウン]から自動起動設定を選ぶ。
VMwareESXiがGuestOSが何台か稼働中なので、間をみて設定しておくことにする。
参考)
https://lambeden.dyndns.org/wp/?p=83
QNAPにはUPSのために、NUT(Network UPS Tools)がインストールされているようだ。
WEB GUIから設定できるので楽に稼働状態まで持って行ける。
Network UPS Toolsというくらいなので、クライアントへ渡す事も可能だ。
QNAP同士なら、全くCUIに頼らなくても設定できる。
QNAP同士の設定後、Client側で、きちんとUPSを認識してくれた。
QNAPをNUT SERVER、WindowをNUT CLIENTにしてWindowsマシンもShutdownさせる。
WinNUTをインストール
EDITを押し、下記設定を入力
# MONITOR myups@bigserver 1 monmaster blah master # MONITOR su700@server.example.com 1 upsmon secretpass slave MONITOR qnapups@192.168.xxx.xxx 1 admin 123456 slave
Install As Service Windowsのサービスとして起動
Use Timed Shutdown バッテリーに切り替わった時にWindowsをshutdown
Shutdown Method バッテリーに切り替わってから何秒後にシャットダウンするかの秒数
Normal(通常),Forced(強制),Force If Hung(止まった場合強制),Hibernate(休止)から選択
WinNUT Ups MonitorがServiceに追加されており、状態が開始、スタートアップが自動に設定されていればOK
WinNUT起動ログ
Level INFO 09/19/2018 11:40:09 Detected OS as Windows 7 Level NOTICE 09/19/2018 11:40:09 Network UPS Tools upsmon 2.0.0.4 Level INFO 09/19/2018 11:40:09 UPS: qnapups@192.168.xxx.xxx (slave) (power value 1) Level INFO 09/19/2018 11:40:09 Config Load: MINSUPPLIES set to 1 Level INFO 09/19/2018 11:40:09 Config Load: NOTIFYCMD set to c:\Program Files\WinNUT\alertPopup.exe Level INFO 09/19/2018 11:40:09 Config Load: POLLFREQ set to 5 Level INFO 09/19/2018 11:40:09 Config Load: POLLFREQALERT set to 5 Level INFO 09/19/2018 11:40:09 Config Load: HOSTSYNC set to 15 Level INFO 09/19/2018 11:40:09 Config Load: DEADTIME set to 15 Level INFO 09/19/2018 11:40:09 Config Load: RBWARNTIME set to 43200 Level INFO 09/19/2018 11:40:09 Config Load: NOCOMMWARNTIME set to 300 Level INFO 09/19/2018 11:40:09 Config Load: FINALDELAY set to 5 Level ALERT 09/19/2018 11:40:09 WinNUTUpsMon Service is starting to monitor UPS
テレビサーバのT3500、T3500TV、T3600にインストール設定完了
QNAPのNUTと通信出来るかを確認するため、QNAP CLIENTから情報を取得してみる。
upsc qnapups@192.168.xxx.xxx battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.runtime: 1680 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 26.8 battery.voltage.nominal: 24.0 device.mfr: American Power Conversion device.model: Smart-UPS 750 device.serial: AS1317214978 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 1 driver.parameter.port: /dev/ttyS1 driver.version: 2.6.5 driver.version.data: APC HID 0.95 driver.version.internal: 0.37 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: UPS 08.3 / ID=18 ups.mfr: American Power Conversion ups.mfr.date: 2013/04/27 ups.model: Smart-UPS 750 ups.productid: 0003 ups.serial: AS1317214978 ups.status: OL ups.timer.reboot: -1 ups.timer.shutdown: -1 ups.vendorid: 051d
このように情報が取得出来る。
ところで、Windows版のupscは何処にあるんだ?
動作確認のため、ACケーブルを抜いてみる。きちんと仕事をしてくれているようだ。
Level NOTICE 09/19/2018 12:32:58 UPS qnapups@192.168.xxx.xxx on battery Level NOTICE 09/19/2018 12:33:09 UPS qnapups@192.168.xxx.xxx on line power
なぜか、popupが立ち上がってこないなぁ・・・
しかたないので、line通知に変更
windows版curl.exeを配置してから、sndline.batを作成
:line settings set url="https://notify-api.line.me/api/notify" set curl="E:\bin\curl.exe" set token="Line Token ID" set lineMSG="message=[ %COMPUTERNAME% ] UPS IS ON BATTERY!!!" echo %lineMSG% :Line送信処理 %curl% %url% -H "Authorization: Bearer %token%" -d %lineMSG%
batを書いても通知が来ないなぁ・・・
Install先が悪いのかもしれないなぁ・・・
installディレクトリを変更してみるか。
参考)