You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 26 Next »

Basic information about Open Horizon project playlist on YouTube.

Open Horizon project playlist on YouTube

Open Horizon quick start

Open Horizon HUB and Agent installation

The following sample setup has been done with Ubuntu server 20.04 on Virtual Machine as a HUB and Ubuntu server 20.04 on raspberry PI 3B as Agent.


Ubuntu server installation described under

https://open-horizon.github.io/common-requests/install.html

The first movie shows Ubuntu Server installation. The same steps has to be performed on both HUB and Agent. The second movie shows procedure of Open Horizon HUB installation that was performed on VM.

Open Horizon HUB installation


The "deploy-mgmt-hub.sh" script has to downloaded  README.md first and variable "HZN_LISTEN_IP" set to 0.0.0.0.

curl -sSL https://raw.githubusercontent.com/open-horizon/devops/master/mgmt-hub/deploy-mgmt-hub.sh

Then run the script.


deploy-mgmt-hub.sh output
sudo ./deploy-mgmt-hub.sh
[sudo] password for ubuntu:
------- Checking input and initializing...
Management hub services will listen on http://0.0.0.0
Updating apt-get package index...
Installing prerequisites, this could take a minute...
------- Downloading template files...
Substituting environment variables into template files...
------- Downloading/starting Horizon management hub services...
Downloading management hub docker images...
Pulling openhorizon/amd64_agbot:latest ...
Pulling openhorizon/amd64_exchange-api:latest ...
Pulling openhorizon/amd64_cloud-sync-service:latest ...
Pulling postgres:latest ...
Pulling mongo:latest ...
Pulling openhorizon/sdo-owner-services:latest ...
Starting management hub containers...
Creating network "hzn_horizonnet" with driver "bridge"
Creating volume "hzn_postgresvol" with default driver
Creating volume "hzn_mongovol" with default driver
Creating volume "hzn_agbotmsgkeyvol" with default driver
Creating volume "hzn_ocsdb" with default driver
Pulling postgres (postgres:latest)...
latest: Pulling from library/postgres
33847f680f63: Pull complete
1b09e96014b3: Pull complete
eb49b6d9d1f3: Pull complete
4057ebf78d2d: Pull complete
f92d870e2c4f: Pull complete
b03847575a18: Pull complete
475945131fa9: Pull complete
c042b5a6607d: Pull complete
cfe883b776dc: Pull complete
61af04e5c3eb: Pull complete
4e9965ae9062: Pull complete
7b9708b81aa6: Pull complete
871877336770: Pull complete
Digest: sha256:6647385dd9ae11aa2216bf55c54d126b0a85637b3cf4039ef24e3234113588e3
Status: Downloaded newer image for postgres:latest
Creating postgres ... done
Creating mongo ... done
Creating exchange-api ... done
Creating css-api ... done
Creating sdo-owner-services ... done
Creating agbot ... done
Waiting for the exchange.........
------- Creating the user org, the admin user in both orgs, and an agbot in the exchange...
Creating exchange hub admin user, and the admin user and agbot in the system org...
Creating exchange user org and admin user...
------- Downloading/installing/configuring Horizon agent and CLI...
Downloading the Horizon agent and CLI packages...
Installing the Horizon agent and CLI packages...
Configuring the Horizon agent and CLI...
Warning: can not find a public IP on this host, so the agent-install.cfg file that will be added to CSS will not be usable outside of the this host. You can explicitly specify the public IP via HZN_LISTEN_PUBLIC_IP.
Publishing /tmp/horizon-all-in-1/agent-install.cfg in CSS as public object agent-install.cfg in the IBM org...
Digital sign with SHA1 will be performed for data integrity. It will delay the MMS object publish.
Start hashing the file...
Data hash is generated. Start digital signing with the data hash...
Digital sign finished.
Object agent-install.cfg added to org IBM in the Model Management Service
------- Installing Horizon example services, policies, and patterns...
Using examples repo branch v2.29 derived from the hzn version
Cloning https://github.com/open-horizon/examples.git to /tmp/open-horizon/examples ...
Switching to branch v2.29 ...
Warning: examples branch 'v2.29' does not exist, falling back to the master branch
Publishing services and patterns of edge/services/cpu_percent to IBM org...
Publishing services and patterns of edge/services/gps to IBM org...
Publishing services and patterns of edge/services/helloworld to IBM org...
Publishing deployment policy of edge/services/helloworld to myorg org...
Publishing services and patterns of edge/services/helloMMS to IBM org...
Publishing services and patterns of edge/services/nginx-operator to IBM org...
Publishing deployment policy of edge/services/nginx-operator to myorg org...
Publishing services and patterns of edge/evtstreams/cpu2evtstreams to IBM org...
Publishing deployment policy of edge/evtstreams/cpu2evtstreams to myorg org...
Successfully published all examples to the exchange. Removing /tmp/open-horizon/examples directory.
------- Creating and registering the edge node with policy to run the helloworld Horizon example...
Waiting for the agent to be ready
Horizon Exchange base URL: http://127.0.0.1:3090/v1
Node myorg/node1 does not exist in the Exchange with the specified token, creating/updating it...
node added or updated
Node node1 created.
Will proceeed with the given node policy.
Updating the node policy...
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 180 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: execution is started
Status of the services you are watching:
IBM/ibm.helloworld Success

