Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Agent deb packages are available for different architectures under Agent releases. For more information check section "Agent installation and registration".

Configuration after installation Open Horizon Management Hub and Agent

...

Code Block
curl -s http://<HUB-machine-ip-addres>:3090/v1/admin/version

Sample output

Code Block
2.78.0

Investigate:

https://github.com/open-horizon/anax/blob/master/docs/api.md

Trying to configure agent - THE FOLLOWING IS NOT A GUIDE BUT JUST MY NOTES

Firstly the problem seems to be that agent is not configured.

Code Block
titleAgent hzn node list
ubuntu@ubuntu:~$ hzn node list
{
  "id": "node1",
  "organization": null,
  "pattern": null,
  "name": null,
  "nodeType": null,
  "token_last_valid_time": "",
  "token_valid": null,
  "ha": null,
  "configstate": {
    "state": "unconfigured",
    "last_update_time": ""
  },
  "configuration": {
    "exchange_api": "http://192.168.100.32:3090/v1/",
    "exchange_version": "2.78.0",
    "required_minimum_exchange_version": "2.44.0",
    "preferred_exchange_version": "2.76.0",
    "mms_api": "http://192.168.100.32:9443",
    "architecture": "arm",
    "horizon_version": "2.29.0-498"
  }
}
ubuntu@ubuntu:~$ 

Key generation

Code Block
pcube@PF1JYLUV:~$ ssh ubuntu@192.168.100.32
ubuntu@192.168.100.32's password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information disabled due to load higher than 1.0

* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.

https://ubuntu.com/blog/microk8s-memory-optimisation

0 updates can be applied immediately.


Last login: Mon Aug 2 16:08:52 2021
ubuntu@ubun2:~$ export HZN_ORG_ID=myorg
ubuntu@ubun2:~$ export HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
ubuntu@ubun2:~$ ls -al
total 132
drwxr-xr-x 3 ubuntu ubuntu 4096 Jul 29 23:00 .
drwxr-xr-x 3 root root 4096 Jul 29 20:55 ..
-rw------- 1 ubuntu ubuntu 345 Jul 29 23:27 .bash_history
-rw-r--r-- 1 ubuntu ubuntu 220 Feb 25 2020 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25 2020 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jul 29 20:55 .cache
-rw-r--r-- 1 ubuntu ubuntu 807 Feb 25 2020 .profile
-rw-r--r-- 1 ubuntu ubuntu 0 Jul 29 20:58 .sudo_as_admin_successful
-rwxr-xr-x 1 root root 57457 Jul 29 22:25 deploy-mgmt-hub.sh
-rw-r--r-- 1 root root 1380 Jul 29 22:53 docker-compose-agbot2.yml
-rw-r--r-- 1 root root 5848 Jul 29 22:53 docker-compose.yml
-rw-r--r-- 1 root root 111 Jul 29 23:00 node.policy.json
-rwxr-xr-x 1 root root 14163 Jul 29 22:53 test-mgmt-hub.sh
-rwxr-xr-x 1 root root 9155 Jul 29 22:53 test-sdo.sh
ubuntu@ubun2:~$ env | grep "HZN"
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
ubuntu@ubun2:~$ vim open_horizon_exports.sh
ubuntu@ubun2:~$ vim .bashrc
ubuntu@ubun2:~$ vim .bashrc
ubuntu@ubun2:~$ . .bashrc
ubuntu@ubun2:~$ env | grep "HZN"
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
ubuntu@ubun2:~$ sudo reboot
[sudo] password for ubuntu:
ubuntu@ubun2:~$ Connection to 192.168.100.32 closed by remote host.
Connection to 192.168.100.32 closed.
pcube@PF1JYLUV:~$ ssh ubuntu@192.168.100.32
ubuntu@192.168.100.32's password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information disabled due to load higher than 1.0

* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.

https://ubuntu.com/blog/microk8s-memory-optimisation

0 updates can be applied immediately.


Last login: Mon Aug 2 16:10:14 2021 from 192.168.100.22
ubuntu@ubun2:~$ env | grep "HZN"
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
ubuntu@ubun2:~$ hzn agreement list
[
{
"name": "Policy for myorg/node1 merged with myorg/policy-ibm.helloworld_1.0.0",
"current_agreement_id": "faf1ba0cfc9ec7344d985b23856427c54841d773f75a9ffa8a90db5a1db9ceca",
"consumer_id": "IBM/agbot",
"agreement_creation_time": "2021-07-29 23:01:06 +0000 UTC",
"agreement_accepted_time": "2021-07-29 23:01:09 +0000 UTC",
"agreement_finalized_time": "2021-07-29 23:01:22 +0000 UTC",
"agreement_execution_start_time": "2021-07-29 23:01:12 +0000 UTC",
"agreement_data_received_time": "",
"agreement_protocol": "Basic",
"workload_to_run": {
"url": "ibm.helloworld",
"org": "IBM",
"version": "1.0.0",
"arch": "amd64"
}
}
]
ubuntu@ubun2:~$ git clone https://github.com/TheMosquito/easy-open-horizon.git
Cloning into 'easy-open-horizon'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 26 (delta 10), reused 12 (delta 2), pack-reused 0
Unpacking objects: 100% (26/26), 7.56 KiB | 595.00 KiB/s, done.
ubuntu@ubun2:~$ ls
deploy-mgmt-hub.sh docker-compose.yml node.policy.json test-mgmt-hub.sh
docker-compose-agbot2.yml easy-open-horizon open_horizon_exports.sh test-sdo.sh
ubuntu@ubun2:~$ cd easy-open-horizon/
ubuntu@ubun2:~/easy-open-horizon$ tree

