Cloud Infrastructure Abstraction. Cloudia reads clouds and will write diagrams.
WARNING WIP application and documentation will change.
Currently Cloudia is just a fork of CloudMapper. The ambition of the Cloudia project is to serve as man in the middle between Cloud Platforms and Diagram authoring applications.
Star us and keep following the project. If you just want a working version of CloudMapper, have a look at our cloudmapper-flake-fork.
First read general Setup documentation.
Open the development shell.
nix development github:wearetechnative/cloudia
You can now run python Cloudia [command]
e.g. python Cloudia collect
Not all commands are working because not all python modules are backported. These commands has been tested to function correctly.
- collect
- configure
- prepare
- webserver
collect
: Collect metadata about an account. More details here.prepare
/webserver
: See CloudMapper Writer
If you want to add your own private commands, you can create a
private_commands
directory and add them there.
A small set of demo data is provided. This will display the same environment as the demo site https://duo-labs.github.io/cloudmapper/
# Generate the data for the network map
python cloudia.py prepare --config config.json.demo --account demo
python cloudia.py webserver
This will run a local webserver at http://127.0.0.1:8000/ View the network map from that link, or view the report at http://127.0.0.1:8000/account-data/report.html
- Configure information about your account.
- Collect information about an AWS account.
Copy the config.json.demo
to config.json
and edit it to include your
account ID and name (ex. "prod"), along with any external CIDR names. A CIDR is
an IP range such as 1.2.3.4/32
which means only the IP 1.2.3.4
.
This step uses the CLI to make describe
and list
calls and records the json
in the folder specified by the account name under account-data
.
You must have AWS credentials configured that can be used by the CLI with read
permissions for the different metadata to collect. I recommend using
aws-vault. Cloudia will collect
IAM information, which means you MUST use MFA. Only the collect
step
requires AWS access.
You must have the following privileges (these grant various read access of metadata):
arn:aws:iam::aws:policy/SecurityAudit
arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
Collecting the data is done as follows:
python cloudia.py collect --account my_account
From here, try running the different commands, such as:
python cloudia.py prepare --account my_account
python cloudia.py webserver
Then view the report in your browser at http://127.0.0.1:8000/account-data/report.html
Instead of modifying config.json
directly, there is a command to configure
the data there, in case that is needed:
python cloudia.py configure {add-account|remove-account} --config-file CONFIG_FILE --name NAME --id ID [--default DEFAULT]
python cloudia.py configure {add-cidr|remove-cidr} --config-file CONFIG_FILE --cidr CIDR --name NAME
This will allow you to define the different AWS accounts you use in your environment and the known CIDR IPs.
If you use AWS Organizations, you can
also automatically add organization member accounts to config.json
using:
python cloudia.py configure discover-organization-accounts
You need to be authenticated to the AWS CLI and have the permission
organization:ListAccounts
prior to running this command.