How to provision a AWS cloud 9 environment? - amazon-ec2

I need to provision a cloud 9 environment and run some provision scripts in it. Tried to do it with cloudFormation but found no way to ssh into it (without accessing the cloud9 terminal) nor to pass a script while bring cloud9 up.
My goal: setup several cloud nine instances for a workshop, which needs to run some scripts to work with it.
Any hints?

Auto-configuration is still a weak point for Cloud9 instances. What I've seen others do is create a script that is distributed to users and then ask them to run it in the terminal to setup the environment - not ideal but it works. I too would like to see a solution using CloudFormation or some other mechanism. Does this help?

You can have Cloud9 attach to any server via ssh after installing a few utilities. Thus, you can use whatever provisioning tools you want as long as your process includes adding those utilities.

Related

How to connect google cloud shell to termux app using ssh?

I am using google-cloud-shell which is basically a shell that allows us to use online cloud shell (for developing apps etc.) and provides 5gb of free storage (only for home directory).
It is a very cool thing because i don't have PC but google-cloud-shell allows me to run gradle, java, python, etc. without any issues except one issue and i.e typing response. Although it is a very good platform for learning coding but typing is insane.
If i type a character it takes about a second to be displayed on screen and it really really sucks. Now what i want is to connect this shell to termux (which is an app just like terminal in linux) with ssh or any other thing that can connect it.
NOTE: I am not using paid version of google-cloud-storage I am just using it cloud shell which is free to use.
You can use the following gcloud command to SSH into your cloud-shell from local terminal.
gcloud alpha cloud-shell ssh
You can find more details here

Need to update my EC2 environment regularly?

I have an EC2 instance, Python 3 environment with many installed features like SQLAlchemy, cherrypy, etc. How often do I need to update them? Are they updated automatically, or do I need to do this updating manually? I haven't found this information online.
You EC2 instance will not be updated automatically. In this regard, it will behave exactly like a local machine. So, if you need to updates to your OS or other software, you will have to apply them manually.
However, manually running software update commands or even release upgrades is not the ideal scenario and something you may want to avoid in cloud environments.
Instead, you should think about how to automate your environment setup and configuration.
AWS provides some ways to run scripts at instance launch:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
This way, you could easily migrate to more up-to-data base images (AMIs) or change the hardware configuration of your instance.

How to reproduce Codeship's non-Docker CI environment locally?

Is there a way to reproduce Codeship's CI environment locally when not using Codeship's Docker support?
We don't share the build VMs for our classic infrastructure publicly at the moment. I'll bring this up with our engineering team, but I can't make any promises right now on what they'll decide.
We do however have a SSH debug feature available, that will allow you to access a build VM with your code cloned via SSH and run & tweak commands that way. See https://codeship.com/documentation/continuous-integration/ssh-access/ for more information.

Vagrant. VM after provisioning

I tried to adopt Vagrant in our team. I created a Vagrantfile and make provisioning in some way. Everything works as charm, but ...
It's unclear for me how I can automate some routine tasks like:
running django(I use django, but it's framework agnostic problem) dev server on 0.0.0.0
running grunt watcher
providing a separate console for django-specific commands
It is looks like vagrant not intended to help with this kind of automation and I look for some community adopted way to do that. I goggled and found nothing.
I see a few way to that:
bootstrap.sh script but messy and hard to mantain
something like tmuxinator -- requires tmux on host machine and now it's impossible to put tmuxconfig in project repo
etc
What is the 'canonical' way to resolve this problem?
P.S.: Please, think about designers, manual testers and other guys which like to use tools as is
In general you are best off using a provisioner. To be honest, a bootstrap.sh file is a good place to start unless you want to learn the ins and outs of something like chef / ansible / salt / puppet. If you do you might want to start at salt (SaltStack) because it is written in python which I'm guessing you use given the django angle.
For your specific questions:
Part of the point of vagrant is it lets you develop against real stacks and real web servers so you can avoid the "oh, that don't quite work the same on apache" moment that often comes in projects. So for your first question I would look at how to provision the app behind apache / nginx or whatever you are using for the production web servers.
Because of the shared file systems users can just run grunt locally on the host machine. This also lets grunt do things like hook into OSX notifications.
I'm not familiar with tmuxinator so I'm not sure how to start here. But if it is a service that the server really runs then you should figure out a way to package the install and deploy it to the provisioned VM. As for configuration, is it possible to get a dev config in the repo?
Same as #Wyatt, I recommend use Vagrant with provision tools, such as puppet, saltstack, chef, anisble, etc. These tools are created for the requirements you ask for, and most are open source. Choice is no wrong, you can start learning from any one, they are similar.
With that, you can quickly and easily run several VM servers with all applications installed automatically. With the customised Puppet codes or chef cookbooks, you can update them any time and provision to VM easily, you can re-use them for your PROD environment as well.
Take some times to learn one of these automation tools first, you will get benefit to save a lot of time.
I use Puppet, and recommend the best puppet book PRO PUPPET to you. It has all you need.

ec2 workflow microsoft / apple

I'm switching over to EC2 and obviously it's easiest to manage instances through a command line rather than some crappy web interface, but I work on a PC and have everything set up in Windows. What is the best way to work with dev server instances? Putty? Is there an alternative? What do you guys use?
Thanks!
It depends what you mean by "manage instances".
If you mean the ability to launch new instances from an AMI, configure security groups, manage EIP's and so on, the ElasticFox plugin to Firefox is great (in spite of having occasionally buggy releases). The command line tools supplied by Amazon for this purpose could be a good basis if you're writing automated scripts, but I find ElasticFox much better for my work.
To work directly on the instances, I use WinSCP for both Windows and Linux instances (I installed a third-party SFTP server for Windows), PuTTY for Linux and Remote Desktop for Windows.
I manage both Linux and Windows EC2 instances for a couple of different businesses.
For the Windows boxes I normally connect via Remote Desktop to do virtually everything. For Linux I use WinSCP and PuTTY consoles.
For EC2-specific operations I use the Amazon web console or the Amazon-supplied scripts from my PC.

Resources