{"id":13583221,"url":"https://github.com/deislabs/example-bundles","last_synced_at":"2025-04-06T18:32:05.885Z","repository":{"id":78302977,"uuid":"146039706","full_name":"deislabs/example-bundles","owner":"deislabs","description":"CNAB bundles","archived":true,"fork":false,"pushed_at":"2020-03-12T17:40:47.000Z","size":5916,"stargazers_count":84,"open_issues_count":18,"forks_count":22,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-06T11:07:36.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deislabs.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-08-24T21:02:54.000Z","updated_at":"2025-01-24T00:01:25.000Z","dependencies_parsed_at":"2023-03-01T23:16:36.899Z","dependency_job_id":null,"html_url":"https://github.com/deislabs/example-bundles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deislabs%2Fexample-bundles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deislabs%2Fexample-bundles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deislabs%2Fexample-bundles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deislabs%2Fexample-bundles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deislabs","download_url":"https://codeload.github.com/deislabs/example-bundles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247531113,"owners_count":20953895,"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-01T15:03:20.117Z","updated_at":"2025-04-06T18:32:02.277Z","avatar_url":"https://github.com/deislabs.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# (DEPRECATED) CNAB bundles\n\n⛔ **Notice: This repository is deprecated.  Relevant examples have been moved to the [Duffle](https://github.com/cnabio/duffle) CNAB reference implementation repository.  The examples in this repo are no longer maintained.**\n\nThis repository contains an array of CNAB bundles. Those that contain `base` in the name\nare base invocation images, intended to be used by other bundles. Most of those are\n\"stand alone\" in the sense that they _can_ be installed. But they typically just create\nplaceholder data.\n\nClone this repository to work with these bundles.\n\n## Prerequisites\n\n * The [duffle](https://github.com/deislabs/duffle) binary will be needed to work with these bundles.\nIt can be built and installed locally via instructions in the [duffle](https://github.com/deislabs/duffle) repo,\nor the latest release can be fetched from the [duffle releases](https://github.com/deislabs/duffle/releases) page.\n\n * Docker\n\n * make\n\n## Quick Start\n\nHere we ensure a bundle is built (and signed) and then install the bundle via `duffle`:\n\n```console\n$ BUNDLE=helloworld VERSION=latest make build\n\n$ duffle install my-helloworld helloworld\nExecuting install action...\nPort parameter was set to 8080\nInstall action\nAction install complete for my-helloworld\n```\n\nWe can then check the status of an installed bundle and then, optionally, uninstall the bundle:\n\n```console\n$ duffle status my-helloworld\nInstallation Name:    \tmy-helloworld\n...\nBundle:               \thelloworld\nLast Action Performed:\tinstall\nLast Action Status:   \tsuccess\nLast Action Message:\nExecuting status action in bundle...\nPort parameter was set to 8080\nStatus action\nAction status complete for my-helloworld\n\n$ duffle uninstall my-helloworld\nExecuting uninstall action...\nPort parameter was set to 8080\nuninstall action\nAction uninstall complete for my-helloworld\n```\n\n## Recommendations\n\nMost demos also require credentials (`duffle install -c CREDS BUNDLE_NAME`). See the credential set documentation below to see how to create these.\n\nWe recommend starting with the following bundles:\n\n- For Helm/Kubernetes: `duffle install my-hellohelm hellohelm...`\n    - Requires a k8s cluster and credentials to that cluster\n    - Creates an Alpine linux chart (pod)\n- For Terraform: `duffle install my-terraform terraform ...` (The aks-terraform bundle takes a long time and requires some extra tuning)\n    - Requires an Azure account\n    - Creates a VM plus network resources and a storage account\n- For ARM: `duffle install my-arm-aci arm-aci ...`\n    - Requires an Azure account\n    - Creates an container running in ACI\n- For Ansible: `duffle install my-ansible-azurevm ansible-azurefm ...` (`ansiblebase` is faster, but just installs a resource group)\n    - Requires an Azure account\n    - Creates a VM plus network\n- For ~pure awesomeness~ Kubernetes + Azure: `duffle install my-aks aks ...`\n    - Requires an Azure account\n    - Requires a DNS name that can be used to assign an IP\n    - Creates an AKS Kubernetes cluster\n    - Creates several Helm charts\n    - Creates Kubernetes RBACs\n    - Creates a Kubernetes Ingress\n    - Maps a domain name to the Ingress controller\n\nNote that `helloazure` requires a special Duffle driver. It provisions VMs instead of Docker images, and is considered expert-only.\n\n## Azure Configuration\n\nMany of the examples here use Azure as a public cloud. To use these images, you will need the following information:\n\n- tenant ID (usually `AZURE_TENANT_ID` in the code)\n- subscription ID (usually `AZURE_SUBSCRIPTION_ID`)\n- client ID (usually `AZURE_CLIENT_ID`)\n- client secret (usually `AZURE_CLIENT_SECRET`)\n\nTypically, the process for obtaining this information is as follows.\n\nCreate a service principal:\n\n```\n$ az ad sp create-for-rbac -n \"dufflepreview\" \n{\n  \"appId\": \"YOUR_CLIENT_ID\",\n  \"displayName\": \"dufflepreview\",\n  \"name\": \"http://dufflepreview\",\n  \"password\": \"YOUR_CLIENT_SECRET\",\n  \"tenant\": \"YOUR_TENANT_ID\"\n}\n```\n\nYou can get the subscription ID for the appropriate subscription using:\n\n```console\n$ az account list -o table\nName                                            CloudName    SubscriptionId                        State    IsDefault\n----------------------------------------------  -----------  ------------------------------------  -------  -----------\n# list of stuff\n```\n\nNow create the following environment variables:\n\n```\nexport AZURE_CLIENT_ID=\u003cYOUR_CLIENT_ID\u003e\nexport AZURE_CLIENT_SECRET=\u003cYOUR_CLIENT_SECRET\u003e\nexport AZURE_TENANT_ID=\u003cYOUR_TENANT_ID\u003e\nexport AZURE_SUBSCRIPTION_ID=\u003cYOUR_SUBSCRIPTION_ID\u003e\n```\n\n(Note that Ansible uses slightly different names)\n\n## Credential Sets\n\nMost of the CNAB bundles in this repository require you to pass in at least _some_ credentials. With Duffle, this is done via credential sets.\n\nThe following command will generate stubbed credentials and put them in `$HOME/.duffle/credentials`. You will need to go edit those and complete them:\n\n```console\n$ duffle creds generate -f path/to/bundle.json $NAME\n```\n\nWhere `$NAME` is the name you want to give to these credentials. For example:\n\n```console\n$ duffle creds generate example-helm-creds hello-helm\nname: example-helm-creds\ncredentials:\n- name: kubeconfig\n  source:\n    value: EMPTY\n  destination:\n    path: /root/.kube/config\n$ edit $HOME/.duffle/credentials/example-helm-creds.yaml\n```\n\nThe `source` can be one of:\n\n- `value:` The literal value (e.g. `value: supersecretpassword`)\n- `env:` The name of an environment variable (e.g. `env: AZURE_TENANT_ID`)\n- `path:` The path to a file on your local filesystem (e.g. `path: $HOME/.kube/config`)\n\nNote that in `path:`, environment variables are interpolated.\n\nOnce you have generated credential sets, you can list them like this: `duffle creds list`.\n\nTo use a credential set, supply it with the `-c` flag: \n\n```console\n$ duffle install -c example-helm-creds my-helm-test hellohelm\n```\n\n## Developers\n\nTo invoke common commands on bundles in this repo, such as `make sign`, `make docker-build` and `make docker-push`, one can run `BUNDLE=\u003cbundle name\u003e make \u003ctarget\u003e` (or simply `make \u003ctarget\u003e` to run against all bundles.)  See [DEVELOPERS.md](DEVELOPERS.md) for more details.\n\nYou can see three different \"flavors\" of CNAB bundle here.\n\n- Declarative bundles that use base images\n    - arm-aci (ACI app created via ARM templates)\n    - hellohelm (Helm charts)\n    - ansible-azurevm (Ansible)\n    - aks-terraform (Terraform)\n- Base bundles intended to be used by other bundles\n    - terraform\n    - ansiblebase\n    - armbase\n    - makebase\n    - k8sbase\n- Highly specific \"expert\" bundles\n    - wordpress\n    - aks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeislabs%2Fexample-bundles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeislabs%2Fexample-bundles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeislabs%2Fexample-bundles/lists"}