Command 'tree' not found, but can be installed with:

sudo snap install tree # version 1.8.0+pkg-3fd6, or
sudo apt install tree # version 1.8.0-1

See 'snap info tree' for additional versions.

ubuntu@ubun2:~/easy-open-horizon$ ls
LICENSE Makefile README.md pattern.json service.json
ubuntu@ubun2:~/easy-open-horizon$ vim Makefile
ubuntu@ubun2:~/easy-open-horizon$ vim service.json
ubuntu@ubun2:~/easy-open-horizon$ make publish-service
Using Exchange Org ID: "myorg"
Error: stat /home/ubuntu/.hzn/keys/service.private.key: no such file or directory. Please create the signing key.
make: *** [Makefile:20: publish-service] Error 7
ubuntu@ubun2:~/easy-open-horizon$ ls ~/.hzn
ls: cannot access '/home/ubuntu/.hzn': No such file or directory
ubuntu@ubun2:~/easy-open-horizon$ cd /
ubuntu@ubun2:/$ find | grep "service.private.key"
find: ‘./var/lib/polkit-1’: Permission denied


ubuntu@ubun2:/$ find | grep -v "Permission denied" | grep "service.private.key"
find: ‘./var/lib/polkit-1’: Permission denied


ubuntu@ubun2:/$ find | grep -v "Permission denied" | grep service.private.key
find: ‘./var/lib/polkit-1’: Permission denied

ubuntu@ubun2:/$ hzn exchange user list
{
"myorg/admin": {
"password": "********",
"email": "not@used",
"admin": true,
"hubAdmin": false,
"lastUpdated": "2021-07-29T22:58:16.508975Z[UTC]",
"updatedBy": "root/root"
}
}
ubuntu@ubun2:/$ hzn key create "SoftServer" "przemyslawcuber@gmail.com"
Creating RSA PSS private and public keys, and an x509 certificate for distribution. This is a CPU-intensive operation and, depending on key length and platform, may take a while. Key generation on an amd64 or ppc64 system using the default key length will complete in less than 1 minute.
Created keys:
/home/ubuntu/.hzn/keys/service.private.key
/home/ubuntu/.hzn/keys/service.public.pem
ubuntu@ubun2:/$ make publish-service
make: *** No rule to make target 'publish-service'. Stop.
ubuntu@ubun2:/$ cd -
/home/ubuntu/easy-open-horizon
ubuntu@ubun2:~/easy-open-horizon$ make publish-service
Using Exchange Org ID: "myorg"
Checking private key file format ...
Verifying public key file ...
Signing service...
Pulling eclipse-mosquitto:1.6.9...
Error: could not inspect image eclipse-mosquitto:1.6.9: Get "http://unix.sock/images/eclipse-mosquitto:1.6.9/json": dial unix /var/run/docker.sock: connect: permission denied.
make: *** [Makefile:20: publish-service] Error 7
ubuntu@ubun2:~/easy-open-horizon$ hzn version
Horizon CLI version: 2.29.0-515
Horizon Agent version: 2.29.0-515
ubuntu@ubun2:~/easy-open-horizon$ hzn exchange version
2.78.0
ubuntu@ubun2:~/easy-open-horizon$ cat pattern.json
{
"name": "$PATTERN_NAME",
"services": [
{
"serviceUrl": "$SERVICE_NAME",
"serviceOrgid": "$HZN_ORG_ID",
"serviceArch": "$ARCH",
"serviceVersions": [ { "version": "$SERVICE_VERSION" } ]
}
]
}