----------- Summary of what was done:
1. Started Horizon management hub services: agbot, exchange, postgres DB, CSS, mongo DB
2. Created exchange resources: system org (IBM) admin user, user org (myorg) and admin user, and agbot
Automatically generated these passwords/tokens:
EXCHANGE_ROOT_PW=T2lICI9q5xvwtkeLPRrGZkcp5RUSwG
EXCHANGE_HUB_ADMIN_PW=3G84oId3MEk4S5BjOF3m6KRNfph5BT
EXCHANGE_SYSTEM_ADMIN_PW=khDHsRMe4Ca29gPZNp17dDirnbm1W0
AGBOT_TOKEN=aYGhdC7i6JPohkt4LXGkdq7NT99P1U
EXCHANGE_USER_ADMIN_PW=1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
HZN_DEVICE_TOKEN=Zm4Y1wFgrUD2D1MTrtn1UmyBaOnn8u
Important: save these generated passwords/tokens in a safe place. You will not be able to query them from Horizon.
3. Installed and configured the Horizon agent and CLI (hzn)
4. Created a Horizon developer key pair
5. Installed the Horizon examples
6. Created and registered an edge node to run the helloworld example edge service
7. Added the hzn auto-completion file to ~/.bashrc (but you need to source that again for it to take effect in this shell session)

For what to do next, see: https://github.com/open-horizon/devops/blob/master/mgmt-hub/README.md#all-in-1-what-next
Before running the commands in the What To Do Next section, copy/paste/run these commands in your terminal:
export HZN_ORG_ID=myorg
export HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
ubuntu@ubun2:~$

In later steps it is required to manage Docker as a non-root user. Perform the following steps to achieve that.

Create the docker group.

sudo groupadd docker
Add your user to the docker group.
sudo usermod -aG docker ${USER}

Verify that docker containers are running under 0.0.0.0.

ubuntu@ubun2:~$ docker container ps
CONTAINER ID   IMAGE                                         COMMAND                  CREATED      STATUS                       PORTS                                                                    NAMES
89d149cab8af   openhorizon/ibm.helloworld_amd64              "/bin/sh -c /service…"   6 days ago   Up About an hour                                                                                      faf1ba0cfc9ec7344d985b23856427c54841d773f75a9ffa8a90db5a1db9ceca-ibm.helloworld
38852a8c7957   openhorizon/amd64_agbot:latest                "/bin/sh -c /usr/hor…"   6 days ago   Up About an hour (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…"   6 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…"   6 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…"   6 days ago   Up About an hour (healthy)   8083/tcp, 0.0.0.0:3090->8080/tcp                                         exchange-api
15e71961ae9b   mongo:latest                                  "docker-entrypoint.s…"   6 days ago   Up About an hour (healthy)   27017/tcp                                                                mongo
98b48ab9ccaf   postgres:latest                               "docker-entrypoint.s…"   6 days ago   Up About an hour (healthy)   5432/tcp                                                                 postgres
ubuntu@ubun2:~$

Agent installation

Agent deb packages are available for different architectures under Agent releases.

Configuration after installation Open Horizon Management Hub and Agent

Next steps requires setting proper environmental variables on both HUB and Agent sites according to SDO-OH-EXF-dev-simple.

Environemtal variables
export HZN_ORG_ID=myorg
export HZN_EXCHANGE_USER_AUTH=admin:<insert value from installation credentials>
export HZN_DEVICE_TOKEN=<insert value from installation credentials or use random string>
export HZN_DEVICE_ID=node1
export HZN_EXCHANGE_URL=http://<HUB-IP-address-here>:3090/v1/
export HZN_FSS_CSSURL=http://<HUB-IP-address-here>:9443/

HUB requires to set HZN_ORG_ID and HZN_EXCHANGE_USER_AUTH. For Agent all those variables has to be set.

Check configuration

Local HUB variables
ubuntu@ubun2:~$ env | grep HZN
HZN_ORG_ID=myorg
HZN_EXCHANGE_USER_AUTH=admin:1eAVOw1dWRKve5b5KIkRk2PcBjXLnO
Agent environmental variables
ubuntu@ubuntu:~$ 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:~$


NOTE: Environmental variables can be added to ~/.bashrc file so it will be set automatically at startup.


Run commands from How to use Open Horizon on both HUB and Agent to check configuration. Sample output is as follows.

HUB hzn version
ubuntu@ubun2:~$ hzn version
Horizon CLI version: 2.29.0-515
Horizon Agent version: 2.29.0-515
ubuntu@ubun2:~$
HUB hzn node list
ubuntu@ubun2:~$ hzn node list
{
  "id": "node1",
  "organization": "myorg",
  "pattern": "",
  "name": "node1",
  "nodeType": "device",
  "token_last_valid_time": "2021-07-29 23:00:54 +0000 UTC",
  "token_valid": true,
  "ha": false,
  "configstate": {
    "state": "configured",
    "last_update_time": "2021-07-29 23:00:54 +0000 UTC"
  },
  "configuration": {
    "exchange_api": "http://127.0.0.1:3090/v1/",
    "exchange_version": "2.78.0",
    "required_minimum_exchange_version": "2.44.0",
    "preferred_exchange_version": "2.76.0",
    "mms_api": "http://127.0.0.1:9443",
    "architecture": "amd64",
    "horizon_version": "2.29.0-515"
  }
}
ubuntu@ubun2:~$


HUB hzn agreement list
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:~$


Agent hzn version
ubuntu@ubuntu:~$ hzn version
Horizon CLI version: 2.29.0-498
Horizon Agent version: 2.29.0-498
ubuntu@ubuntu:~$


Agent 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:~$ 


Agent hzn agreement list
ubuntu@ubuntu:~$ hzn agreement list
[]
ubuntu@ubuntu:~$


Check whether exchange container is accessible outside on HUB and agent site

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

Sample output

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.

Agent 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


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



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


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:~$ 
  • No labels