ユーザ用ツール

サイト用ツール


mae3xx_tips:warplink_sps:start

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mae3xx_tips:warplink_sps:start [2017/06/08 10:35]
admin [設定ファイルの編集 (armsd.conf)]
mae3xx_tips:warplink_sps:start [2017/06/20 11:25] (現在)
admin
ライン 1: ライン 1:
 +====== WarpLink SPS の利用 ======
  
 +{{:​mae3xx_tips:​warplink_sps:​logo_small.gif|WarpLink SPS}}
 +
 +WarpLink SPS((IIJ様 SACM の OEM)) は、通信機器(サービスアダプタ((SA)))をネットワークに自動接続し、遠隔から集中管理するマネージメントシステム基盤です。\\
 +設定管理などのすべての機能を専用の Web 画面を通して一元的に行えるため、SaaS アプリケーションのように手軽に機器の管理を行うことが可能です。\\
 +VPN ルータの集中監視に加えて、無人環境に多数展開している IoT ゲートウェイを一元管理することが可能となり、VPN ルータ / IoT ゲートウェイに\\
 +掛かるトータルコストを大幅に削減できます。
 +
 +{{:​mae3xx_tips:​warplink_sps:​warplinksps_login.png?​800|WarpLink SPS login}}
 +
 +\\
 +
 +===== 準備 =====
 +
 +ご利用にはユーザ登録が必要です。\\
 +弊社営業部 (TEL: 0422-37-8112 E-Mail: sales@centurysys.co.jp) へお問い合わせ下さい。
 +
 +\\
 +
 +===== 設定 =====
 +
 +==== 設定ファイルの編集 (armsd.conf) ====
 +
 +ファームウェア v2.7.0 より、WarpLink SPS との接続を行うエージェント(armsd)を組み込んであります。\\
 +armsd の設定ファイル ''/​etc/​armsd/​armsd.conf''​ を編集します。
 +
 +<file config armsd.conf>​
 +distribution-id:​ 0000-0123-4567-8901-2345-6789-dead-beef
 +ls-sa-key:​ hogehogefugafuga
 +#​sa-model-name:​ arms client daemon
 +#​sa-version:​ 0.00
 +
 +#​path-iconfig:​ /​etc/​armsd/​initial-config
 +#​path-state-cache:​ /​var/​cache/​armsd/​state
 +#​https-proxy-url:​ http://​192.168.0.1:​8080/​
 +
 +#​hb-disk-usage0:​ /​
 +#​hb-traffic-if0:​ eth0
 +
 +### see sample scripts in /​usr/​share/​armsd-X.X/​examples
 +#​script-app-event:​ /​etc/​armsd/​scripts/​app-event
 +#​script-clear:​ /​etc/​armsd/​scripts/​clear
 +#​script-command:​ /​etc/​armsd/​scripts/​command
 +#​script-post-pull:​ /​etc/​armsd/​scripts/​post-pull
 +#​script-reconfig:​ /​etc/​armsd/​scripts/​reconfig
 +#​script-start:​ /​etc/​armsd/​scripts/​start
 +#​script-status:​ /​etc/​armsd/​scripts/​status
 +#​script-stop:​ /​etc/​armsd/​scripts/​stop
 +#​script-reboot:​ /​etc/​armsd/​scripts/​reboot
 +#​script-line-ctrl:​ /​etc/​armsd/​scripts/​line
 +#​script-state-changed:​ /​etc/​armsd/​scripts/​state-changed
 +</​file>​
 +
 +distribution-id,​ ls-sa-key を設定しておきます。
 +
 +\\
 +
 +==== 起動設定 (Upstart) ====
 +
 +''/​etc/​default/​armsd''​ を編集し、自動起動するようにします。
 +
 +<file config armsd>
 +START=yes
 +</​file>​
 +
 +\\
 +
 +==== 起動の確認 ====
 +
 +起動できているか確認してみます。
 +
 +<​code>​
 +root@plum:​~#​ ps ax|grep armsd
 + 1025 ?        Ss     0:03 /​usr/​sbin/​armsd -D -f /​etc/​armsd/​armsd.conf
 +31798 pts/1    S+     0:00 grep --color=auto armsd
 +</​code>​
 +
 +\\
 +
 +log でも確認してみます。
 +
 +<​code>​
 +Jun  7 13:20:18 plum armsd[1025]:​ armsd version 1.0.7, with libarms 5.41 (Release)
 +Jun  7 13:20:18 plum armsd[1025]:​ no state cache file - try LS-PULL
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 2 - Pull from LS.
 +Jun  7 13:20:18 plum armsd[1025]:​ state changed: INITIAL -> LSPULL
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - calculated. ls max retry 1500 times.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - calculated. ls retry interval 60 sec.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - line: connecting(0):​ DHCP
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 21 - Line DHCP(0) Connected.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - [-] Start rs-solicitation
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[0]: socket prepared. connecting...
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - ECDHE-RSA-AES256-GCM-SHA384)
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 2 - Connecting to LS
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 3 - LS Access Done
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - [-] End rs-solicitation
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - line: disconnecting(0):​ DHCP
 +Jun  7 13:20:18 plum armsd[1025]:​ disable web proxy
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 25 - Line DHCP(0) Disconnected.
 +Jun  7 13:20:18 plum armsd[1025]:​ state changed: LSPULL -> RSPULL
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - calculated. rs max retry 5 times.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - calculated. rs retry interval 60 sec.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - line: connecting(0):​ DHCP
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 21 - Line DHCP(0) Connected.
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - [-] Start config-solicitation
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[0]: https://​202.221.50.98/​arms/​msg
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[1]: https://​202.221.50.99/​arms/​msg
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[0]: socket prepared. connecting...
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384)
 +Jun  7 13:20:18 plum armsd[1025]:​ log callback: 5 - Connecting to RS
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 6 - RS Access Done
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - RS End point: https://​202.221.50.98/​arms/​msg
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] End config-solicitation
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - line: disconnecting(0):​ DHCP
 +Jun  7 13:20:19 plum armsd[1025]:​ disable web proxy
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 25 - Line DHCP(0) Disconnected.
 +Jun  7 13:20:19 plum armsd[1025]:​ state changed: RSPULL -> PULLDONE
 +Jun  7 13:20:19 plum armsd[1025]:​ initial configuration succeeded
 +Jun  7 13:20:19 plum armsd[1025]:​ state cache saved
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] Start push-method-query
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - RS[0]: socket prepared. connecting...
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384)
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] End push-method-query
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 91 - Push method: tunnel
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: https://​202.221.50.98:​443/​arms/​tunnel
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: https://​202.221.50.99:​443/​arms/​tunnel
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#2: https://​[2001:​0240:​bb88:​0000:​0000:​0000:​0000:​0262]:​443/​arms/​tunnel
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#3: https://​[2001:​0240:​bb88:​0000:​0000:​0000:​0000:​0263]:​443/​arms/​tunnel
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 70 - Start push confirmation
 +Jun  7 13:20:19 plum armsd[1025]:​ state changed: PULLDONE -> PUSH_SENDREADY
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: try to connect 202.221.50.98:​443
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: socket prepared. connecting...
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: socket connected.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: try to connect 202.221.50.99:​443
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: socket prepared. connecting...
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: socket connected.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#2: address family mismatched: 2001:​0240:​bb88:​0000:​0000:​0000:​0000:​0262
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#2: closed.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#3: address family mismatched: 2001:​0240:​bb88:​0000:​0000:​0000:​0000:​0263
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#3: closed.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384)
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: sent http header.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384)
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: sent http header.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#0: received http header.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] Start push-confirmation-start
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - Start confirmation
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - tunnel#1: received http header.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] Start push-confirmation-start
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - Start confirmation
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [70418033] End push-confirmation-start
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - Sent confirmation request. ​ wait for response.
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [-] Start push-confirmation-done
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 200 - [70418033] End push-confirmation-done
 +Jun  7 13:20:19 plum armsd[1025]:​ state changed: PUSH_SENDREADY -> PUSH_WAIT
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 80 - Start heartbeat (interval: 300 sec)
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 82 -  heartbeat server: 202.221.50.96
 +Jun  7 13:20:19 plum armsd[1025]:​ log callback: 82 -  heartbeat server: 202.221.50.97
 +</​code>​
 +
 +heartbeat が送信されていますので、接続は成功しているようです。
 +
 +\\
 +
 +===== カスタマイズ =====
 +
 +==== コールバックスクリプトの作成 ====
 +
 +WarpLink SPS のシステムに接続中に発生する各種イベント(コンフィグの適用など)は、armsd に登録したコールバックスクリプトにより処理を行います。\\
 +
 +コールバックスクリプトには、下記があります。
 +
 +<​code>​
 +#​script-app-event:​ /​etc/​armsd/​scripts/​app-event
 +#​script-clear:​ /​etc/​armsd/​scripts/​clear
 +#​script-command:​ /​etc/​armsd/​scripts/​command
 +#​script-post-pull:​ /​etc/​armsd/​scripts/​post-pull
 +#​script-reconfig:​ /​etc/​armsd/​scripts/​reconfig
 +#​script-start:​ /​etc/​armsd/​scripts/​start
 +#​script-status:​ /​etc/​armsd/​scripts/​status
 +#​script-stop:​ /​etc/​armsd/​scripts/​stop
 +#​script-reboot:​ /​etc/​armsd/​scripts/​reboot
 +#​script-line-ctrl:​ /​etc/​armsd/​scripts/​line
 +#​script-state-changed:​ /​etc/​armsd/​scripts/​state-changed
 +</​code>​
 +
 +^  Name  ^  Function ​ ^  Arguments ​ |
 +|app-event|IP アドレス変更の通知| |
 +|clear|ステータス初期化 (PUSH)| |
 +|command|任意コマンド|command <id> <​requestfile>​ <​resultfile>​|
 +|post-pull|Pull 完了後に実行| |
 +|reconfig|コンフィグ変更 (PUSH)|reconfig <id> <​version>​ <​info>​ <​configfile>​|
 +|start|Pull 時実行|start <id> <​version>​ <​info>​ <​configfile>​|
 +|stop|モジュール停止|stop <id>|
 +|reboot|再起動| |
 +|line-ctrl|Pull 時の回線接続((SMF SDK を用いて独自 RS を構築している事業者のみ設定可能です。WarpLink SPS/SACM などのサービスを直接利用する場合には利用できません。))|line-ctrl <​action>​ <​line-type>​ <​ifindex>​ [<id> <​password>​ [<​cid>​ <apn> <​pdp>​]]|
 +|state-changed|ステータス変化通知|state-changed <​old-status>​ <​new-status>​|
 +
 +\\
 +
 +機器の起動時には、モジュールの個数分(5) "​start"​ スクリプトが呼ばれます。\\
 +例として、次のような "​start"​ スクリプトにすると、
 +
 +<file bash start>
 +#!/bin/bash
 +
 +id=$1
 +version=$2
 +info=$3
 +config=$4
 +
 +echo start script invoked at `date`: $0 $*
 +
 +echo module-id=$id
 +echo version=$version
 +echo info=$info
 +echo config file is: $config:
 +echo -----
 +cat $config
 +echo -----
 +</​file>​
 +
 +次のようなログが(Upstart のログに)記録されます。
 +
 +<​code>​
 +start script invoked at Wed Jun 7 13:20:18 JST 2017: /​etc/​armsd/​scripts/​start 2 0.0.0-0 /​tmp/​armsd.1025/​tmp/​0
 +module-id=2
 +version=0.0.0-0
 +info=
 +config file is: /​tmp/​armsd.1025/​tmp/​0:​
 +-----
 +hogehoge
 +-----
 +start script invoked at Wed Jun 7 13:20:18 JST 2017: /​etc/​armsd/​scripts/​start 3 0.0.0-0 /​tmp/​armsd.1025/​tmp/​1
 +module-id=3
 +version=0.0.0-0
 +info=
 +config file is: /​tmp/​armsd.1025/​tmp/​1:​
 +-----
 +-----
 +start script invoked at Wed Jun 7 13:20:18 JST 2017: /​etc/​armsd/​scripts/​start 4 0.0.0-0 /​tmp/​armsd.1025/​tmp/​2
 +module-id=4
 +version=0.0.0-0
 +info=
 +config file is: /​tmp/​armsd.1025/​tmp/​2:​
 +-----
 +-----
 +start script invoked at Wed Jun 7 13:20:18 JST 2017: /​etc/​armsd/​scripts/​start 0 0.0.0-0 /​tmp/​armsd.1025/​tmp/​3
 +module-id=0
 +version=0.0.0-0
 +info=
 +config file is: /​tmp/​armsd.1025/​tmp/​3:​
 +-----
 +hoge1
 +http://​www.yahoo.co.jp?​file=hogehoge.img&​hoge=fuga
 +-----
 +start script invoked at Wed Jun 7 13:20:19 JST 2017: /​etc/​armsd/​scripts/​start 1 0.0.0-0 /​tmp/​armsd.1025/​tmp/​4
 +module-id=1
 +version=0.0.0-0
 +info=
 +config file is: /​tmp/​armsd.1025/​tmp/​4:​
 +-----
 +-----
 +</​code>​
 +
 +\\
 +
 +=== ファームウェア更新機能の実装 ===
 +
 +モジュール ID: 0 には "​ファームウェア(URL)"​ を割り当てていますので、ファームウェア更新機能を作成するには、
 +
 +  * VERSION((無条件に実行されるため、バージョンをチェックして無駄なダウンロードを避けるため)) および URL を config に記述するようにする
 +  * start / reconfig スクリプトで、config ファイルをパースしてファームウェア更新が必要か判定する
 +
 +という実装が考えられます。
 +
 +サンプルは次のようになるでしょうか。
 +
 +<file bash reconfig>​
 +#! /bin/bash
 +
 +
 +firmup_check() {
 +  local config=$1
 +  local ma_version=`cat /​etc/​version`
 +  local VERSION="​None"​
 +  local URL=""​
 +
 +  . $config
 +
 +  echo "MA version(current):​ \"​$ma_version\""​
 +  echo "​Version in config: \"​$VERSION\""​
 +
 +  if [ "​$ma_version"​ != "​$VERSION"​ ]; then
 +    echo "​version unmatched, need to update firmware, firmware URL is \"​$URL\""​
 +    # wget $URL -O /​tmp/​firmware.img ​ # (download firmware)
 +    # firmup /​tmp/​firmware.img ​       # (update firmware)
 +  else
 +    echo "​version matched, not need to firm-update."​
 +  fi
 +}
 +
 +echo reconfig script invoked at `date`: $0 $*
 +
 +# $1 is module-id
 +case "​$1"​ in
 +  "​0"​ ) firmup_check $4
 +      ;;
 +esac
 +</​file>​
 +
 +{{:​mae3xx_tips:​warplink_sps:​change_config_00.png?​1000|コンフィグ変更}}
 +
 +
 +\\
 +
 +実行例は下記のようになります。
 +
 +<file generic syslog>
 +reconfig script invoked at Wed Jun 7 14:51:02 JST 2017: /​etc/​armsd/​scripts/​reconfig 0 0.0.0-0 /​tmp/​armsd.1025/​candidate-config/​0
 +MA version(current):​ "​MA-E3xx firmware version 2.7.0 (Tue May 9 11:28:30 JST 2017)"
 +Version in config: "​MA-E3xx firmware version 2.7.1 (Tue May 10 11:28:30 JST 2017)"
 +version unmatched, need to update firmware, firmware URL is "​http://​ma-tech.centurysys.jp/​lib/​exe/​fetch.php?​media=download_software:​mae3xx:​mae3xx_trusty_v2_7_1.img"​
 +</​file>​
mae3xx_tips/warplink_sps/start.1496885752.txt.bz2 · 最終更新: 2017/06/08 10:35 by admin