1.1. ICE Backendのセットアップ

ICEではICE BackendのインストーラをAnsibleのplaybookとして提供しています。playbookを実行するためにAnsibleのインストールが必要です。

この節では、はじめにAnsibleのインストール手順とplaybookを実行するための準備作業について説明し、つづいて、ICE Backendの設定とセットアップの実行について説明します。

Ansibleでplaybookを実行するとAnsibleはSSHでインストール先のサーバに接続して、playbookの定義に従ってインストール作業を行います。 従って、playbookを実行するためにAnsibleをインストールしたサーバと、ICE Backendをインストールするため にAnsibleをインストールしたサーバからSSH接続できるようにしたサーバを用意する必要があります。

以降のマニュアルではplaybookを実行するサーバをAnsible管理サーバ、ICE BackendをインストールするサーバをBackendサーバと呼びます。

なお、AnsibleをインストールしたサーバにICE Backendをインストールして、1つのサーバをAnsible管理サーバBackendサーバの両方に使用することもできます。

1.1.1. Ansible管理サーバとBackendサーバの事前準備

1.1.1.1. Ansibleのインストール

Ansible管理サーバにAnsibleをインストールします。

RHEL / CentOSの場合

$ sudo yum install -y ansible

バックエンド環境を構築するAnsible playbookは、次の環境において動作を保証します。

Ansible Python
2.7.5.0 2.7
2.7.4.0 2.7
2.4.3.0 2.7
2.4.2.0 2.7
2.2.3.0 2.7
2.2.0.0 2.7

yumリポジトリで公開されるansibleのバージョンやpythonのバージョンが変化し、ICE BackendのPlaybookが正常に動作しない場合、 トラブルシューティングガイドの特定バージョンのAnsibleのインストール を参考に、上記の動作確認済みのバージョンのAnsibleを利用してください。

1.1.1.2. Backendサーバ 側の事前確認

  • Ansible管理サーバ から Backendサーバ へのSSHログイン設定

    Ansibleは別のサーバにインストール作業を行うためにSSH接続を行います。その際にセットアップ実行ユーザであるiotuserユーザのパスワードが要求されないようにするための作業を行います。

    Ansible管理サーバBackendサーバを同一のサーバ上で実行する場合、このSSHログイン設定作業は不要です。次のSELinuxの無効化手順を確認してください。

    • Backendサーバ のセットアップ実行ユーザ作成

      バックエンドのplaybookのデフォルト設定ではiotuserというユーザをSSH接続の際に使用するので、playbookを実行する前にBackendサーバにiotuserユーザを作成します。

      # adduser iotuser
      # passwd iotuser
        -> iotuser のパスワードを設定します
      

      セットアップ実行ユーザ(iotuser)がパスワード無しでsudoを実行できるようにsudoersを設定します。

      # visudo
      

      次の1行を追加します。

      iotuser  ALL=(ALL)       NOPASSWD: ALL
      

      Backendサーバに既にsudoを実行できる一般ユーザが存在する場合、トラブルシューティングガイドの Backendサーバの既存ユーザでセットアップを行うを参照してください。

    • Ansible管理サーバでSSHのキーペアを作成し、公開鍵をBackendサーバiotuserユーザに登録します。

      Ansible管理サーバで次のコマンドを実行します。

      コマンド実行後に入力を求められる生成オプションは全てデフォルトのままにします。デフォルトで実行することで、秘密鍵がコマンドを実行したときのユーザに登録されます。

      $ ssh-keygen -t rsa
      

      次に、作成したSSHの公開鍵をBackendサーバのiotuserに登録します。

      Ansible管理サーバで次のコマンドを実行してください。

      <ホスト名>にICE BackendをインストールするサーバのIPアドレスを指定します。

      $ ssh-copy-id -i ./.ssh/id_rsa.pub iotuser@<ホスト名>
      

      ssh-copy-idは、NEC Cloud IaaSや AWS EC2など sshで2つ以上の認証手段を許可していない場合には実行できません。 NEC Cloud IaaSや AWS EC2などでは、sshdの設定で証明書による認証のみ許可し、パスワードによるログインを許可しません。そのため、ssh-copy-idに失敗してしまいます。

      このような場合、トラブルシューティングガイドの ssd-copy-idに失敗する による対処を検討してください。

  • BackendサーバのSELinuxを無効化します。

    # vi /etc/selinux/config
    

    SELINUX=... の値を以下のようにdisabledに変更します。

    SELINUX=disabled
    

    ファイルを保存したら、OSを再起動してSELinuxが無効になっていることを確認します。

    getenforceコマンドでDisabledが出力されたらSELinuxが無効になっています。

    $ getenforce
    Disabled
    