ubuntu@ubun2:~/easy-open-horizon$ hzn exchange pattern publish -f pattern.json
Warning: environment variable 'PATTERN_NAME' is referenced in input file, but not defined in the environment.
Warning: environment variable 'SERVICE_NAME' is referenced in input file, but not defined in the environment.
Warning: environment variable 'SERVICE_VERSION' is referenced in input file, but not defined in the environment.
Error: Failed to validate the secret binding. Error retrieving service myorg/ version from the Exchange. expecting at least 1 service myorg , got 0
ubuntu@ubun2:~/easy-open-horizon$ cp pattern.json pattern.json_bak
ubuntu@ubun2:~/easy-open-horizon$ vim pattern.json
ubuntu@ubun2:~/easy-open-horizon$ hzn exchange pattern publish -f pattern.json
ERROR: logging before flag.Parse: E0802 16:51:42.863611 21036 service.go:396] Exchange RPC expecting 1 service glen.helloworld local-cluster 1.0.0 response: &{map[] 0}
Error: Failed to validate the secret binding. Error retrieving service local-cluster/glen.helloworld version 1.0.0 from the Exchange. expecting 1 service glen.helloworld local-cluster 1.0.0, got 0
ubuntu@ubun2:~/easy-open-horizon$ cd ..
ubuntu@ubun2:~$ ls
deploy-mgmt-hub.sh docker-compose.yml node.policy.json test-mgmt-hub.sh
docker-compose-agbot2.yml easy-open-horizon open_horizon_exports.sh test-sdo.sh
ubuntu@ubun2:~$ vim deploy-mgmt-hub.sh
ubuntu@ubun2:~$ sudo docker container ps
[sudo] password for ubuntu:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
89d149cab8af openhorizon/ibm.helloworld_amd64 "/bin/sh -c /service…" 3 days ago Up About an hour faf1ba0cfc9ec7344d985b23856427c54841d773f75a9ffa8a90db5a1db9ceca-ibm.helloworld
38852a8c7957 openhorizon/amd64_agbot:latest "/bin/sh -c /usr/hor…" 3 days ago Up 59 minutes (healthy) 127.0.0.1:3110->8080/tcp, 0.0.0.0:3111->8083/tcp agbot
71cc38d60c24 openhorizon/sdo-owner-services:latest "/bin/sh -c $WORKDIR…" 3 days ago Up About an hour (healthy) 0.0.0.0:8040->8040/tcp, 0.0.0.0:8042->8042/tcp, 0.0.0.0:9008->9008/tcp sdo-owner-services
324a6a4009af openhorizon/amd64_cloud-sync-service:latest "/usr/edge-sync-serv…" 3 days ago Up About an hour (healthy) 0.0.0.0:9443->8080/tcp css-api
587afb807273 openhorizon/amd64_exchange-api:latest "/bin/sh -c '/usr/bi…" 3 days ago Up About an hour (healthy) 8083/tcp, 0.0.0.0:3090->8080/tcp exchange-api
15e71961ae9b mongo:latest "docker-entrypoint.s…" 3 days ago Up About an hour (healthy) 27017/tcp mongo
98b48ab9ccaf postgres:latest "docker-entrypoint.s…" 3 days ago Up About an hour (healthy) 5432/tcp postgres
ubuntu@ubun2:~$ ls
deploy-mgmt-hub.sh docker-compose-agbot2.yml docker-compose.yml easy-open-horizon node.policy.json open_horizon_exports.sh test-mgmt-hub.sh test-sdo.sh
ubuntu@ubun2:~$ 

Agent configuration - it has to be investigated.

https://open-horizon.github.io/docs/installing/registration.html

https://open-horizon.github.io/docs/installing/automated_install.html

https://github.com/open-horizon/SDO-support/blob/master/README-1.10.md

https://open-horizon.github.io/docs/installing/many_install.html#batch-install

