Geodesic Module Usage

Prerequisites

Examples

All examples are based on use cases provided in Agenda

Run shell

A Geodesic Module is docker container that extends Geodesic and used as a shell.

Each Geodesic Module will have a unique name. The shell can be easily started any time by simply running that name in a terminal. The name is a shell script in /usr/local/bin. Make sure this path is in your PATH environment variable.

Development Iterations

After you create a Geodesic Module, there will be /conf directory in the image. The ‘/conf’ dir used to store definitions of all Backing Services.

During development, it would be very painful to have to rebuild the container everytime you make or test a change. Therefore, we recommend that you use /localhost path in the Geodesic Shell so that you can work on your local copy. Your native $HOME directory is mounted to /localhost in the container.

Finally, when you have everything working, we recommend that you rebuild Geodesic Module container to add the backing services in the container and do one more final test.

Build new version

To build Geodesic Module just run make build in the module directory

Use shell

When you run into the shell you need to authorize on AWS by assuming a correct role and then you can work with tools build in Geodesic Module.

Example
> staging.example.com
# Mounting /home/goruha into container
# Starting new staging.example.com session from   cloudposse/staging.example.com:dev
# Exposing port 48934
* Started EC2 metadata service at http://169.254.169.254/latest
         _              _                                              _
     ___| |_ __ _  __ _(_)_ __   __ _    _____  ____ _ _ __ ___  _ __ | | ___
    / __| __/ _` |/ _` | | '_ \ / _` |  / _ \ \/ / _` | '_ ` _ \| '_ \| |/ _ \
    \__ \ || (_| | (_| | | | | | (_| | |  __/>  < (_| | | | | | | |_) | |  __/
    |___/\__\__,_|\__, |_|_| |_|\__, |  \___/_/\_\__,_|_| |_| |_| .__/|_|\___|
                  |___/         |___/                           |_|

IMPORTANT:
* Your $HOME directory has been mounted to `/localhost`
* Use `aws-vault` to manage your sessions
* Run `assume-role` to start a session


-> Run 'assume-role' to login to AWS
⧉  staging example
> ❌   (none) ~ ➤  assume-role
Enter passphrase to unlock /conf/.awsvault/keys/:
Enter token for arn:aws:iam::xxxxxxx:mfa/goruha: 365322
* Assumed role arn:aws:iam::xxxxxxx:role/OrganizationAccountAccessRole
⧉  staging example
> ✅   (example-staging-admin) ~ ➤