4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM CloudAdvent Calendar 2021

Day 2

IBM Cloud で Node-RED セットアップ (2021年12月)

Last updated at Posted at 2021-12-01

執筆時点で、IBM Cloud LitePlan で Node-RED スターター・キット を使った CloudFoundry の Node-RED 環境が作れないです。
**でもっ!IBM Cloud でっ!Node-RED をっ!使いたいっ!**という気持ちを常に持っているので、なんとかして動かす手順をまとめました。

「コマンド一発でデプロイ!」「クリック一発でデプロイ!」な環境も作れそうな気がするけれど、今はやり方がわからないので1つ1つ手作業で準備していきました。

ライトアカウントの場合、CloudFoundryアプリとcloudantは1つしか作成できないため、すでに作成済みの場合はエラーになります。

Cloud Shell 設定

Node-RED をデプロイするために、CLI を使用して設定します。 Cloud Shellを使用するのがオススメです。あらかじめ下記項目を設定しておく必要があります。

  • リージョン設定
  • リソースグループ設定
  • 組織(Org)
  • スペース

※筆者は us-south(ダラス)リージョンで検証しました。us-south をご利用であればスムーズに環境構築できると思います。

設定手順記事 - Qiita IBM Cloud Shell を使う

Cloudant

Node-RED のフローを格納するためのデータベースを準備します。

Cloudant の設定は、CLI で行います。
IBM Cloudant CLI

次項でコピペ可能なコマンドを紹介します。

インスタンスプロビジョニング

Node-RED のフローや設定を保存する cloudant のインスタンスをプロビジョニングします

Cloudant作成コマンド
ibmcloud resource service-instance-create \
node-red-db \
cloudantnosqldb \
lite \
us-south \
-p '{"legacyCredentials": true}'

node-red-dbという名前のCloudantNoSqlDBインスタンスをus-southリージョンに作成します。古い形式の認証方式を有効にします。

※us-south の部分は、ご自身が選択しているリージョンを設定してください

成功すると以下のようなレスポンスが表示されます

Creating service instance node-red-db in resource group Default of account [Account]'s Account as [User]...
OK
Service instance node-red-db was created.
                     
Name:             node-red-db   
ID:               crn:v1:bluemix:public:cloudantnosqldb:us-south:a/16f6f09579814077a8e2d4cca68d3e4a:5d08c019-5d35-43f6-a005-4dfdfe31f6ad::   
GUID:             5d08c019-5d35-43f6-a005-4dfdfe31f6ad   
Location:         us-south   
State:            provisioning   
Type:             service_instance   
Sub Type:            
Allow Cleanup:    false   
Locked:           false   
Created at:       2021-11-20T11:08:50Z   
Updated at:       2021-11-20T11:08:52Z   
Last Operation:                   
                  Status    create in progress      
                  Message   Started create instance operation     

エイリアス作成

CloudFoundryと連携するためのエイリアスを作成します

エイリアス作成コマンド
ibmcloud resource service-alias-create node-red-db-alias --instance-name node-red-db

node-red-dbインスタンスにnode-red-db-aliasというエイリアスを作成します。

成功すると以下のようなレスポンスが表示されます

Creating alias node-red-db-alias of service instance node-red-db from resource group Default into space dev...
OK
Service alias node-red-db-alias was successfully created.
                       
ID:                 crn:v1:bluemix:public:cloudantnosqldb:us-south:a/16f6f09579814077a8e2d4cca68d3e4a:5d08c019-5d35-43f6-a005-4dfdfe31f6ad:resource-alias:4ddf2cd0-bfb3-44c5-9a13-c3d0e28c44f6   
Name:               node-red-db-alias   
State               active   
Service Instance:   node-red-db   
Space:              dev   
Tags:                  

Node-RED ソースコード編集

Github に公開されている IBM/node-red-app のソースコードをそのままデプロイしても正しく動作しなかったので、一部ソースコードを変更します。

リポジトリクローンコマンド
git clone https://github.com/IBM/node-red-app

設定読み込み部分修正

公開されていたソースのままだと、Cloud Foundry と cloudant の接続がうまくいかなかったので、環境変数から接続情報を取得するように更新します。
VCAP変数 ドキュメント

bluemix-settings.js
//const cloudantUrl = IBMCloudEnv.getString('cloudant_url'); ← コメントに
// 下記4行をコピペ
var VCAP = process.env.VCAP_SERVICES;
var cloudantEnv = VCAP ? JSON.parse(VCAP)['cloudantNoSQLDB'] : null;
var credential = cloudantEnv?.length ? cloudantEnv[0].credentials : null;
const cloudantUrl = credential?.url || IBMCloudEnv.getString('cloudant_url');

IBMのリポジトリをフォークした、修正済みソースファイルはこちらのリポジトリで公開しています

Cloud Foundry

Node-REDの実行環境を準備します

manifest.yaml

Cloud Foundry を設定するためのマニュフェストファイルを作成します。

manifest.yaml ドキュメント

manifest.yamlサンプル
---
version: 1
applications:
- name: dummy
  memory: 256M
  instances: 1
  • memory : 利用メモリ。 ライトアカウントでは256MByteまでしか利用できませんので、256M を指定します
  • instances : インスタンス数。 LiteAccount では1つしか立ち上がらないので 1 を指定します

デプロイ

node-redアプリデプロイコマンド
ibmcloud cf push [アプリケーション名]

※アプリケーション名はご自身の好きな名前を入力してください

世界中でユニークな名前である必要があります。すでに他で利用されている名前を設定するとエラーになります

バインド

Cloud Foundry の Node-RED と、cloudant を連携(バインド)します

node-redとcloudantをバインドするコマンド
ibmcloud resource service-binding-create \
node-red-db-alias \
[アプリケーション名] \
Manager \
-n Connect-cloudant-nodered

node-red-db-alias[アプリケーション名]をバインドします。

サービスバインドが作成されたら CloudFoundry を再起動します。

ibmcloud cf restart [アプリケーション名]

※アプリケーション名は、CloudFoundryデプロイで指定した名前を入力してください

動作確認

ブラウザで IBM Cloud にアクセスすると、この手順で作成されて Cloud Foundry アプリケーションが一覧に表示されます。

アプリURLにアクセス をクリックすると快適なNode-RED環境が表示されます。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?