Code Block
ubuntu@ubuntu:/$ cd /usr/horizon/bin/
ubuntu@ubuntu:/usr/horizon/bin$ ls
agent-install.sh agent-uninstall.sh anax edgeNodeFiles.sh horizon-container hzn
ubuntu@ubuntu:/usr/horizon/bin$ sudo -s ./agent-install.sh -i 'css:' -p IBM/pattern-ibm.helloworld -w '*' -T 120
2021-08-03 19:44:04 AGENT_INSTALL_ZIP: (from default value)
2021-08-03 19:44:04 INPUT_FILE_PATH: css: (from command line flag)
2021-08-03 19:44:04 INPUT_FILE_PATH adjusted to: css:/api/v1/objects/IBM/agent_files
2021-08-03 19:44:04 AGENT_CFG_FILE: (from default value)
2021-08-03 19:44:04 AGENT_VERBOSITY: 3 (from environment variable)
2021-08-03 19:44:04 ERROR: A value for HZN_ORG_ID must be specified
ubuntu@ubuntu:/usr/horizon/bin$ env | grep HZN
HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
HZN_DEVICE_ID=node1
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1/
HZN_FSS_CSSURL=http://192.168.100.32:9443/
ubuntu@ubuntu:/usr/horizon/bin$ export HZN_ORG_ID=myorg
ubuntu@ubuntu:/usr/horizon/bin$ sudo -s ./agent-install.sh -i 'css:' -p IBM/pattern-ibm.helloworld -w '*' -T 120
2021-08-03 19:44:50 AGENT_INSTALL_ZIP: (from default value)
2021-08-03 19:44:50 INPUT_FILE_PATH: css: (from command line flag)
2021-08-03 19:44:50 INPUT_FILE_PATH adjusted to: css:/api/v1/objects/IBM/agent_files
2021-08-03 19:44:50 AGENT_CFG_FILE: (from default value)
2021-08-03 19:44:50 AGENT_VERBOSITY: 3 (from environment variable)
2021-08-03 19:44:50 ERROR: A value for HZN_ORG_ID must be specified
ubuntu@ubuntu:/usr/horizon/bin$ sudo export HZN_ORG_ID=myorg
sudo: export: command not found
ubuntu@ubuntu:/usr/horizon/bin$ sudo su
root@ubuntu:/usr/horizon/bin#
root@ubuntu:/usr/horizon/bin# HZN_ORG_ID=myorg
root@ubuntu:/usr/horizon/bin# export HZN_ORG_ID=myorg
root@ubuntu:/usr/horizon/bin# env | grep HZN
HZN_ORG_ID=myorg
root@ubuntu:/usr/horizon/bin# ./agent-install.sh -i 'css:' -p IBM/pattern-ibm.helloworld -w '*' -T 120
2021-08-03 19:46:08 AGENT_INSTALL_ZIP: (from default value)
2021-08-03 19:46:08 INPUT_FILE_PATH: css: (from command line flag)
2021-08-03 19:46:08 INPUT_FILE_PATH adjusted to: css:/api/v1/objects/IBM/agent_files
2021-08-03 19:46:08 AGENT_CFG_FILE: (from default value)
2021-08-03 19:46:08 AGENT_VERBOSITY: 3 (from environment variable)
2021-08-03 19:46:08 HZN_ORG_ID: myorg (from environment variable)
2021-08-03 19:46:08 HZN_MGMT_HUB_CERT_PATH: (from default value)
2021-08-03 19:46:08 AGENT_CERT_FILE: agent-install.crt (from default value)
2021-08-03 19:46:08 ERROR: A value for HZN_FSS_CSSURL must be specified
root@ubuntu:/usr/horizon/bin# export HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
root@ubuntu:/usr/horizon/bin# export HZN_DEVICE_ID=node1
root@ubuntu:/usr/horizon/bin# export HZN_ORG_ID=myorg
root@ubuntu:/usr/horizon/bin# export HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
root@ubuntu:/usr/horizon/bin# export HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1/
root@ubuntu:/usr/horizon/bin# export HZN_FSS_CSSURL=http://192.168.100.32:9443/
root@ubuntu:/usr/horizon/bin# ./agent-install.sh -i 'css:' -p IBM/pattern-ibm.helloworld -w '*' -T 120
2021-08-03 19:47:57 AGENT_INSTALL_ZIP: (from default value)
2021-08-03 19:47:57 INPUT_FILE_PATH: css: (from command line flag)
2021-08-03 19:47:57 INPUT_FILE_PATH adjusted to: css:/api/v1/objects/IBM/agent_files
2021-08-03 19:47:57 AGENT_CFG_FILE: (from default value)
2021-08-03 19:47:57 AGENT_VERBOSITY: 3 (from environment variable)
2021-08-03 19:47:57 HZN_ORG_ID: myorg (from environment variable)
2021-08-03 19:47:57 HZN_MGMT_HUB_CERT_PATH: (from default value)
2021-08-03 19:47:57 AGENT_CERT_FILE: agent-install.crt (from default value)
2021-08-03 19:47:57 HZN_FSS_CSSURL: http://192.168.100.32:9443/ (from environment variable)
2021-08-03 19:47:57 HZN_EXCHANGE_USER_AUTH: ****** (from environment variable)
2021-08-03 19:47:57 HZN_EXCHANGE_NODE_AUTH: (from default value)
2021-08-03 19:47:57 Downloading file http://192.168.100.32:9443/api/v1/objects/IBM/agent_files/agent-install.cfg/data ...
2021-08-03 19:47:58 AGENT_SKIP_REGISTRATION: false (from default value)
2021-08-03 19:47:58 HZN_EXCHANGE_URL: http://192.168.100.32:3090/v1/ (from environment variable)
2021-08-03 19:47:58 HZN_AGBOT_URL: http://127.0.0.1:3111 (from configuration file)
2021-08-03 19:47:58 HZN_SDO_SVC_URL: http://127.0.0.1:9008/api (from configuration file)
2021-08-03 19:47:58 NODE_ID: (from default value)
2021-08-03 19:47:58 HZN_DEVICE_ID: node1 (from environment variable)
2021-08-03 19:47:58 HZN_NODE_ID: (from default value)
2021-08-03 19:47:58 HZN_EXCHANGE_PATTERN: IBM/pattern-ibm.helloworld (from command line flag)
2021-08-03 19:47:58 HZN_NODE_POLICY: (from default value)
2021-08-03 19:47:58 AGENT_WAIT_FOR_SERVICE: * (from command line flag)
2021-08-03 19:47:58 AGENT_WAIT_FOR_SERVICE_ORG: (from default value)
2021-08-03 19:47:58 AGENT_REGISTRATION_TIMEOUT: 120 (from command line flag)
2021-08-03 19:47:58 AGENT_OVERWRITE: false (from default value)
2021-08-03 19:47:58 AGENT_SKIP_PROMPT: false (from default value)
2021-08-03 19:47:58 AGENT_ONLY_CLI: false (from default value)
2021-08-03 19:47:58 AGENT_INSTALL_ZIP: agent-install-files.tar.gz (from default value)
2021-08-03 19:47:58 AGENT_DEPLOY_TYPE: device (from default value)
2021-08-03 19:47:58 AGENT_WAIT_MAX_SECONDS: 30 (from default value)
2021-08-03 19:47:58 OS: linux, Distro: ubuntu, Distro Release: 20.04, Distro Code Name: focal, Architecture: armhf
2021-08-03 19:47:58 NODE_ID_MAPPING_FILE: node-id-mapping.csv (from default value)
2021-08-03 19:47:58 PKG_APT_KEY: (from default value)
2021-08-03 19:47:58 APT_REPO_BRANCH: updates (from default value)
2021-08-03 19:47:58 AGENT_IMAGE_TAR_FILE: amd64_anax.tar.gz (from default value)
2021-08-03 19:47:58 WARNING: Using node id from HZN_DEVICE_ID
2021-08-03 19:47:58 Node type: device
2021-08-03 19:47:58 Updating apt package index...
2021-08-03 19:48:51 Installing prerequisites, this could take a minute...
./agent-install.sh: line 1169: netstat: command not found
2021-08-03 19:49:04 Verifying that node node1 in the exchange is type device (if it exists)...
2021-08-03 19:49:05 Updating /etc/default/horizon ...
2021-08-03 19:49:06 Downloading file http://192.168.100.32:9443/api/v1/objects/IBM/agent_files/horizon-agent-linux-deb-armhf.tar.gz/data ...
2021-08-03 19:49:06 ERROR: HTTP code 403 from: downloading http://192.168.100.32:9443/api/v1/objects/IBM/agent_files/horizon-agent-linux-deb-armhf.tar.gz/data, stdout: Unauthorized. The object may not exist or be public.
root@ubuntu:/usr/horizon/bin#

