{"id":13648973,"url":"https://github.com/Azure/cyclecloud-container","last_synced_at":"2025-04-22T11:33:28.319Z","repository":{"id":66003783,"uuid":"144031510","full_name":"Azure/cyclecloud-container","owner":"Azure","description":"Build files for creating a containerized Azure CycleCloud install","archived":false,"fork":false,"pushed_at":"2023-05-31T18:47:57.000Z","size":120,"stargazers_count":4,"open_issues_count":2,"forks_count":7,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-06T12:13:14.746Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Azure.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-08-08T15:13:43.000Z","updated_at":"2023-07-25T14:19:02.000Z","dependencies_parsed_at":"2024-01-14T11:00:09.915Z","dependency_job_id":"c416bf57-8fe3-42e2-aae2-ae595146a68b","html_url":"https://github.com/Azure/cyclecloud-container","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2Fcyclecloud-container","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2Fcyclecloud-container/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2Fcyclecloud-container/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2Fcyclecloud-container/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Azure","download_url":"https://codeload.github.com/Azure/cyclecloud-container/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250232607,"owners_count":21396668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:04:40.784Z","updated_at":"2025-04-22T11:33:27.983Z","avatar_url":"https://github.com/Azure.png","language":"Shell","readme":"# CycleCloud container distribution\n\n## Prerequisites\n\nA CycleCloud linux `deb` package is required to build a container image.  This can\nbe downloaded from the official AzureCycleCloud \n[download center page](https://www.microsoft.com/en-us/download/details.aspx?id=57182).\n\nOnce downloaded, copy the `deb` package to the top level of this project.\n\n## Build\n\nNo special arguments are needed to build the docker image.  At the top level of\nthis project, run:\n\n    docker build . -t myrepo/cyclecloud:$ver\n\n### Customization\n\nThe build process can utilize custom:\n\n- Custom CycleCloud components by adding them to a `./components` directory.\n- Custom CycleCloud records by adding them to a `./records` directory.\n\nThe image build process will configure the installation with these resources\nincluded. \n\nTo build a customized AzureCycleCloud container image:\n\n1. Download the CycleCloud installer from the Azure download site, place in top\n   level project directory\n2. Add any custom records to a `./records` directory.\n3. Add any custom components to a `./components` directory.\n4. Build the container image.\n\n### Runtime\n\n#### Notice\n\n_If the CycleCloud service fails the container process will terminate and all \ncluster data will be lost. To create durable recovery points please refer\n to the [Persistent Storage](#persiststorage) section._\n\nThe container runs the web application available for http (80) and http (443). \nSince CycleCloud is running a JVM, the HeapSize of the JVM and the\nmemory allocated to the container should be coordinate.  We recommend setting\nHeapSize to 1/2 the container memory allocation.  This can be done with the\n`docker run -m` flag and an environment variable `JAVA_HEAP_SIZE` specified in\n`MB`.\n\n    docker run -m 2G -e \"JAVA_HEAP_SIZE=1024\" -p 8080:80 -p 8443:443 myrepo/cyclecloud:$ver\n\n### Supported versions\n\nSupported versions can be found in the product [dockerhub page](https://hub.docker.com/r/microsoft/azure-cyclecloud/). \nThe image can be launched as an Azure Container instance (using\nexisting resource group, location and preferred container and dns names). We\nhave SSL certificate generation included so if you specify the arguments twice,\nonce for az cli and again to set environment variables, then the container is\nable to establish valid SSL certificates, automatically. \n\n```bash\n#!/bin/bash\nResourceGroup=\"rg-name\"\nLocation=\"westus2\"\nCIName=\"ci-name\"\nCIDNSName=\"ci-name\"\n\naz container create -g ${ResourceGroup} \\\n  --location ${Location} \\\n  --name ${CIName} \\\n  --dns-name-label ${CIDNSName} \\\n  --image mcr.microsoft.com/hpc/azure-cyclecloud \\\n  --ip-address public \\\n  --ports 80 443 \\\n  --cpu 2 --memory 4 \\\n  -e JAVA_HEAP_SIZE=2048\n```\n\nThis command will launch the container and the cyclecloud UI will be available\nat: `https://${CIDNSName}.${Location}.azurecontainer.io`.\n\nYou can optionally add an additional environment variable for the\nfully qualified domain name, in which case CycleCloud will try to\ncreate valid a SSL certificate:\n\n```bash\nFQDN=\"https://${CIDNSName}.${Location}.azurecontainer.io\"\n...\n-e JAVA_HEAP_SIZE=2048 FQDN=${FQDN}\n```\n\n### Recover the SSH keypair\n\nCycleCloud creates a keypair to be used for administrative access to nodes.  This keypair will be printed to the stdout of the container image and should be retained.\n\nA unique ssh keypair for the container appear in the standard output of\nthe container process.  As the message indicates, retain this keypair for\nadmin access to the CycleCloud clusters. In the Azure Container Instance this is in the _Container_ menu under the _Logs_ tab.\n\n```text\nPrivate Key for admin access to nodes.  Retain for cyclecloud cli and ssh access.\n-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEAhdhrHdfirGEEsps2R+EZP5Zq/2TLA/JQPNYwFtcTvA0cJ3O0\nwRR/U8HdDswFpAvj2T00ptQqWFb7prMB1/5ualKFjYkJ/7Azxx13F+qWh3z14dDq\nxwUPhQleZ9XPaIAYDew5eGibxuaFbkXmmxWsacW1K9hXFwXnq58Rs23Q/x4/xw08\nFDcIvh7FjR6h13zOj6He0sRW7z0myRgj88nPziiWYB5pm9jykHnNUWiYwYssSuDX\n...\nIfDYB4iMRwKiJdXIs773U6JtuoRWj5IbcIjxdK6YzayyTZJJw3ejEWl2F6aSrMvs\nW7d1HjlAz0LMqNLV3XLTThXXxK5dOBbExDYvE2KQe/6Wf9ZSfLAr8BcZe+PXPESX\nmVa3tFI9HfSz2qjsB1YLRfZYiMR+BzCI9uOyu9bIu2VLUX1fjgIDJ6XYtcOQAJP0\n6y5HC9t1sZuhiaYHQvkh0YUTLZejch4BCzd9EknsccHxEjU+Fbf8CVjm1ZU=\n-----END RSA PRIVATE KEY-----\n```\n\n### Autoconfig\n\nTo bring up an Azure CycleCloud container with a user pre-created, add the\nfollowing environment variables to the docker run command:\n\n    $ docker run -m 4G -p 80:80 -p 443:443 \\\n    -e \"JAVA_HEAP_SIZE=2048\" \\\n    -e CYCLECLOUD_AUTOCONFIG=true \\\n    -e CYCLECLOUD_USERNAME=$YOUR-USER-NAME \\\n    -e CYCLECLOUD_PASSWORD=$PASSWORD \\\n    -e CYCLECLOUD_USER_PUB_KEY=$SSH_PUBLIC_KEY \\\n    mcr.microsoft.com/hpc/azure-cyclecloud\n\nWith this, all clusters nodes started will have this user created and the SSH\npublic key staged in their authorized_keys file. You can also login to the\nCycleCloud web interface using the username and password as credentials.\n\n### \u003ca name=\"persiststorage\"\u003e\u003c/a\u003ePersistent Storage\n\nRetaining data from Azure CycleCloud can be important.  Should the Azure Container \nInstance fail data could be completely lost making it impossible to recover the\nmanaged running state of HPC clusters.  It's strongly advised to configure the\nAzure Container Instance to be backed with durable storage from [Azure File Share](https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-create-file-share).\n\nAzure CycleCloud container will use durable storage for:\n\n- Logs\n- Backup Recovery Points\n\nProvided that an Azure File Share is mounted at the following location:\n- /azurecyclecloud\n\nFor a better understanding of setting up Azure File Share, please see the \ndocumentation demonstrating the [integration with Azure Container Instance](https://docs.microsoft.com/en-us/azure/container-instances/container-instances-volume-azure-files). \n\n```bash\naz container create \\\n  --resource-group ${ResourceGroup} \\\n  --location ${Location} \\\n  --name ${Name} \\\n  --dns-name-label ${DNSName} \\\n  --image mcr.microsoft.com/hpc/azure-cyclecloud \\\n  --ip-address public \\\n  --ports 80 443 \\\n  --cpu 2 \\\n  --memory 4 \\\n  -e JAVA_HEAP_SIZE=2048 \\\n  --azure-file-volume-account-name ${STORAGE_ACCOUNT_NAME} \\\n  --azure-file-volume-account-key ${STORAGE_KEY} \\\n  --azure-file-volume-share-name ${SHARE_NAME} \\\n  --azure-file-volume-mount-path /azurecyclecloud\n```\n\nUsing the above example, a storage share will be mounted at `/azurecyclecloud` and will collect logs and backup points. In this configuration\nthe Azure CycleCloud data can be recovered from failure or used to\nmigrate to hosting in another service, such as Virtual Machine.","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAzure%2Fcyclecloud-container","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAzure%2Fcyclecloud-container","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAzure%2Fcyclecloud-container/lists"}