FAQ

Where did the name come from?

When looking for a name we searched for people and things related to the concept of terraforming planets, which led us to Martyn Fogg. ‘Fogg’ seemed like a nice short name, and there didn’t appear to be other software with this name. So here we are.

What is SICC

SICC was a predecessor to fogg that we used only internally at CZI.

fogg.yml

What are modules

Terraform modules are a collection of terraform resources (including module and data).

What are accounts

Accounts correspond to AWS accounts. These can configure singleton resources such as IAM users and groups.

What are components

Components are instantiations of terraform modules and resources. These can be things like RDS databases and their corresponding security groups, S3 website hosting, ECS clusters, etc. This is one of the places where you can make apply to run Terraform and create resources.

Managing Multiple AWS Accounts

A typical multi account scenario is having your staging and prod environments split into two different aws accounts. A fogg.yml that might address this use-case:

version: 2
  defaults:
    providers:
      aws:
        region: us-west-2
        profile: fogg-profile-staging
        version: 2.45.0
    backend:
      region: us-west-2
      profile: fogg-profile-staging
      bucket: my-fogg-bucket
    project: fogg-example,
    owner: fogg@example.com,
    terraform_version: 0.12.24
  modules:
    aurora: {}
    redis: {}
    some-shiny-new-tech: {}
  accounts:
    aws-staging-account:
      providers:
        aws:
        account_id: "000000000000"
    aws-prod-account:
      providers:
        aws:
        account_id: "11111111111"
        profile: fogg-profile-prod
      backend:
        profile: fogg-profile-prod
  envs:
    prod:
      providers:
        aws:
          account_id: "11111111111"
          profile: fogg-profile-prod
      components:
        redis: {}
        security-alerts:
          providers:
            aws:
            account_id: "22222222222"
          profile: fogg-profile-security
          backend:
            profile: fogg-profile-prod
    staging:
      components:
        redis: {},
        security-alerts:
          providers:
            aws:
            account_id: "22222222222"
            profile: fogg-profile-security

In the above example I’ve configured a couple of interesting things. We have three accounts in play: Staging (account_id: 000000000000), Prod (account_id: 111111111111), Security (account_id: 222222222222). Just by looking at fogg.yml I can see how both staging and prod have redis and security-alerts components. I can also see how these security alerts are centralized into a security account. Fogg’s modularity and hierarchical configuration naturally allow us to do powerful things like centralized logging, centralized alerting, centralized identity management, separation of concerns along aws account boundary lines.