Registering the agent

https://open-horizon.github.io/docs/installing/advanced_man_install.html

Code Block
ubuntu@ubuntu:~$ eval export $(cat agent-install.cfg)
cat: agent-install.cfg: No such file or directory
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x HOME="/home/ubuntu"
declare -x HZN_DEVICE_ID="node1"
declare -x HZN_DEVICE_TOKEN="Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u"
declare -x HZN_EXCHANGE_URL="http://192.168.100.32:3090/v1/"
declare -x HZN_EXCHANGE_USER_AUTH="admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO"
declare -x HZN_FSS_CSSURL="http://192.168.100.32:9443/"
declare -x HZN_ORG_ID="myorg"
declare -x LANG="C.UTF-8"
declare -x LC_ADDRESS="C.UTF-8"
declare -x LC_IDENTIFICATION="C.UTF-8"
declare -x LC_MEASUREMENT="C.UTF-8"
declare -x LC_MONETARY="C.UTF-8"
declare -x LC_NAME="C.UTF-8"
declare -x LC_NUMERIC="C.UTF-8"
declare -x LC_PAPER="C.UTF-8"
declare -x LC_TELEPHONE="C.UTF-8"
declare -x LC_TIME="C.UTF-8"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="ubuntu"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
declare -x MOTD_SHOWN="pam"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
declare -x PWD="/home/ubuntu"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.100.22 33980 22"
declare -x SSH_CONNECTION="192.168.100.22 33980 192.168.100.23 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -x USER="ubuntu"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/snapd/desktop"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_CLASS="user"
declare -x XDG_SESSION_ID="1"
declare -x XDG_SESSION_TYPE="tty"
ubuntu@ubuntu:~$ hzn exchange pattern list IBM/
[
"IBM/pattern-ibm.hello-mms-amd64",
"IBM/pattern-ibm.hello-mms-arm64",
"IBM/pattern-ibm.cpu2evtstreams",
"IBM/pattern-ibm.hello-mms-arm",
"IBM/pattern-ibm.hello-mms",
"IBM/pattern-nginx-operator-amd64",
"IBM/pattern-ibm.helloworld"
]
ubuntu@ubuntu:~$ hzn register -p IBM/pattern-ibm.helloworld
Horizon Exchange base URL: http://192.168.100.32:3090/v1
Using node ID 'node1' from the Horizon agent
Generated random node token
Updating node token...
Will proceeed with the given pattern IBM/pattern-ibm.helloworld.
Initializing the Horizon node with node type 'device'...
Note: no input file was specified. This is only valid if none of the services need variables set.
However, if there is 'userInput' specified in the node already in the Exchange, the userInput will be used.
Changing Horizon state to configured to register this node with Horizon...
Horizon node is registered. Workload agreement negotiation should begin shortly. Run 'hzn agreement list' to view.
ubuntu@ubuntu:~$ hzn agreement list
[]
ubuntu@ubuntu:~$ hzn agreement list
[]
ubuntu@ubuntu:~$ hzn register -p IBM/pattern-ibm.helloworld
Horizon Exchange base URL: http://192.168.100.32:3090/v1
Error: this Horizon node is already registered or in the process of being registered. If you want to register it differently, run 'hzn unregister' first.
ubuntu@ubuntu:~$ hzn agreement list
[]
ubuntu@ubuntu:~$ watch hzn agreement list
ubuntu@ubuntu:~$ 

Worked after

https://github.com/open-horizon/examples/blob/master/edge/services/helloworld/README.md#preconditions

Code Block
ubuntu@ubuntu:/usr/horizon/bin$ ls
agent-install.cfg  agent-uninstall.sh  edgeNodeFiles.sh                      horizon-container
agent-install.sh   anax                horizon-agent-linux-deb-armhf.tar.gz  hzn
ubuntu@ubuntu:/usr/horizon/bin$ cat agent-install.cfg 
HZN_EXCHANGE_URL=http://127.0.0.1:3090/v1
HZN_FSS_CSSURL=http://127.0.0.1:9443/
HZN_AGBOT_URL=http://127.0.0.1:3111
HZN_SDO_SVC_URL=http://127.0.0.1:9008/api
ubuntu@ubuntu:/usr/horizon/bin$ env | grep HZN
HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
HZN_DEVICE_ID=node1
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1/
HZN_FSS_CSSURL=http://192.168.100.32:9443/
ubuntu@ubuntu:/usr/horizon/bin$ vim agent-install.cfg 
ubuntu@ubuntu:/usr/horizon/bin$ cp agent-install.cfg agent-install.cfg_bak
ubuntu@ubuntu:/usr/horizon/bin$ ls
agent-install.cfg      agent-uninstall.sh  horizon-agent-linux-deb-armhf.tar.gz
agent-install.cfg_bak  anax                horizon-container
agent-install.sh       edgeNodeFiles.sh    hzn
ubuntu@ubuntu:/usr/horizon/bin$ vim agent-install.cfg

