Oracle CloudのAlways Freeインスタンスへenebularエージェント実行環境をインストールしてみた

# はじめに

2022年7月にエージェント実行環境がリリースされましたが、まだ使ったことがなかったので、試してみました。

https://blog.enebular.com/enebular/agent-execution-env/

https://blog.enebular.com/function/practical-usage-of-the-agent-execution-environment/

# enebular agentとの違い

使い勝手については、従来のenebular agentと大きな違いはありませんが、大きな違いは自分でAWS IoTリソースを用意する必要がないことです。
つまり、AWS IoTリソースも含めてenebularから提供されるため、完全に無料でデバイス管理機能を使用することが可能です。

![スクリーンショット 2022-11-26 21.41.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2a508330-55a9-1815-21aa-c9c08cd20c37.png)

後述のエージェント実行環境をインストールしたシェル環境にログインし、systemctlコマンドで動作状況を確認すると、確かにAWS IoT agentが動作しています。

```bash
$ sudo systemctl status enebular-agent-ubuntu.service
● enebular-agent-ubuntu.service - Enebular agent
     Loaded: loaded (/etc/systemd/system/enebular-agent-ubuntu.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-11-26 20:06:16 JST; 1h 40min ago
       Docs: https://docs.enebular.com/
   Main PID: 233260 (node)
      Tasks: 29 (limit: 1085)
     Memory: 202.1M
     CGroup: /system.slice/enebular-agent-ubuntu.service
             ├─233260 node /home/ubuntu/enebular-runtime-agent/ports/awsiot/bin/enebular-awsiot-agent --enable-syslog --daemon-mode --user ubuntu
             ├─233271 /home/ubuntu/nodejs-v14.19.1/bin/node /home/ubuntu/enebular-runtime-agent/ports/awsiot/bin/enebular-awsiot-agent --start-core --enable-syslog --daemon-mode --user ubuntu
             └─234254 node-red
```

![スクリーンショット 2022-11-26 21.46.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e8970e4c-e5c9-03df-302a-2bba698e549e.png)

# エージェント実行環境のインストール手順

公式ドキュメントに記載されています。

https://docs.enebular.com/ja/GetStarted/AgentExecutionEnvironmentTutorial.html

## Oracle CloudのAlways Freeインスタンスへエージェント実行環境をインストール

エージェント実行環境はRaspberry Piなどのデバイスへインストールすることを想定していますが、クラウド上のVMへインストールすることも可能です。

![スクリーンショット 2022-11-26 21.53.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ee934612-03a0-937c-04dd-7b7fbcebf646.png)

Oracle Cloudのコンソール画面で、OSに「Canonical Ubuntu Linux」を指定してインスタンス(VM)を作成します。

![enebular_oracle_1_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0bd022e9-dffb-98e0-3456-d9e6075dd581.jpeg)

Oracle Cloudのインスタンス(VM)はubuntuユーザーで作成されるため、enebularのコンソール画面で「インストールユーザー」を「ubuntu」に変更します。

![enebular_install_1_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a8919564-2bf7-c3c3-eae8-5029924dee58.jpeg)

「インストールコマンド」をコピーして、Oracle Cloudのインスタンス(VM)で実行します。

enebularのコンソール画面のログでNode-REDの起動と動作を確認できます。

![enebular_log_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2a2d5cdd-672d-2a41-45ad-beca1d7d3b2e.jpeg)

# エージェント実行環境のリモートメンテナンス

公式ドキュメントに記載されています。

https://docs.enebular.com/ja/Device/RemoteMaintenance.html

enebularのコンソール画面の設定でキーペアを作成し、エージェント実行環境のリモートメンテナンスを「ON」にすると、リモートからSSHでエージェント実行環境へログインできます。

![enebular_keypair_1_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/35c02369-14a1-017a-7d41-61f6793e73ab.jpeg)

![enebular_remote_1_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2c96cda9-c657-e880-7d3b-d56af8c695f0.jpeg)

Oracle Cloudのインスタンス(VM)へログインし、systemctlコマンドで動作状況を確認するとsshdが起動しています。

![enebular_sshd_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/64bc46ff-a7d9-db06-9c40-c189f3974156.jpeg)

また、netstatコマンドで確認するとポート:10022でsshdが起動しています。

(リモートメンテナンス:OFF)
![enebular_sshd_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/afb32329-37e4-8889-a3bd-db1d5f85634b.jpeg)

(リモートメンテナンス:ON)
![enebular_sshd_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/af8ce6ff-f371-98e8-ca35-f9aba718add3.jpeg)

# エージェント実行環境でフローエディタ画面を有効にする

enebularのコンソール画面、または、enebular editorからフローをデプロイする使い方が想定されているため、デフォルトではフローエディタ画面が無効化されています。
enebular agentは開発者モードが用意されており、起動モードをノーマルモードから開発者モードへ変更すると、enebular editorのリモートモードでフローを直接編集できます。

https://docs.enebular.com/ja/EnebularAgent/Developer-Mode.html

しかし、エージェント実行環境は、開発者モードがサポートされていないため、フローを直接編集することができません。
エージェント実行環境でフローを直接編集(フローエディタを有効化)したい場合は、
/home/ubuntu/enebular-runtime-agent/node-red/.node-red-config/settings.js
を変更し、systemctlコマンドでエージェント実行環境をリスタートします。

(変更前)

```javascript:settings.js
const fs = require('fs')
const path = require('path')

module.exports = {
  userDir: __dirname,
  flowFile: 'flows.json',
  httpAdminRoot: false
};
```

(変更後)

```javascript:settings.js
const fs = require('fs')
const path = require('path')

module.exports = {
  userDir: __dirname,
  flowFile: 'flows.json',
  httpAdminRoot: '/'
};
```

```bash
$ sudo systemctl restart enebular-agent-ubuntu.service
```

![enebular_devmode_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e77a403e-3393-4762-12b7-34be4d15e3c1.jpeg)