CLI what is that really?

I keep reading about the “cloud CLI”; which expands to “cloud command line interface”; but what is that in plain language?

The command line in Linux is synonymous in my mind with a shell such as the bash shell. (These remarks apply as well to other operating systems; I’m using Linux as an example here.)

As an operating system, Linux has enormous flexibility: One can install new programs that – when invoked by name – simply run; and this in a sense expands the operating system. So suppose we install the command line interface (cli) for one of the major clouds. We do this as a preparatory step towards ‘building things on that cloud’. For AWS the cli we install is aws. On the Google cloud the command is gcloud. On Azure it is az.

Each cloud cli is invoked with additional arguments that follow its invocation… on the command line. These arguments specify what it is you want to do on that cloud. You can use a cloud cli to establish a storage space, start a virtual machine, engage with some other cloud service, or in the opposite direction: Discontinue using a service. And while it is all well and good to use the cli to tell the cloud what to do, we need some authentication baked in to verify that we are permitted to do that.

To this end we can think of using a cli as a three step process…

  1. install the appropriate cli on your computer
  2. configure your credentials using that cli so you are authorized to do stuff
  3. do stuff, first by invoking the cli and following that with the details

Finally I will mention that we can accomplish these same cloud tasks by going through the cloud console / portal via a web browser. And we can also accomplish them programmatically using a supported language like Python. Which approach is a matter of preference; but it is often fastest
to use either the cloud cli or the cloud programmatic interface. The latter is sometimes called the cloud API, but that is another topic.