[No write since last change]
/bin/bash: wq: command not found

shell returned 127

Press ENTER or type command to continue
ubuntu@ubuntu:/usr/horizon/bin$ ls -al
total 90712
drwxr-xr-x 2 ubuntu ubuntu     4096 Aug  5 22:51 .
drwxr-xr-x 5 ubuntu ubuntu     4096 Jul 19 16:34 ..
-rw-r--r-- 1 root   root        158 Aug  3 19:47 agent-install.cfg
-rw-r--r-- 1 ubuntu ubuntu      158 Aug  5 22:50 agent-install.cfg_bak
-rwxr-xr-x 1 ubuntu ubuntu   125388 Jul  9 17:39 agent-install.sh
-rwxr-xr-x 1 ubuntu ubuntu    13038 Jul  9 17:39 agent-uninstall.sh
-rwxr-xr-x 1 ubuntu ubuntu 49993557 Jul  9 17:39 anax
-rwxr-xr-x 1 ubuntu ubuntu    24010 Jul  9 17:39 edgeNodeFiles.sh
-rw-r--r-- 1 root   root         53 Aug  3 20:00 horizon-agent-linux-deb-armhf.tar.gz
-rwxr-xr-x 1 ubuntu ubuntu    13699 Jul  9 17:39 horizon-container
-rwxr-xr-x 1 ubuntu ubuntu 42686814 Jul  9 17:39 hzn
ubuntu@ubuntu:/usr/horizon/bin$ sudo vim agent-install.cfg
ubuntu@ubuntu:/usr/horizon/bin$ eval export $(cat agent-install.cfg)
ubuntu@ubuntu:/usr/horizon/bin$ env | grep HZN
HZN_SDO_SVC_URL=http://192.168.100.32:9008/api
HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
HZN_DEVICE_ID=node1
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
HZN_AGBOT_URL=http://127.0.0.1:3111
HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1
HZN_FSS_CSSURL=http://192.168.100.32:9443/
ubuntu@ubuntu:/usr/horizon/bin$ hzn exchange user list
{
  "myorg/admin": {
    "password": "********",
    "email": "not@used",
    "admin": true,
    "hubAdmin": false,
    "lastUpdated": "2021-07-29T22:58:16.508975Z[UTC]",
    "updatedBy": "root/root"
  }
}
ubuntu@ubuntu:/usr/horizon/bin$ hzn unregister -f
Unregistering this node, cancelling all agreements, stopping all workloads, and restarting Horizon...
Waiting for Horizon node unregister to complete: No Timeout specified ...
Waiting for agent service to restart and checking the node configuration state...
Horizon node unregistered. You may now run 'hzn register ...' again, if desired.
ubuntu@ubuntu:/usr/horizon/bin$ hzn register -p IBM/pattern-ibm.helloworld -s ibm.helloworld --serviceorg IBM
Horizon Exchange base URL: http://192.168.100.32:3090/v1
Using node ID 'node1' from the Horizon agent
Generated random node token
Updating node token...
Will proceeed with the given pattern IBM/pattern-ibm.helloworld.
Initializing the Horizon node with node type 'device'...
Note: no input file was specified. This is only valid if none of the services need variables set.
However, if there is 'userInput' specified in the node already in the Exchange, the userInput will be used.
Changing Horizon state to configured to register this node with Horizon...
Horizon node is registered. Workload services should begin executing shortly.
Waiting for up to 60 seconds for following services to start:
	IBM/ibm.helloworld
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: no agreements formed yet
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: agreement proposal has been received
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: agreement is accepted
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: service is created
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: service is created
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: service is created
Timeout waiting for some services to successfully start. Analyzing possible reasons for the timeout...

Currently, there are no errors recorded in the node's event log.
Using the 'hzn deploycheck all -p' command to verify that node, service configuration and pattern is compatible.
Neither node id nor node policy is specified. Getting node policy from the local node.
Neither node id nor node user input file is specified. Getting node user input from the local node.
{
  "compatible": true,
  "reason": {
    "IBM/ibm.helloworld_1.0.0_arm": "Compatible"
  }
}

