{"id":15291313,"url":"https://github.com/azure/cloudshell","last_synced_at":"2025-05-16T00:09:12.491Z","repository":{"id":37704656,"uuid":"192577707","full_name":"Azure/CloudShell","owner":"Azure","description":"Container Image for Azure Cloud Shell (https://azure.microsoft.com/en-us/features/cloud-shell/)","archived":false,"fork":false,"pushed_at":"2025-05-09T03:54:19.000Z","size":12282,"stargazers_count":266,"open_issues_count":92,"forks_count":103,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-13T00:11:12.818Z","etag":null,"topics":["azure","cloudshell","container"],"latest_commit_sha":null,"homepage":"https://shell.azure.com","language":"PowerShell","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/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":"roadmap/cs-roadmap-2023.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-18T16:38:07.000Z","updated_at":"2025-04-28T20:08:52.000Z","dependencies_parsed_at":"2023-10-20T01:25:33.733Z","dependency_job_id":"bd6bbeee-75c2-4ea0-b845-b4b904cac149","html_url":"https://github.com/Azure/CloudShell","commit_stats":null,"previous_names":[],"tags_count":101,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2FCloudShell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2FCloudShell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2FCloudShell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azure%2FCloudShell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Azure","download_url":"https://codeload.github.com/Azure/CloudShell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254442856,"owners_count":22071878,"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":["azure","cloudshell","container"],"created_at":"2024-09-30T16:11:54.469Z","updated_at":"2025-05-16T00:09:07.478Z","avatar_url":"https://github.com/Azure.png","language":"PowerShell","readme":"\r\n# Microsoft Azure Cloud Shell Image\r\n\r\nAzure Cloud Shell is an interactive, authenticated, browser-accessible shell for managing Azure\r\nresources. As a web-based environment, Cloud Shell provides immediate management access to any\r\ndevice with a network connection. Azure Cloud Shell provides a\r\n[host of tools](https://docs.microsoft.com/azure/cloud-shell/features), including Azure CLI, Azure\r\nPowerShell, Ansible, Terraform, kubectl, and many more.\r\n\r\nFor more details, check out\r\n[Overview of Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview).\r\n\r\n## Roadmap of planned development\r\n\r\nAzure Cloud Shell is continually working with customers to improve Azure resource management by\r\nfocusing on the experience and tools most needed by our customers. We invite everyone to view and\r\nprovide feedback to our [roadmap](./roadmap/cs-roadmap-2023.md) and future investigations. The Azure\r\nCloud Shell team respects and enjoys engaging with our customers, please share our\r\n[roadmap](./roadmap/cs-roadmap-2023.md) and provide feedback here in\r\n[Discussions](https://github.com/Azure/CloudShell/discussions) or\r\n[Issues](https://github.com/Azure/CloudShell/issues).\r\n\r\n## About this repository\r\n\r\nWhen you connect to Azure Cloud Shell, we start a container hosting a wide variety of tools, and\r\nconnect your browser to a shell process running inside that container. This repository contains the\r\nDocker files used to build that container image. It does _not_ contain the code used for the rest of\r\nthe Azure Cloud Shell service. The code in this repository may not match exactly to what is running\r\nin the Cloud Shell service at any given time. The service is updated periodically and changes are\r\ngradually rolled out to different regions over time.\r\nThere may be a lag of up to 3-4 weeks\r\nfor changes made here to be reflected in all Cloud Shell regions.\r\n\r\nThis repository has several uses:\r\n\r\n1. **Running the Cloud Shell image locally**. If you want a curated set of up-to-date command-line\r\n   tools suitable for managing an Azure environment, but you want to run the tools locally on your\r\n   own computer instead of in Cloud Shell, you can build the image and run it yourself.\r\n\r\n1. **Contributing to Cloud Shell.** If you would like to propose a new tool for inclusion in Cloud\r\n   Shell, you can create an issue or submit a Pull Request to request the tool be added. Please\r\n   ensure that the PR actually builds within GitHub Actions.\r\n\r\nThe repository does _not_ provide an out-of-the-box replacement for the Azure Cloud Shell service.\r\nAzure Cloud Shell provide a user interface integrated into the Azure portal, a web service that\r\nmanages the infrastructure on which the containers run, and some additional code used inside the\r\ncontainer to connect the shell process to the user interface via a websocket.\r\n\r\n## Running the Cloud Shell image locally\r\n\r\n### Differences between running locally and in Cloud Shell\r\n\r\n1. **No identity endpoint**. In Cloud Shell, we provide a way to automatically obtain tokens for the\r\n   user connected to the shell. We can't provide this when you run locally, so you have to\r\n   authenticate explicitly before you can access Azure resources. When using AZ CLI, run `az login`;\r\n   for PowerShell, run `Connect-AzAccount`.\r\n\r\n1. **No cloud drive**. We don't mount the Cloud Drive from your Azure Cloud Shell, so you won't have\r\n   access to files stored there.\r\n\r\n1. **Root instead of cloud shell user**. In Azure Cloud Shell you always run as a regular user. When\r\n   running the image locally, you run as root.\r\n\r\n### Understanding the base.Dockerfile and tools.Dockerfile\r\n\r\nThe repository contains two Docker configuration files: `base` and `tools`. Normally you just have\r\none Dockerfile and rely on the container registry to cache the layers that haven't changed.\r\nHowever, we need to cache the base image explicitly to ensure a fast startup time. Tools is built\r\non top of the base file and starts from an internal repository where the base image is cached, so\r\nthat we know when we need to update the base.\r\n\r\nWhen building or using the image locally, you don't need to worry about that. Just build using the\r\ninstructions below, and be aware that changes to the base layer will take longer to release than\r\nchanges to the tools.\r\n\r\n| Layer | Job                                                                       |\r\n|-------|---------------------------------------------------------------------------|\r\n| Base  | Contains large, infrequently changing packages. Changes every 3-4 months. |\r\n| Tools | Contains frequently changing packages. Changes every 2-3 weeks            |\r\n\r\n\r\n## Building and Testing the image\r\n\r\n### Building the images\r\n\r\nRequired software:\r\n\r\n- Docker\r\n- Bash terminal / Powershell\r\n\r\nBuilding base.Dockerfile image from the root repository\r\n\r\n```bash\r\ndocker build \\\r\n   -t base_cloudshell \\\r\n   -f linux/base.Dockerfile .\r\n```\r\n\r\nBuilding tools.Dockerfile image\r\n\r\n```bash\r\ndocker build \\\r\n   -t tools_cloudshell \\\r\n   --build-arg IMAGE_LOCATION=base_cloudshell \\\r\n   -f linux/tools.Dockerfile .\r\n```\r\n\r\n### Testing the images\r\n\r\nRunning `bash` in the `tools.Dockerfile` based image:\r\n\r\n```bash\r\ndocker run -it tools_cloudshell /bin/bash\r\n```\r\n\r\nRunning `pwsh` in the `tools.Dockerfile` based image:\r\n\r\n```bash\r\ndocker run -it tools_cloudshell /usr/bin/pwsh\r\n```\r\n\r\nTesting the Cloud Shell image:\r\n\r\n```bash\r\ndocker run \\\r\n   --volume $(pwd)/tests:/tests \\\r\n   -it tools_cloudshell \\\r\n   /tests/test.sh\r\n```\r\n\r\nFor more information about bind mounts, please see the\r\n[Docker documentation](https://docs.docker.com/storage/bind-mounts/). We do expect all test cases\r\nto pass if you want your changes to be merged.\r\n\r\n## Contribution Guidelines\r\n\r\n### Types of issues\r\n\r\n| Issue Type                                                         | Action                                                                                                      |\r\n|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|\r\n| Package is out of date                                             | Create a Pull Request or Issue                                                                              |\r\n| Add a package to my Cloud Shell                                    | Follow [Cloud Shell package addition](./docs/add-package-into-cloudshell.md)                                |\r\n| Add a package to everyone's Cloud Shell                            | Follow [Package Inclusion Guide](./docs/package-inclusion-guide.md)                                         |\r\n| New desired Cloud Shell feature                                    | Create an [Discussion](https://github.com/Azure/CloudShell/discussions)                                     |\r\n| Issue with one of the packages*                                    | Talk to package owner \u0026 create a PR on their repo.                                                          |\r\n| Issue with how package interacts with Cloud Shell                  | Create a Pull Request OR GitHub Issue                                                                       |\r\n| Security bug                                                       | See \u003chttps://www.microsoft.com/en-us/msrc/faqs-report-an-issue\u003e                                             |\r\n| Issue with Cloud Shell in Azure Portal (can't log in, for example) | Open a [support ticket](https://learn.microsoft.com/azure/active-directory/fundamentals/how-to-get-support) |\r\n\r\nFor example, if you have an issue within Azure CLI, don't open up an issue in the Cloud Shell\r\nrepo, open an issue within the Azure CLI repo.\r\n\r\n- [Azure PowerShell issues](https://github.com/Azure/azure-powershell/issues)\r\n- [Azure CLI issues](https://github.com/Azure/azure-cli/issues)\r\n\r\n## Cloud Shell Documentation\r\n\r\nThe Cloud Shell documentation can be found at\r\n[https://learn.microsoft.com/azure/cloud-shell/overview](https://learn.microsoft.com/azure/cloud-shell/overview).\r\nIf you wish to contribute to The Cloud Shell documentation, see the Microsoft Learn\r\n[Contributors Guide](https://learn.microsoft.com/contribute/).\r\n\r\n## Legal\r\n\r\nThis project welcomes contributions and suggestions. Most contributions require you to agree to a\r\nContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us\r\nthe rights to use your contribution. For details, see\r\n[https://cla.microsoft.com](https://cla.microsoft.com).\r\n\r\nWhen you submit a pull request, a CLA-bot will automatically determine whether you need to provide\r\na CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions\r\nprovided by the bot. You will only need to do this once across all repos using our CLA.\r\n\r\nThis project has adopted the\r\n[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more\r\ninformation see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\r\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or\r\ncomments.\r\n\r\n## Trademarks\r\n\r\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of\r\nMicrosoft trademarks or logos is subject to and must follow\r\n[Microsoft's Trademark \u0026 Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).\r\nUse of Microsoft trademarks or logos in modified versions of this project must not cause confusion\r\nor imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those\r\nthird-party's policies.\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazure%2Fcloudshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazure%2Fcloudshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazure%2Fcloudshell/lists"}