View instance information on all supported cloud providers


Keywords
cloudview, aws-ec2, azure, cloud, gcp-compute, openstack, python3
License
MIT
Install
pip install cloudview==0.9

Documentation

Build Status

cloudview

View instance information on EC2, Azure, GCE & OpenStack.

Support for other cloud service providers may be easily added thanks to Apache Libcloud

Docker image available at ghcr.io/ricardobranco777/cloudview:latest

Usage

Usage: cloudview [OPTIONS]
Options:
    -c, --config FILE                   path to clouds.yaml
    -l, --log debug|info|warning|error|critical
                                        logging level
    -o, --output none|text|html|json    output type
    -p, --port PORT                     run a web server on port PORT
    -r, --reverse                       reverse sort
    -s, --sort name|time|state          sort type
    -S, --states error|migrating|normal|paused|pending|rebooting|reconfiguring|running|starting|stopped|stopping|suspended|terminated|unknown|updating
                                        filter by instance state
    -T, --time TIME_FORMAT              time format as used by strftime(3)
    -V, --version                       show version and exit
    -v, --verbose                       be verbose
    --insecure                          insecure mode

Requirements

Docker or Podman to run the Docker image or:

clouds.yaml

Edit examples/clouds.yaml with the relevant information and run chmod 600 /path/to/clouds.yaml.

NOTES:

  • The key names are not arbitrary and are the names of the arguments passed to the class factory of each provider in libcloud.
  • If this file is not present, cloudview will try to get the information from the standard AWS_*, AZURE_*, GOOGLE_* & OS_ environment variables.

To run stand-alone:

pip3 install --user cloudview
cloudview [OPTIONS]

To run with Docker or Podman:

docker run --rm [OPTIONS] -v /path/to/clouds.yaml:/clouds.yaml:ro ghcr.io/ricardobranco777/cloudview -c /clouds.yaml

NOTES:

  • Make sure you also mount the path to the JSON file holding the GCE credentials with the same path mentioned in clouds.yaml
  • For private Openstack you'd also want to mount the CA's certificates and add -e REQUESTS_CA_BUNDLE=/path/to/certs.pem

Run the web server with Docker Compose:

If you have a TLS key pair, put the certificates in cert.pem, the private key in key.pem and the file containing the passphrase to the private key in key.txt. Then edit the docker-compose.yml file to mount the directory to /etc/nginx/ssl in the container like this: - "/path/to/tls:/etc/nginx/ssl:ro". Set and export the NGINX_HOST environment variable with the FQDN of your host.

For HTTP Basic Authentication, create a file named auth.htpasswd in the same directory with the TLS key pair.

If you don't have a TLS key pair, a self-signed certificate and a random password for logging in will be generated. You can see the latter with docker compose logs. The user is test.

After running docker compose build & docker compose up -d you can browse to https://localhost:8443

Debugging

  • For debugging you can set the LIBCLOUD_DEBUG environment variable to a path like /dev/stderr

Additional information

Similar projects