hzn-cli
v0.9.0
Published
Open Horizon CLI toolkit helps streamline the process of preparing node agents and perform tasks between orgs environments
Downloads
986
Maintainers
Readme
hzn-cli
IEAM / Open Horizon Toolkit
Open Horizon toolkit is a CLI built with Typescript for the NodeJS developers. It is intended to help streamline the process of preparing & deploying applications/services for node agents and to provide a set of convient methods to perform various tasks between orgs environments.
This toolkit comes with the following convenient commnands
A complete guide is available below
Pre-release version of hzn-cli, howto?
Auto-dock
NOTE: Auto-dock is a containerized service that comes with hzn-cli built into this service. Please refer to https://github.com/playground/auto-dock
To setup Edge Node Agent, All-In-One, Agent with Mesh, running CLI & agent in containers and etc.
curl -sSL https://raw.githubusercontent.com/playground/hzn-cli/main/install.sh --output install.sh && bash ./install.sh
Some example commands to work with Mesh
oh deploy createDeployment --name frontend --image quay.io/skupper/hello-world-frontend
oh deploy exposeDeployment --name frontend --port 8080 --type LoadBalancer
oh deploy createDeployment --name backend --image quay.io/skupper/hello-world-backend
oh deploy exposeDeployment --name backend --port 8080
oh deploy meshNodeList --name agent-5c4cb8c677-fs4hr
oh deploy meshAgreementList --name agent-5c4cb8c677-c4skq
oh deploy registerMeshAgent
oh deploy unregisterMeshAgent --name agent-5c4cb8c677-c4skq
oh deploy meshPodList
oh deploy meshServiceList
OR
To setup manually.
npm i -g hzn-cli
After installlation run
oh deploy -h
Deploy <action> to Org <org>
Positionals:
action Available actions: addPolicy addRemoteNodePolicy appendSupport
autoSetup autoSetupAnaxInContainer autoSetupCliInContainer
autoSetupCliOnly autoSetupContainer buildAndPublish buildMMSImage
buildPublishAndRegister buildServiceImage checkConfigState cleanUp
createHznKey deleteObject editDeploymentPoicy editNodePolicy
editPolicy editServicePolicy getDeviceArch isConfigured listAgreement
listAllServices listDeploymentPolicy listExchangeNode
listExchangeNodePolicy listNode listNodePattern listNodes listObject
listOrg listPattern listPolicy listService listServicePolicy
publishAndRegister publishMMSObject publishMMSObjectPattern
publishMMSObjectPolicy publishMMSPattern publishMMSService
publishPattern publishService publishServiceAndPattern pushMMSImage
pushServiceImage registerAgent removeAnaxContainer removeCliContainer
removeDeploymentPolicy removeNode removeObject removeOrg removeService
reviewPolicy reviewServiceDefinition setup setupManagementHub
showHznInfo stopRemoveContainer test uninstallHorizon unregisterAgent
updateHznInfo [string] [required]
Options:
--version Show version number [boolean]
--org Organization to be deployed to [string]
--config_path Specify path to your configuration, default is
./config [string]
--name Name of service, pattern, policy & etc. [string]
--object_type Type of object [string]
--object_id Id of object to be published [string]
--object Object file to be published [string]
--pattern Pattern name [string]
--watch watch = true/false [string]
--filter filter search result = arm, amd64, arm64 & etc
[string]
--skip_config_update Do not prompt for config updates = true/false
[string]
--config_file Provide config json file for auto setup [string]
-h, --help Show help [boolean]
To setup your environment, you will need to run
oh deploy setup
This will prompt you for your credential, Docker Hub Id & other configuration parameters. This will also install and setup hzn envirnoment for you if it hasn't been installled.
To execute any of the "oh" actions
oh deploy <action>, for example: oh deploy registerAgent
After installation and initialization, you can test out the cli by running
oh deploy test
_ _ _
| |__ ____ _ __ ___ | | (_)
| '_ \ |_ / | '_ \ _____ / __| | | | |
| | | | / / | | | | |_____| | (__ | | | |
|_| |_| /___| |_| |_| \___| |_| |_|
$$$ test biz /home/ubuntu/config
it works...arm
process completed.
Here are a few examples of actions you can perform with "oh", default org is "biz"
Build service docker image
oh deploy buildServiceImage
Push service docker image
oh deploy pushServiceImage
Publish service to management hub
oh deploy publishService
Publish service pattern
oh deploy publishPattern
Publish MMS service
oh deploy publishMMSService
Publish MMS pattern and specify path to the policy.json
oh deploy publishMMSPattern --config_path /home/pi/config
Publish MMS Object file
oh deploy publishMMSObject --object_type=object_detection --object_id=config.json --object=/Users/jeff/Downloads/demo-model/demo/version1/model.zip --pattern=pattern-pi-mms-service-arm
*Register agent (org=demo)-
oh deploy registerAgent --org demo
Register agent with Policy
oh deploy addPolicy
Complete guide to set up an agent on a brand new device running on Ubuntu 20.04
- Run curl -sSL https://raw.githubusercontent.com/playground/hzn-cli/main/install.sh --output install.sh && bash ./install.sh
- 1) Cli-And-Anax 3) CLI-In-Container 5) Run-In-Containers 7) OH-Mesh 9) Quit
2) CLI-Only 4) Anax-In-Container 6) All-In-One 8) Confirm
Choose your environment setup: 7
OH-Mesh, Set up OH Agent with Mesh, choose <Confirm> to continue setup.
Choose your environment setup: 8
You have chosen OH-Mesh
- 1) None
2) K3S
3) K8S
4) Confirm
5) Quit
Choose your kube to install: 2
Setup K3S for OH Agent with Mesh, choose <Confirm> to continue setup.
Choose your kube to install: 4
- You have chosen K3S for your setup
1) Config-File
2) Confirm
3) Help
4) Quit
Continue with setup: 1
- Please provide absolute path to configuration file, then choose <Confirm> to continue setup.
example.json
Continue with setup: 2
The above selections will automate the setup process to install the agent and cli for you.
- example.json template
{
"org": {
"HZN_ORG_ID": "org-name",
"HZN_DEVICE_TOKEN": "",
"HZN_DEVICE_ID": "device-name",
"HZN_EXCHANGE_USER_AUTH": "************",
"HZN_EXCHANGE_URL": "http://xxx.xxx.xxx.xxx:3090/v1",
"HZN_FSS_CSSURL": "http://xxx.xxx.xxx.xxx:9443/",
"HZN_AGBOT_URL": "http://xxx.xxx.xxx.xxx:3111",
"HZN_SDO_SVC_URL": "http://xxx.xxx.xxx.xxx:9008/api",
"HZN_AGENT_PORT": "8510",
"HZN_CSS": true,
"CONFIG_CERT_PATH": "cert-file-with-absolute-path",
"ANAX": "https://github.com/open-horizon/anax/releases/latest/download/agent-install.sh"
},
"service": {
"SERVICE_NAME": "chunk-saved-model-service",
"SERVICE_CONTAINER_NAME": "chunk-saved-model-service",
"SERVICE_VERSION": "1.0.0",
"SERVICE_VERSION_RANGE_UPPER": "1.0.0",
"SERVICE_VERSION_RANGE_LOWER": "1.0.0",
"SERVICE_CONTAINER_CREDS": "",
"VOLUME_MOUNT": "/mms-shared",
"MMS_SHARED_VOLUME": "mms_shared_volume",
"MMS_OBJECT_TYPE": "chunk_object_detection",
"MMS_OBJECT_ID": "chunk_config.json",
"MMS_OBJECT_FILE": "config/config.json",
"MMS_CONTAINER_CREDS": "",
"MMS_CONTAINER_NAME": "chunk-mms-service",
"MMS_SERVICE_NAME": "chunk-mms-service",
"MMS_SERVICE_VERSION": "1.0.1",
"MMS_SERVICE_FALLBACK_VERSION": "1.0.0",
"UPDATE_FILE_NAME": "model.zip"
},
"folders": [
"/var/tmp/horizon/horizon1/fss-domain-socket",
"/var/tmp/horizon/horizon1/ess-auth",
"/var/tmp/horizon/horizon1/secrets",
"/var/tmp/horizon/horizon1/nmp"
],
"local": {
"YOUR_DOCKERHUB_ID": "playbox21",
"DOCKER_REGISTRY": "hub.docker.com",
"DOCKER_TOKEN": "dckr_pat_wQJZTXR2WfGLohIHnqQylRMRIpk"
},
"anaxInContainer": "docker run -d -t --restart always --name horizon1 --privileged -p 127.0.0.1:8081:8510 -e DOCKER_NAME=horizon1 -e HZN_VAR_RUN_BASE=/var/tmp/horizon/horizon1 -v /var/run/docker.sock:/var/run/docker.sock -v /var/horizon:/etc/default/horizon:ro -v /var/agent-install.crt:/var/agent-install.crt -v horizon1_var:/var/horizon/ -v horizon1_etc:/etc/horizon/ -v /var/tmp/horizon/horizon1:/var/tmp/horizon/horizon1 openhorizon/amd64_anax:2.30.0-952",
"cliInContainer": "docker run -d -it --restart always --name hzn-cli --privileged --network=\"host\" -v /var/run/docker.sock:/var/run/docker.sock -v /var/agent-install.crt:/var/agent-install.crt -e HORIZON_URL=http://localhost:8081 -e HZN_ORG_ID=${HZN_ORG_ID} -e HZN_EXCHANGE_USER_AUTH=${HZN_EXCHANGE_USER_AUTH} -e HZN_FSS_CSSURL=${HZN_FSS_CSSURL} -e HZN_EXCHANGE_URL=${HZN_EXCHANGE_URL} -e version=v2.30.0-952 playbox21/hzn-cli_amd64"
}
Complete guide to set up an Open Horizon Management Hub
- oh deploy setupManagementHub
_ _ _
| |__ ____ _ __ ___ | | (_)
| '_ \ |_ / | '_ \ _____ / __| | | | |
| | | | / / | | | | |_____| | (__ | | | |
|_| |_| /___| |_| |_| \___| |_| |_|
setupManagementHub biz
[
{
name: 'HZN_LISTEN_IP',
default: '127.0.0.1',
ipList: [ '127.0.0.1', 'xxx.xxx.xxx.xxx' ],
required: true
},
{ name: 'HZN_TRANSPORT', default: 'https', required: true },
{ name: 'EXCHANGE_USER_ORG', default: 'myorg', required: true }
]
Key in new value or (leave blank) press Enter to keep current value:
prompt: HZN_LISTEN_IP: (127.0.0.1) xxx.xxx.xxx.xxx // external ip
prompt: HZN_TRANSPORT: (https) http
prompt: EXCHANGE_USER_ORG: (myorg) myhub
{
HZN_LISTEN_IP: 'xxx.xxx.xxx.xxx',
HZN_TRANSPORT: 'https',
EXCHANGE_USER_ORG: 'myhub'
}
Would you like to proceed to install Management Hub: Y/n?
prompt: answer: y
Install Docker on Ubuntu
Note: Don't use sudo snap install docker
- sudo apt update
- sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt-cache policy docker-ce
- sudo apt install docker-ce -y
- sudo systemctl status docker
More details here: https://phoenixnap.com/kb/install-docker-on-ubuntu-20-04