Analysis complete.
ubuntu@ubuntu:/usr/horizon/bin$ hzn service log -f ibm.helloworld
Found service ibm.helloworld with service id 434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3.
Displaying log messages of container ibm.helloworld for service ibm.helloworld with service id 434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3.
Use ctrl-C to terminate this command.
Aug  5 22:57:39 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:42 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:45 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:48 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:51 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:54 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:57:57 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:00 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:03 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:06 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:09 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:12 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:15 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:18 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:21 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:24 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:27 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:30 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:33 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:39 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:39 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:42 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:45 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:48 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:51 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:54 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:58:57 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:00 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:03 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:06 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:10 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:12 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:15 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:18 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:21 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:24 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:27 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:30 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:33 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:36 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:39 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:42 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:45 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:48 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:51 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:54 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 22:59:57 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:00 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:03 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:06 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:09 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:13 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:16 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:19 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:22 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:25 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:28 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:31 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:34 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:37 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:40 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:43 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:46 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:49 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:52 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:55 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:00:58 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:01 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:04 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:07 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:10 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:13 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:16 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:19 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:22 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:25 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:28 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:31 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:34 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:37 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:40 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:43 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:46 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:49 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:52 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:55 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:01:58 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:01 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:04 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:07 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:10 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:13 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:16 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:19 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:22 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:25 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:28 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:31 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:34 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:37 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:40 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:43 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:46 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:49 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:52 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:55 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:02:58 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:01 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:04 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:07 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:10 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:13 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:16 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:19 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:22 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:25 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:28 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:31 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:34 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:37 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:40 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:43 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:46 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:49 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:52 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:55 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:03:58 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:01 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:04 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:07 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:10 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:13 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
Aug  5 23:04:16 ubuntu workload-434df597a891b9219bc1624dd5e4831072f0856df7b7d8f608b920452bb2b6c3_ibm.helloworld[3166]: node1 says: Hello World!!
^C
ubuntu@ubuntu:/usr/horizon/bin$ ls
agent-install.cfg      agent-uninstall.sh  horizon-agent-linux-deb-armhf.tar.gz
agent-install.cfg_bak  anax                horizon-container
agent-install.sh       edgeNodeFiles.sh    hzn
ubuntu@ubuntu:/usr/horizon/bin$ cat agent-install.cfg
HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1
HZN_FSS_CSSURL=http://192.168.100.32:9443/
HZN_AGBOT_URL=http://127.0.0.1:3111
HZN_SDO_SVC_URL=http://192.168.100.32:9008/api
ubuntu@ubuntu:/usr/horizon/bin$ cat agent-install.cfg_bak 
HZN_EXCHANGE_URL=http://127.0.0.1:3090/v1
HZN_FSS_CSSURL=http://127.0.0.1:9443/
HZN_AGBOT_URL=http://127.0.0.1:3111
HZN_SDO_SVC_URL=http://127.0.0.1:9008/api
ubuntu@ubuntu:/usr/horizon/bin$ ls ~/
horizon-agent-linux-deb-armhf.tar.gz  horizon_2.29.0-498_armhf.deb  open_horizon_exports.sh
horizon-cli_2.29.0-498_armhf.deb      hzn_node_list_agent
ubuntu@ubuntu:/usr/horizon/bin$ ls -al ~/
total 65100
drwxr-xr-x 5 ubuntu ubuntu     4096 Aug  5 22:51 .
drwxr-xr-x 3 root   root       4096 Feb  1  2021 ..
-rw------- 1 ubuntu ubuntu     4912 Aug  5 00:09 .bash_history
-rw-r--r-- 1 ubuntu ubuntu      220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu     3799 Aug  2 16:19 .bashrc
drwx------ 2 ubuntu ubuntu     4096 Feb  1  2021 .cache
drwx------ 3 ubuntu ubuntu     4096 Feb  1  2021 .config
-rw-r--r-- 1 ubuntu ubuntu      807 Feb 25  2020 .profile
drwx------ 2 ubuntu ubuntu     4096 Jul 20 17:59 .ssh
-rw-r--r-- 1 ubuntu ubuntu        0 Feb  1  2021 .sudo_as_admin_successful
-rw------- 1 ubuntu ubuntu     3820 Aug  5 22:51 .viminfo
-rw-rw-r-- 1 ubuntu ubuntu      227 Jul 19 16:10 .wget-hsts
-rw-rw-r-- 1 ubuntu ubuntu 33293155 Jul 10 01:03 horizon-agent-linux-deb-armhf.tar.gz
-rw-r--r-- 1 ubuntu ubuntu 15233916 Jul 10 01:02 horizon-cli_2.29.0-498_armhf.deb
-rw-r--r-- 1 ubuntu ubuntu 18067840 Jul 10 01:02 horizon_2.29.0-498_armhf.deb
-rw-rw-r-- 1 ubuntu ubuntu      469 Jul 19 18:14 hzn_node_list_agent
-rw-rw-r-- 1 ubuntu ubuntu      280 Aug  2 16:19 open_horizon_exports.sh
ubuntu@ubuntu:/usr/horizon/bin$ cat ~/open_horizon_exports.sh 
export HZN_ORG_ID=myorg
export HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
export HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
export HZN_DEVICE_ID=node1

export HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1/
export HZN_FSS_CSSURL=http://192.168.100.32:9443/

ubuntu@ubuntu:/usr/horizon/bin$ 

Probably works

...

.78.0

Investigate:

https://github.com/open-horizon/anax/blob/master/docs/api.md

Agent installation and registration

Install docker

follow

https://docs.docker.com/engine/install/ubuntu/

Install required dependencies by Agent.
Code Block
sudo apt-get install jq


then download and install packages agent package from

https://github.com/open-horizon/anax/releases

...

https://open-horizon.github.io/docs/installing/advanced_man_install.html

to change

Code Block
/etc/default/horizon

like following

Code Block
ubuntu@ubuntu:~$ cat /etc/default/horizon
HZN_EXCHANGE_URL=http://192.168.100.32:3090/v1
HZN_FSS_CSSURL=http://192.168.100.32:9443/
HZN_AGBOT_URL=http://127.0.0.1:3111
HZN_MGMT_HUB_CERT_PATH=
HZN_DEVICE_ID=node1
HZN_AGENT_PORT=8510
ubuntu@ubuntu:~$

