GithubHelp home page GithubHelp logo

microsoft / teamcloud Goto Github PK

View Code? Open in Web Editor NEW
68.0 9.0 22.0 15.81 MB

Enable enterprise development teams to create secure compliant cloud development environments.

License: MIT License

C# 52.37% Shell 0.28% Python 26.48% Batchfile 0.09% HTML 2.45% TypeScript 17.13% CSS 0.05% JavaScript 0.11% Bicep 0.98% Dockerfile 0.07%

teamcloud's Introduction

TeamCloud

TeamCloud is a tool that enables enterprise IT organizations to provide application development teams "self-serve" access to secure compliant cloud development environments.

Create Release GitHub release (latest by date)

There are several components that make up the TeamCloud solution.

TeamCloud CLI

The TeamCloud CLI is an extension for the Azure CLI. It can be used by application development teams to create and manage Projects, and by TeamCloud admins to create new TeamCloud instances or manage existing instances.

Install TeamCloud CLI

To install the Azure CLI TeamCloud extension, simply run the following command:

az extension add --source https://github.com/microsoft/TeamCloud/releases/latest/download/tc-0.5.3-py2.py3-none-any.whl -y

Update TeamCloud CLI

To update Azure CLI TeamCloud extension to the latest version:

az tc update

or for the latest pre-release version:

az tc update --pre

TeamCloud Instance

At the center of the tool is a TeamCloud instance (the source code in this repository). An enterprise deploys a single TeamCloud instance to an Azure subscription managed by its IT organization.

A TeamCloud instance is composed of two parts:

  1. A web portal
  2. A REST API that enables TeamCloud admins to manage the TeamCloud instance, and application development teams to create and manage Projects.
  3. An internal orchestration service (sometimes referred to as "the orchestrator") that communicates handles deployment and management.

TeamCloud Azure Resources

A TeamCloud instance is made up of the following Azure resources:

These resources are deployed using the CLI. After installing the CLI use az tc deploy -h deployment instructions.

TeamCloud Website

Although the TeamCloud CLI exposes all functionality provided by TeamCloud, you can also deploy a client website to interact with your instance.

Projects

A TeamCloud instance define templates (Project Types) for a policy-compliant, secure, cloud development environment, which software development teams can create on-demand. In the context of TeamCloud, these cloud development environments are called Projects.

About

This project is in active development and will change. As the tool becomes ready for use, it will be versioned and released.

We will do our best to conduct all development openly by documenting features and requirements, and managing the project using issues, milestones, and projects.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

teamcloud's People

Contributors

colbylwilliams avatar dependabot[bot] avatar madenwala avatar markusheiliger avatar microsoft-github-operations[bot] avatar microsoftopensource avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

teamcloud's Issues

Projects API

ProjectsController

  • List: GET api/projects
  • Get: GET: api/projects/{projectId:guid}
  • Create: POST: api/projects
  • Update: PUT: api/projects
  • Delete: DELETE: api/projects/{projectId:guid}

Todo item one

Multi-task issue:

  • Task one
  • Task two
  • Task three
  • Task four

Project Tags API

ProjectTagsController

  • List: GET api/projects/{projectId:guid}/tags
  • Get: GET: api/projects/{projectId:guid}/tags/{key}
  • Create: POST: api/projects/{projectId:guid}/tags
  • Update: PUT: api/projects{projectId:guid}/tags
  • Delete: DELETE: api/projects/{projectId:guid}/tags/{key}

Disable Auth until an initial TeamCloud config yaml is posted

  • We want to post the initial teamcloud.yaml file via the deploy script
  • To do this via curl, auth should be disabled until an initial teamcloud.yaml is posted
  • We should also validate that the initial config contains at least one user with role == owner

Auth throws null ref if project doesn't exist

ystem.NullReferenceException: Object reference not set to an instance of an object.
   at TeamCloud.API.Startup.ResolveClaimsAsync(Guid userId, HttpContext httpContext) in /Users/colbylwilliams/GitHub/microsoft/TeamCloud/src/TeamCloud.API/Startup.cs:line 232
   at TeamCloud.API.Startup.<ConfigureAuthentication>b__6_3(TokenValidatedContext context) in /Users/colbylwilliams/GitHub/microsoft/TeamCloud/src/TeamCloud.API/Startup.cs:line 165
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.AuthenticateAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext context, String scheme)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at TeamCloud.API.Middleware.EnsureTeamCloudConfigurationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) in /Users/colbylwilliams/GitHub/microsoft/TeamCloud/src/TeamCloud.API/Middleware/EnsureTeamCloudConfiguration.cs:line 41
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass5_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Project Create Orchestration

ProjectCreateOrchestration

  1. Create a new project and save to the database (via activity functions)
  2. Create an Azure resource group for the project (and update project in db)
  3. Invoke the Create command on each Provider (accounting for dependencies)
  4. Wait for Create commands to complete, then invoke the Init Command on each Provider (accounting for dependencies)

Errors

  • Gracefully handle exceptions in providers and add them to command result
  • Consolidate exceptions from providers

Project Users API

ProjectUsersController

  • List: GET api/projects/{projectId:guid}/users
  • Get: GET: api/projects/{projectId:guid}/users/{userId:guid}
  • Create: POST: api/projects/{projectId:guid}/users
  • Update: PUT: api/projects{projectId:guid}/users
  • Delete: DELETE: api/projects/{projectId:guid}/users/{userId:guid}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.