developmentseed / remote-workstation

A Dockerised work environment hosted on AWS Fargate which can be SSH'd into ☁️🌎📦
MIT License
24 stars 2 forks source link

Initial Testing #1

Open wildintellect opened 3 years ago

wildintellect commented 3 years ago

@ciaranevans I ran through to test today, hit a few bumps, had some open questions which will probably become a ticket each.

  1. Dependencies, requires a working cdk cli, need link to install instructions. Also happened to hit a mismatch even though I installed recently, and had to upgrade.

    Loading .env environment variables...
    This CDK CLI is not compatible with the CDK library used by your application. Please upgrade the CLI to the latest version.
    (Cloud assembly schema version mismatch: Maximum schema version supported is 6.0.0, but found 7.0.0)
  2. How does it know what aws account to use?

    ❌  remote-workstation-alex-station failed: Error: Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
    Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment

    We should support --profile on cdk deploy, or add to the ENV. Workaround is to note that [default] is used.

  3. What exactly does cdk destroy do? Should have clear instructions how to turn off remote instance, and what that means. Since it's Fargate on ECS, I assume once you turn it off, it's gone.

  4. How to avoid issue with IP address allocation, "Best Practices" in instance management.

    The maximum number of addresses has been reached. (Service: AmazonEC2; Status Code: 400; Error Code: AddressLimitExceeded;

    Wishlist

ciaransweet commented 3 years ago

Hey @wildintellect thanks for giving it a go!

I'll have a go at addressing some of your points!

Points

Dependencies, requires a working cdk cli, need link to install instructions. Also happened to hit a mismatch even though I installed recently, and had to upgrade.

Yeah, this one is part of the joys of working with CDK 🤣 - I'm adding a link to the CDK setup page.

How does it know what aws account to use?

By default, it will use the AWS account you have currently configured in the AWS CLI. I think I'll have to figure out how to get profiles working (I've been lucky so far that 99% of the time I work on one AWS account and switching isn't frequent). I'll get onto this today.

What exactly does cdk destroy do? Should have clear instructions how to turn off remote instance, and what that means. Since it's Fargate on ECS, I assume once you turn it off, it's gone.

Pretty much what it says on the tin, it'l remove the entirety of the infrastructure, nothing remains. (Tell a lie, I think maybe the image it pushes to ECR remains, but that's a CDK inbuilt thing)

You don't need to turn off the remote instance, you can't actually turn it 'off', an instance is either there or not. We might be able to bodge it so that the desired instances is 0, that would require some manual intervention by the user, you'd have to edit desired_count to 0, re-deploy and then you won't have a running instance, but all the surrounding infrastructure remains. I'd argue it's quick enough to just tear it all down with make destroy and then re-deploy it when needed.

Happy to be challenged on that one though! - Maybe we just set up kill-cord kind of alarm that pulls the cord after X time...

How to avoid issue with IP address allocation, "Best Practices" in instance management.

So, this is because the region you've deployed into is chockerblock with stuff, so there's a few ways we could address this:

Happy for discussion on this one, I've just been deploying into regions that are relatively empty it appears! I have checked how many EIPs this stack actually makes and it's only one so we're dicing with danger already on the region you tried!

Wishlist

Reminder to open a ticket about supporting TAGs for billing tracking.

The application does actually tag everything already https://github.com/developmentseed/remote-workstation/blob/main/app.py#L27-L33 - you can edit the values in there if you need to change what's already there 😄

Option to use an existing Docker in ECR.

Yep fair ask, this was ideally in the works, I'll have it so that if you specify a image it will use that instead (via the .env file)

Local config, maybe yaml or env to control instance size

The README does mention how to change this, but I can set it up to do it via the .env if you think that's better. It'l come with a caveat that you're responsible to make sure the CPU maps with the Memory you can use and vice-versa

Opening port 22 to the machine that is deploying with a security group.

This is already done: https://github.com/developmentseed/remote-workstation#how-this-all-works note 1. in that section. You shouldn't have to do anything on AWS to use this, the workflow can be done entirely without the console 🎉

wildintellect commented 3 years ago

Mostly solved when #2 is merged.

ciaransweet commented 3 years ago

@wildintellect #2 is merged, not sure what you'd like to keep/extract from this issue :D