Next restart horizon service to apply changed settings.

Code Block
sudo systemctl restart horizon.service
Check configuration
Code Block
ubuntu@ubuntu:~$ hzn version
Horizon CLI version: 2.29.0-537
Horizon Agent version: 2.29.0-537
ubuntu@ubuntu:~$

...

Code Block
ubuntu@ubuntu:~$ hzn node list
{
  "id": "node1",
  "organization": "myorg",
  "pattern": "IBM/pattern-ibm.helloworld",
  "name": "node1",
  "nodeType": "device",
  "token_last_valid_time": "2021-08-10 00:15:28 +0000 UTC",
  "token_valid": true,
  "ha": false,
  "configstate": {
    "state": "configured",
    "last_update_time": "2021-08-10 00:15:29 +0000 UTC"
  },
  "configuration": {
    "exchange_api": "http://192.168.100.32:3090/v1/",
    "exchange_version": "2.78.0",
    "required_minimum_exchange_version": "2.44.0",
    "preferred_exchange_version": "2.81.0",
    "mms_api": "http://192.168.100.32:9443",
    "architecture": "arm64",
    "horizon_version": "2.29.0-537"
  }
}
ubuntu@ubuntu:~$ 

NextCheck available patterns

Code Block
ubuntu@ubuntu:~$ hzn exchange pattern list IBM/
[
  "IBM/pattern-ibm.cpu2evtstreams",
  "IBM/pattern-ibm.hello-mms-arm",
  "IBM/pattern-ibm.hello-mms",
  "IBM/pattern-nginx-operator-amd64",
  "IBM/pattern-ibm.helloworld",
  "IBM/pattern-ibm.hello-mms-amd64",
  "IBM/pattern-ibm.hello-mms-arm64"
]
ubuntu@ubuntu:~$ 

...

Register agent. Instead of

Code Block
hzn register -p IBM/pattern-ibm.helloworld

run

Code Block
hzn register -p IBM/pattern-ibm.helloworld -s ibm.helloworld --serviceorg IBM
from 
https://github.com/open-horizon/examples/blob/master/edge/services/helloworld/README.md#preconditions
Code Block
ubuntu@ubuntu:~$ hzn register -p IBM/pattern-ibm.helloworld -s ibm.helloworld --serviceorg IBM
Horizon Exchange base URL: http://192.168.100.32:3090/v1
Using node ID 'node1' from the Horizon agent
Generated random node token
Updating node token...
Will proceeed with the given pattern IBM/pattern-ibm.helloworld.
Initializing the Horizon node with node type 'device'...
Note: no input file was specified. This is only valid if none of the services need variables set.
However, if there is 'userInput' specified in the node already in the Exchange, the userInput will be used.
Changing Horizon state to configured to register this node with Horizon...
Horizon node is registered. Workload services should begin executing shortly.
Waiting for up to 60 seconds for following services to start:
	IBM/ibm.helloworld
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: agreement proposal has been received
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: agreement is accepted
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: service is created
Status of the services you are watching:
	IBM/ibm.helloworld 	Progress so far: execution is started
Status of the services you are watching:
	IBM/ibm.helloworld 	Success
ubuntu@ubuntu:~$ 

...

Code Block
ubuntu@ubuntu:~$  hzn agreement list
[
  {
    "name": "pattern-ibm.helloworld_ibm.helloworld_IBM_arm64 merged with pattern-ibm.helloworld_ibm.helloworld_IBM_arm64",
    "current_agreement_id": "8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6",
    "consumer_id": "IBM/agbot",
    "agreement_creation_time": "2021-08-10 00:15:37 +0000 UTC",
    "agreement_accepted_time": "2021-08-10 00:15:40 +0000 UTC",
    "agreement_finalized_time": "2021-08-10 00:15:48 +0000 UTC",
    "agreement_execution_start_time": "2021-08-10 00:15:48 +0000 UTC",
    "agreement_data_received_time": "",
    "agreement_protocol": "Basic",
    "workload_to_run": {
      "url": "ibm.helloworld",
      "org": "IBM",
      "version": "1.0.0",
      "arch": "arm64"
    }
  }
]
ubuntu@ubuntu:~$ 

Check whether docker container is running.

Code Block
ubuntu@ubuntu:~$   sudo docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS         PORTS     NAMES
6a8c986c5955   openhorizon/ibm.helloworld_arm64   "/bin/sh -c /service…"   4 minutes ago   Up 4 minutes             8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6-ibm.helloworld

Check logs from running container.

Code Block
ubuntu@ubuntu:~$   sudo hzn service log -f ibm.helloworld
Found service ibm.helloworld with service id 8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6.
Displaying log messages of container ibm.helloworld for service ibm.helloworld with service id 8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6.
Use ctrl-C to terminate this command.
Aug 10 00:15:48 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:15:51 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:15:54 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:15:57 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:16:00 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:16:03 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!
Aug 10 00:16:06 ubuntu workload-8c61ebcabbafcf380758739116cb5603bed33d64984862a910c20c56a6b003b6_ibm.helloworld[1934]: node1 says: Hello World!!

...