1.1.2. Playbookの展開と設定ファイルの編集

ICE Backendをセットアップするplaybookを実行する前に、 playbookの設定を構築するシステムの要件にあわせて変更します。

1.1.2.1. Playbookの展開

Ansible管理サーバの任意の場所に iot_connectivity_engine_backend_playbook-x64-{version}.tar.gz を解凍します。

$ tar xzf iot_connectivity_engine_backend_playbook-x64-{version}.tar.gz

1.1.2.2. hosts_inventoryによるBackendサーバの指定

解凍後に展開されるhosts_inventory を編集し、[mq_servers], [db_servers], [api_servers] の次の行にBackendサーバのホスト名を記入します。

各サーバグループの役割は 製品概要の物理サーバ構成 を参照してください。

  • All-In-One 構成(1台のサーバに全ての機能をインストールする)

    例えばAnsible管理サーバからアクセスできるBackendサーバのIPアドレスが192.168.1.1の場合は、次のように192.168.1.1を指定します。

    [mq_servers]
    192.168.1.1
    
    [db_servers]
    192.168.1.1
    
    [api_servers]
    192.168.1.1
    

    Ansible管理サーバBackendサーバを同一のサーバ上で実行する場合、トラブルシューティングガイドの 同一サーバ上にセットアップする場合 を参照してください。

  • サーバ分離 構成(別々のサーバに機能を分けてインストールする)

    例えば、mq_serversとdb_serversとapi_serversを異なるサーバにインストールする場合は、host_inventoryに次のように記述します。

    [mq_servers]
    192.168.1.1
    
    [db_servers]
    192.168.1.2
    
    [api_servers]
    192.168.1.3
    

1.1.2.3. インストール構成に合わせたgroup_vars下の設定ファイルの編集

ホストの解放ポートやSSL通信、ユーザのパスワード設定です。group_varsディレクトリ下の設定ファイルを編集します。

例えば、デフォルトの設定で192.168.1.1にICE Backendをセットアップする場合、 group_vars/ice.yml を下記のように編集します。 host:の後には半角スペースが必要ですので、ご注意ください。

---
ice:
  dir: /opt/nec/pf/ice

  outbound:
    host: 192.168.1.1

デフォルトの設定値は、開発・評価環境向けのAll-In-One構成用の設定になっており、 ほとんどのポートが全てのアドレスにバインドされ、全ての接続元からアクセス可能になるようfirewalldが設定されます。

実環境をセットアップする場合は、 設定ファイル一覧のAnsible セットアップ時の設定 を参照し、適切な設定を行ってください。

1.1.3. セットアップの実行

次のコマンドでAnsible playbookを実行して、ICE Backend 環境を作成します。

$ ansible-playbook -i hosts_inventory site.yml

  ...

PLAY RECAP ****************************************************************
 (対象サーバのIPアドレス)     : ok=XXX  changed=YYY  unreachable=0    failed=0

エラーが発生することなく(failed=0)完了していることを確認してください。

エラーが発生している場合、 ansible_ice_backend.log のエラー内容を確認してください。

Playbookの中では、ICE Backendに同梱されているOSSの他に、各サーバグループごとの動作に必要な下記依存パッケージをyum経由でインストール/アップデートしています。

[Red Hat Enterprise Linux 7.x / CentOS 7.x]

  • mq_servers
    • socat
  • db_servers
    • 依存パッケージは特にありません
  • api_servers
    • 依存パッケージは特にありません
  • 共通
    • openssl 1.0.2以上

1.1.4. ライセンスファイルの配置

ICE Backendのインストールディレクトリ(デフォルトは/opt/nec/pf/ice)にライセンスファイルを配置します。

複数サーバ構成によるセットアップを行った場合, mq_servers, api_servers に指定したサーバにファイルを配置します。

ファイルを配置後、下記ICE Backendのサービスを再起動します。

$ sudo systemctl restart ice-backendapi1

$ sudo systemctl restart ice-msgrouter-core