AWS EC2 – Running Commands on Multiple Instances Simultaneously

amazon ec2amazon-web-serviceslinux

I've been given a task where I have to utilize about 200 EC2 instances in AWS.
Since I'm completely new to AWS, I'm having trouble doing basic stuff.

Each instance is a Ubuntu and they all have the same 4 key softwares installed on them.

I have to be able to control all 200 instances, like starting the same command on every instance, and other similar bulk tasks.

Specifically:

  • Stop all currently running instances.
  • Start all currently stopped instances.
  • Pull a configuration file from the main server.
  • Start certain application (all start app1, app3)

As far as I understood from the starting guides, I have to install AWS CLI which I did. (I'm on a Mac btw). However, I still don't understand how to do the things described from this command line.

TLDR: How do I execute/run commands simultaneously on every running EC2 instance from CLI?

Best Answer

ClusterSSH, Capistrano, pconsole, and many other tools exist to execute commands across many Linux servers. In addition, you might look into configuration management tools like Puppet, Chef, SaltStack, or Ansible in terms of orchestrating your entire environment.

Generally, the AWS command line interface is for interfacing with the product and services (spinning up instances, taking images, etc), not controlling individual VMs at the console level.