Giter VIP home page Giter VIP logo

solutions-cloud-orchestrate's Introduction

Cloud Orchestrate

About the project

Cloud Orchestrate makes it easy to deploy and manage fleets of virtual workstations and entire production systems on Google Cloud with a high-level API.

Cloud Orchestrate is intended for content creation workloads such as VFX/animation, ArchViz, game development, manufacturing and engineering, or any industry workload that requires access to powerful virtual workstations. Resources can be distributed in any region for low-latency performance anywhere in the world, and storage strategies can be defined to allow global access to common assets.

Cloud Orchestrate is a solution that includes open source software, cloud-native services, and third-party software products such as Teradici Cloud Access Software and Cloud Access Manager.

Watch this video overview to see what's possible with a deployment created with Cloud Orchestrate.

Getting started

See the wiki for full documentation.

Prerequisites

To deploy Cloud Orchestrate, you should have access to and a basic working knowledge of Google Cloud Platform and are familiar with Compute Engine and the Google Cloud Console.

If you don't have a Google Cloud account, you can sign up for a free trial, but you will be limited in what you can deploy without supplying a payment method.

License

Distributed under the Apache 2.0 License. See LICENSE for more information.

Contributing

See How to Contribute to learn more about helping with development.

Contact

solutions-cloud-orchestrate's People

Stargazers

 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  avatar  avatar

solutions-cloud-orchestrate's Issues

Error assigning brand new machine

Trying to assign a newly created and domain-joined machine fails with a 400 Bad Request error from the CAM API. This means that the machine has never been assigned.

Unable to unassign machine

orchestrate broker machine unassign machine1 has no effect at all even if the machine is indeed assigned.

Update network name customization

The Teradici deployment scripts master branch has been updated to support network name customization in all deployment types. The variable names were renamed to: dc_subnet_name, cac_subnet_name, and ws_subnet_name, whereas we were using controller_network, connector_network, and workstations_network. Update orchestrate.systems.teradici.main to match the new variable names. See this for further reference: https://github.com/teradici/cloud_deployment_scripts/blob/master/deployments/gcp/multi-region/networking.tf#L168-L194

Zone required when assigning machine

The orchestrate broker machines assign command fails with a cryptic 400 Bad Request error if the --zone option is not explicitly provided. It should automatically pick up the default zone from the active configuration if none is provided, or perhaps even get it from the the GCP API. In any event, make sure that the command can pick up the zone from the active configuration if it's not explicitly provided. And, if no zone can be provided to the backend, it should raise a descriptive error message to the user.

Customize subnetwork name when creating templates

orchestrate templates create allow for customizing the network name via --network. The subnetwork name is expected to match the network name. However, this may not always be the case. Especially in cases when there are corporate policies imposed in the deployment projects that may enforce certain topology and network names. Add a --subnetwork option to customize the name as needed. Make it default to the same value as --network if not explicitly provided.

CAM service account types subtle permissions issues

The CAM-level service account can be used just for POST deployments/ and POST auth/keys and literally nothing else in the API. Any other requests raise a 403 status. The deployment-level service account can be used for all other API calls except the two that the CAM-level service account has access to. Unfortunately, to fully automate the deployment of the teradici components, we need a service account that could also call POST auth/tokens/connectors and others. Right after the deployment, orchestrate broker commands require a service account credentials to use other endpoints. See #34 for more context.

Ultimately, we want to minimize the manual steps in web UIs and have user generate a single service account credentials file. Have the code detect the type of service account from the credentials content and adapt. If given a CAM-level account, it should create a deployment-level account and cache the credentials automatically in ~/.config/teradici so that the orchestrate broker commands work seamlessly and without requiring the user creating new credentials manually.

Add pagination support for broker commands

Many of the Teradici CAM API endpoints that the orchestrate broker commands use under the hood support pagination with a default limit of 15. Add command-line parameters to support pagination and/or auto-paginate results. Currently, it only shows the first page.

Ability to specify custom startup script in template

Add ability to specify either startup-script-url or windows-startup-script-url when creating a template so that it gets propagated to the instance when calling orchestrate instances create. The user needs to be responsible for doing the initialization required for the systems deployed in the project, e.g. PCoIP registration, joining AD domain, etc.

Parameterize teradici deployment type

By default, orchestrate systems deploy teradici would deploy a multi-region setup. However, there are a couple others that might be of interest depending on the use case, e.g. single-connector, and single-connector2 (experimental for deploying in an existing shared VPC with an existing subnet and without the ability to create networks or subnetworks.)

Add a deployment-type parameter and add the multi-region connectors information if connectors is not empty.

Deploy multi-region connectors and GLB by default

orchestrate systems deploy teradici is currently deploying a single connector. Let's make multi-region the default deploying one connector in us-west2-b and one in us-east4-b behind a GLB by default.

orchestrate_pb2_grpc

When I start: orchestrate projects register --help
I get this error:
ImportError: cannot import name 'orchestrate_pb2_grpc' from 'orchestrate.service'
The service folder has an initi.py without any functions

Integration tests

Add integration tests for common workflows:

  • Create an image
  • Create a template
  • Create individual machines from a template
  • Deploy a storage cluster
  • Deploy a broker and active directory

Locate additional systems from anywhere in the path

Currently, all deployable systems are expected to be located in the orchestrate/systems package. For instance, orchestrate systems deploy teradici filestore virtual-studio. However, it would need to be able to locate additional systems from the path to allow third-parties to develop automation recipes and integrate additional systems into orchestrate. It would also be useful to allow them to use full packages name, for instance: orchestrate systems deploy vendor1.storage vendor2.cache

Properly package orchestrateapi

Properly package orchestrateapi as an installable Python package similar to the orchestrate CLI one. This will enable integration tests to initialize a local server automatically to run tests against it by being able to import both orchestrate (CLI) and orchestrateapi (API) side-by-side.

This is required by #50

Template metadata not propagated to instance.

Template metadata is not being propagated down to instances upon creation. For example, creating a template like this:

orchestrate templates create editorial --metadata startup-script-url=gs://one/two.ps1 ...

And, creating an instance like this:

orchestrate instances create editorial

Results in an instance that doesn't have the startup script specified in the template metadata.

Unable to check whether deployment exists

The CAM-level service account only allows for POST deployments/ not GET. This prevents the code from checking whether the deployment exists before attempting to create it. Instead, need to attempt creating the account and check for 409 Conflict errors.

Make default AD domain more than one word.

The default AD domain currently defaults to just demo. It used to work with windows-2016 up until a point when a policy is being enforced that requires de domain to be at least two components, e.g. a.b. The deployment would finish apparently successfully but no computers could join the domain because it was not actually initialized. The AD domain controller would fail without percolating the error up to Terraform and stopping the deployment. Make sure the default is at least two tokens, and, perform validation for override value provided from the command line.

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.