#geodesic - December 2018

December 2018
erik
erikalmost 8 years ago
Jan
Janalmost 8 years ago(edited)
rgr
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
for starters, what i’m thinking to standardize is the discrepancy between what is TF_VAR_ and not.
Jan
Janalmost 8 years ago
so I am carrying on with the coldstart setup currently
Jan
Janalmost 8 years ago
yes, that would already go a long way
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i find we have to do a lot of mapping. my thinking is to focus on some canonical variables that are not TF_VAR_ prefixed
Jan
Janalmost 8 years ago
if the one picked isnt great can always change em, all at the same time
Jan
Janalmost 8 years ago
that could make a lot of a sense
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
and then make it easier to access all envs from terraform.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
@Jan what do you think of the pipelining we’re doing?
Jan
Janalmost 8 years ago
Honestly I have yet to get that far 😛
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
basically, things like chamber exec kops -- helmfile exec ...
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
then helmfile calls helm
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
it’s a lot of layers, but it’s also very UNIXy
Jan
Janalmost 8 years ago(edited)
so I mean in general I like to have as few moving parts as possible
Jan
Janalmost 8 years ago
as simple as possible, as complex as necessary
Jan
Janalmost 8 years ago
that sorta vibe
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
can you jot down any thing that comes to mind?
Jan
Janalmost 8 years ago
will do
Jan
Janalmost 8 years ago
Mondays "refresh my memory" issue is I cd into testing/ make init | docker/build | install
Jan
Janalmost 8 years ago
and I dont have a testing image locally built
Jan
Janalmost 8 years ago
and yes the ENV DOCKER_IMAGE= is set
Jan
Janalmost 8 years ago
I recall running into this before
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
hrm…
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago

make init
make docker/build install
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
that should result in both an image locally and a script installed to /usr/local/bin/xxxx
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
what is the error you get when running xxxx?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
what I’ve seen happen is that the image that was built was with some tag Y
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
by the DOCKER_IMAGE env is referencing some tag Z
Jan
Janalmost 8 years ago
so afterwards I end up with

 docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
cloudposse/testing.cloudposse.co    latest              938b6ad92d1a        26 minutes ago      1.08GB
jdnza/root.aws.tf                   latest              4e5bad3816ca        5 days ago          1.12GB
Jan
Janalmost 8 years ago
the error on make install
Jan
Janalmost 8 years ago

make install
Password:
# Installing testing.aws.tf from jdnza/testing.aws.tf:latest...
Unable to find image 'jdnza/testing.aws.tf:latest' locally
docker: Error response from daemon: manifest for jdnza/testing.aws.tf:latest not found.
See 'docker run --help'.
# Installed testing.aws.tf to /usr/local/bin/testing.aws.tf
Jan
Janalmost 8 years ago
make docker/build results in

Successfully tagged cloudposse/testing.cloudposse.co:latest
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
ok, in the Makefile, i think something is set wrong.
Jan
Janalmost 8 years ago
AH!
Jan
Janalmost 8 years ago
yes now I recall
Jan
Janalmost 8 years ago

export CLUSTER ?= <http://testing.cloudposse.co|testing.cloudposse.co>
export DOCKER_ORG ?= cloudposse
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
so regarding this…. we’ve gone back and forth
Jan
Janalmost 8 years ago(edited)
where this was a pain was that in the docs it is never mentioned to update the Makefile
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i like doing something like:

export CLUSTER ?= $(shell basename $(pwd))
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
etc..
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
but this is also more “magic”
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
what in your opinion is the right balance?
Jan
Janalmost 8 years ago
So I mean I would have the Makefile do so
Jan
Janalmost 8 years ago
I mean if you are for example already do a cp testing.cloudposse.co/ testing.aws.tf/
Jan
Janalmost 8 years ago
then make docker/build should quite happily just build with the pwd
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
ok, i’ll track this in that issue
Jan
Janalmost 8 years ago
export CLUSTER ?= $(shell basename $(pwd))
Jan
Janalmost 8 years ago
would solve it for all other envs
Jan
Janalmost 8 years ago
what to do for org though
Jan
Janalmost 8 years ago
this all makes me come back to my idea of having a coldstart module that renders all the coldstart resources with some high level inputs I provide
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
oh yes, coldstart module is top of mind
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
this is actually all feeding into that
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i want to basically collect all the datapoints and then use that to create the module.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
so asking for docker registry url is actually important
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
will add that
Jan
Janalmost 8 years ago
oki macbook battery is about to die, will switch to phone
Jan
Janalmost 8 years ago
something else...
Jan
Janalmost 8 years ago

cd account-dns
init-terraform
terraform apply
Jan
Janalmost 8 years ago
running without terraform plan is an anti-pattern that tf should be stopping with the info from the duynamodb table or not?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
yes, so best practices are to run terraform plan -out... and then terraform apply planfile
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
I suppose from a consistency perspective, we should write the docs that way
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
is that what you’re suggesting?
Jan
Janalmost 8 years ago
yea
Jan
Janalmost 8 years ago
I would be consistent in that, wrapping other tools means that users will come with varying degrees "pre-trained" behavior. Generally I would avoid un-training best practices
Jan
Janalmost 8 years ago
k 2% battery, im out
Jan
Janalmost 8 years ago
is it possible to use geodesic with aws-vault and the osx keychain?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
No, need to use the lowest common denominator which is file
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
We use that by default and use it between OSX and geodesic and Windows even :-)
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
(WSL)
Jan
Janalmost 8 years ago
kk, is it expected then that I need to enter my password on every aws-vault exec accountnamr -- command that need aws access
Jan
Janalmost 8 years ago
talking about using it outside of a geodesic container now
Jan
Janalmost 8 years ago
I have yet to have a chance to migrate all my credentials / env's over to this work flow pattern
Jan
Janalmost 8 years ago(edited)
very soon id like to have a executable bin per aws account/env
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
ah, yes, you do need to run with bash -l inside of geodesic
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i think jan was running this natively
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
the -l is to load the /etc/profile.d scripts
Jan
Janalmost 8 years ago
So I have another interesting question.... I have a situation where I have 6 existing aws accounts I want to manage with geodesic. later I would want to import a full AWS org too
Jan
Janalmost 8 years ago
the "import" part is of interest to me to understand
joshmyers
joshmyersalmost 8 years ago
Could you describe a little more what you mean by import a full AWS org @Jan?
Jan
Janalmost 8 years ago
Well so to start with I have 1 divisions aws accounts I will want to manage, they already exist
Jan
Janalmost 8 years ago
They already are in an AWS org
Jan
Janalmost 8 years ago
I won't manage the org to start with
Jan
Janalmost 8 years ago
Just walking, gimme a few minutes
Jan
Janalmost 8 years ago
Actually I guess there is nothing to. Import
Jan
Janalmost 8 years ago
It's just where the top level. Iam user is
Jan
Janalmost 8 years ago
And what account the iam users are crated in
joshmyers
joshmyersalmost 8 years ago
Have you looked at using terraform import to create state for those resources once you want them managed. Once in the state, add the terraform resource config info geodesic
Jan
Janalmost 8 years ago
Yea that could solve it should I need to later
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
@Jan there is some info about provisioning or importing an org in our docs https://docs.cloudposse.com/reference-architectures/cold-start/#provision-organization-project-for-root
Jan
Janalmost 8 years ago
Brilliant thanks
Jan
Janalmost 8 years ago
heya, on assume-role I am seeing this now

2018/12/05 13:55:44 Request body type has been overwritten. May cause race conditions
Jan
Janalmost 8 years ago(edited)

aws-vault: error: Failed to get credentials for admin (source profile for admin-users-bootstrap): RequestError: send request failed
caused by: Post <https://sts.amazonaws.com/>: dial tcp: lookup <http://sts.amazonaws.com|sts.amazonaws.com> on 8.8.8.8:53: read udp 172.17.0.2:40888->8.8.8.8:53: i/o timeout
Jan
Janalmost 8 years ago
Ah I think I know the issue
Jan
Janalmost 8 years ago
So the corporate network I am on does not allow using ANY dns other than the local one
Jan
Janalmost 8 years ago
forcing 8.8.8.8 times out
Jan
Janalmost 8 years ago
export DOCKER_DNS=${DNS:-8.8.8.8}
Jan
Janalmost 8 years ago
might want to rethink setting that as a default. Many corporates will not allow using an external DNS
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
good point @Jan thanks, we’ll review it
Jan
Janalmost 8 years ago(edited)
@Andriy Knysh (Cloud Posse) what is TF_VAR_local_name_servers meant/intended to get populated by?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you asking about just local or all TF_VARs like name_servers?
Jan
Janalmost 8 years ago
only local
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
that’s for local dev environment, on local computers
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
we can setup DNS for that so the devs would be able to test locally
Jan
Janalmost 8 years ago
ah
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
then in your browser you would go to <http://local.example.net|local.example.net> to see the app
Jan
Janalmost 8 years ago
yea I guess I left it in the setup im running through
Jan
Janalmost 8 years ago
mistakenly
Jan
Janalmost 8 years ago
😄
Jan
Janalmost 8 years ago
running though getting a setup going with 3 of my team mates
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
nice
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
let us know how it goes
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and thanks again for testing and finding all those issues
Jan
Janalmost 8 years ago
👍️
Jan
Janalmost 8 years ago

warning: adding embedded git repository: build-harness
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: 	git submodule add <url> build-harness
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: 	git rm --cached build-harness
hint:
hint: See "git help submodule" for more information.
Jan
Janalmost 8 years ago
would having build-hardness in the .gitignore make sense?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
yep 100%
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
Jan
Janalmost 8 years ago
yea I meant in the root.cloudposse.co
Jan
Janalmost 8 years ago
and those
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Jan
Janalmost 8 years ago
odd, I updated it but doesnt reflect here
joshmyers
joshmyersalmost 8 years ago
@Jan jdn-za changed the title from Terragrunt region env vars should be variable to Terragrunt region & Account paramaters should be variable 4 minutes ago
Jan
Janalmost 8 years ago
yea
Jan
Janalmost 8 years ago
much of a muchness
Jan
Janalmost 8 years ago
So on my "list" for today is to get some users provisioned into the ref architecture I have built
Jan
Janalmost 8 years ago
get a vpc setup
Jan
Janalmost 8 years ago
Finding it frustrating trying to figure out what to do next and if I am on the right path
Jan
Janalmost 8 years ago

.<
Jan
Janalmost 8 years ago
might just be the pain killers
joshmyers
joshmyersalmost 8 years ago
@Jan That doesn’t look to be re users
Jan
Janalmost 8 years ago
so yea kinda explaining badly
Jan
Janalmost 8 years ago(edited)
im looking at vpc first
Jan
Janalmost 8 years ago
so do I add these into the Dockerfile to be pulled?
Jan
Janalmost 8 years ago
how does one "inject" a tf module into the geodesic toolchain
Jan
Janalmost 8 years ago
Maybe I need to not use the docs as the reference just yet?
Jan
Janalmost 8 years ago
ok so
joshmyers
joshmyersalmost 8 years ago
So Geodesic takes the tfvars from foo.example.com conf dir and uses multi stage docker builds to pull the actual TF files from their root modules repo. If we want to add some more TF resources, I think we can just add them to the conf dir and or better yet, create a module and add as a git submodule
Jan
Janalmost 8 years ago
k im with you
joshmyers
joshmyersalmost 8 years ago
in my geodesic container actually has:
joshmyers
joshmyersalmost 8 years ago
joshmyers
joshmyersalmost 8 years ago
Obvious thing to watch out for is naming clashes, other than that I think it should JFW
joshmyers
joshmyersalmost 8 years ago
Jan
Janalmost 8 years ago
taking a look
Jan
Janalmost 8 years ago
was in a meeting
Jan
Janalmost 8 years ago
Yep
Jan
Janalmost 8 years ago
what about the root account iD?
Jan
Janalmost 8 years ago
also what version of git are you using?
Jan
Janalmost 8 years ago
git submodule add --tag
Jan
Janalmost 8 years ago
--tag isnt supported
joshmyers
joshmyersalmost 8 years ago
TF_VAR_aws_assume_role_arn will always be set to whatever is in the Dockerfile, so shouldn’t fall back to the default, which is still a hardcoded thing
Jan
Janalmost 8 years ago
right
joshmyers
joshmyersalmost 8 years ago
Could have been better to default to an empty string there
joshmyers
joshmyersalmost 8 years ago
When you add a git submodule, it is a pointer to another repo git SHA. Once you add the submodule, you should be able to checkout whatever branches from that repo
Jan
Janalmost 8 years ago
cool so the submodule should be in the conf dir
joshmyers
joshmyersalmost 8 years ago
joshmyers
joshmyersalmost 8 years ago
or you could literally dump some .tf files in conf/myawesometfresources
joshmyers
joshmyersalmost 8 years ago
Be good to get a steer on this, I’m just poking around 🙂
Jan
Janalmost 8 years ago
so when adding a submodule
Jan
Janalmost 8 years ago(edited)
I guess I need to still add my own .tfvars file in the conf/myawesometfresources/ dir
joshmyers
joshmyersalmost 8 years ago
Yeah, it looks like the general approach is to be data driven for each env and your TF resources live in another sub module
Jan
Janalmost 8 years ago
mmmmmm
Jan
Janalmost 8 years ago

module "label" {
  source     = "git::<https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.3.3>"
  namespace  = "${var.namespace}"
  name       = "${var.name}"
  stage      = "${var.stage}"
  delimiter  = "${var.delimiter}"
  attributes = "${var.attributes}"
  tags       = "${var.tags}"
}

resource "aws_vpc" "default" {
  cidr_block                       = "${var.cidr_block}"
  instance_tenancy                 = "${var.instance_tenancy}"
  enable_dns_hostnames             = "${var.enable_dns_hostnames}"
  enable_dns_support               = "${var.enable_dns_support}"
  enable_classiclink               = "${var.enable_classiclink}"
  enable_classiclink_dns_support   = "${var.enable_classiclink_dns_support}"
  assign_generated_ipv6_cidr_block = true
  tags                             = "${module.label.tags}"
}

resource "aws_internet_gateway" "default" {
  vpc_id = "${aws_vpc.default.id}"
  tags   = "${module.label.tags}"
}

Jan
Janalmost 8 years ago
so for example I now have added a submodule for vpc (https://github.com/cloudposse/terraform-aws-vpc) to conf/aws-vpc
Jan
Janalmost 8 years ago
I guess I would need to mod these variables to lookup from the geodessic env's
Jan
Janalmost 8 years ago
TF_VAR_stage or TF_VAR_namespace
Jan
Janalmost 8 years ago
I mean they should already override these right?
joshmyers
joshmyersalmost 8 years ago
https://github.com/cloudposse/root.cloudposse.co/blob/master/Dockerfile#L19 is already set for example, so that should just work..
Jan
Janalmost 8 years ago
yea for those ones
Jan
Janalmost 8 years ago
then name = "${var.name}"
Jan
Janalmost 8 years ago
I need a .tfvars ?
joshmyers
joshmyersalmost 8 years ago
If they aren’t being set in your equivalent root.example.com Dockerfile as TF_VAR, you will want to set some defaults for them via a tfvars file, that lives in <http://root.example.com/conf/myawesometfmodule/|root.example.com/conf/myawesometfmodule/>
Jan
Janalmost 8 years ago
so that right there is an expectation in terms of usage, that should be documented 😛
Jan
Janalmost 8 years ago
updating my pr
Jan
Janalmost 8 years ago
any/all modules should list in the readme what would be inherited vs what needs to be added to be injected into geodessic
joshmyers
joshmyersalmost 8 years ago
joshmyers
joshmyersalmost 8 years ago
Jan
Janalmost 8 years ago
Id even have a tfvars.example for the ones that are not inherited maybe two tfvars.geodessic-example tfvars.standalone-example
joshmyers
joshmyersalmost 8 years ago
Aye, could do https://www.terraform.io/docs/configuration/variables.html#variable-files - so like above you’d want them to be *.auto.tfvars
Jan
Janalmost 8 years ago
why .auto.tfvars?
joshmyers
joshmyersalmost 8 years ago
Jan
Janalmost 8 years ago
oh
Jan
Janalmost 8 years ago
duh
joshmyers
joshmyersalmost 8 years ago
@Jan Hows that working out?
Jan
Janalmost 8 years ago
clickbait title
Jan
Janalmost 8 years ago
but id like to see an <modules_name>.auto.tfvars.example file in every cloudposse terraform module
Jan
Janalmost 8 years ago
Jan
Janalmost 8 years ago
make is explicit where the things are required / inherited / defaults
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
@Jan all modules are ‘identity-less’, they don’t care about how and where they get deployed. All input vars are provided from higher-level modules. In many cases, they are provided as ENV vars from the Dockerfiles for the corresponding environment. In this case, we are able to re-use all modules without changing anything for all possible configurations of AWS accounts, stages/environments, etc.
joshmyers
joshmyersalmost 8 years ago
terraform-docs is in use for auto creating readme’s of variable requirements etc
Jan
Janalmost 8 years ago
So you would still not describe how to use these modules alongside geodesic?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
so if you already using a container like geodesic, then you define all required ENV vars and copy all required modules to the final container
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
in the Dockerfile
Jan
Janalmost 8 years ago
that still means I need to find the required vs defaults
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
no need to use .tfvar files and git submodules
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
but when you use a module, you see all its variables
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you can update whatever you need
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
it’s a simple pattern, add ENV vars and copy the modules you need
joshmyers
joshmyersalmost 8 years ago
@Andriy Knysh (Cloud Posse) rather than using submodules, would the other way be to just dump your high level module for root.example.com in the conf/foo dir ?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
we copy all modules we need in Dockerfiles
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
that’s why we use terraform-root-modules
joshmyers
joshmyersalmost 8 years ago
I see the terraform modules and geodesic as separate. Geodesic including makefile/dockerfile etc is the glue that is necessary for orchestration. The other modules are there to use if you want to
joshmyers
joshmyersalmost 8 years ago
Ah indeed, that is another way
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
but if you want to have another repo to copy from, and don’t want to put it into terraform-root-modules, then you add a Dockerfile to that repo, build an image, and then use Docker multi-stage to copy it into the final image
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you can use other ways of doing it, e.g. submodules, var files, etc., but it’s a completely diff pattern
Jan
Janalmost 8 years ago

~/dev/resources/cloudposse/forks/root.cloudposse.co   master  find . | grep tfvars
./conf/terraform.tfvars
./conf/atlantis-repos/terraform.tfvars
./conf/iam/terraform.tfvars
./conf/users/terraform.tfvars
./conf/root-iam/terraform.tfvars
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
so copying modules and specifying vars are separate concerns
Jan
Janalmost 8 years ago
then use of dockerfile env vars and .tfvars and auto.tfvars.example is very confusing
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
yes @Jan you correct, we used the vars inconsistently
Jan
Janalmost 8 years ago
they all do the same thing at different places
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
by specifying some of them in Dockerfiles, and some in var files
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
that could be improved
Jan
Janalmost 8 years ago
and there is no stated explanation of where and how which one
joshmyers
joshmyersalmost 8 years ago
@Andriy Knysh (Cloud Posse) What is the reasoning behind https://github.com/cloudposse/geodesic-aws-atlantis being a submodule but TF code (high level modules like terraform-root-modules) is Docker multi stage?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
atlantis was just a test, it’s not in the official docs
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
@Erik Osterman (Cloud Posse) was playing with that
joshmyers
joshmyersalmost 8 years ago
Ah OK
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
@Jan to define vars, you can use just Dockerfiles, just var files, or a combination of them
Jan
Janalmost 8 years ago
and when I get to 60+ tf modules?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
i agree, one way would be better to not confuse people
Jan
Janalmost 8 years ago
I have a massive dockerfile with vars
Jan
Janalmost 8 years ago
every time I need to set a new var
Jan
Janalmost 8 years ago
and then I need to worry about unique var names at the env level?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you would have to worry about that in any case, in Dockerfiles or in var files, or any other place
joshmyers
joshmyersalmost 8 years ago
There is no getting away from having to set vars
joshmyers
joshmyersalmost 8 years ago
^^
Jan
Janalmost 8 years ago
sure,....
Jan
Janalmost 8 years ago
are you doing 1 geodesic module per aws account or smaller units?
Jan
Janalmost 8 years ago
so I mean if I have a "dev" account
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
per environment (prod, staging, dev, etc.)
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
which could be in separate AWS accounts, or in one (depending on requirements and client requests)
Jan
Janalmost 8 years ago
and I want multiple vpc's and then I want to pass name = "${var.name}"
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
yes, but you have different stages, so no naming conflicts even if you deploy all stages into one account
Jan
Janalmost 8 years ago
I dont want to then have a ENV TF_VAR_fooname="devFoo
Jan
Janalmost 8 years ago
per vpc / project / resource
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
name should be the same for all accounts/environments (prod, staging, dev)
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
that’s why we have stage
Jan
Janalmost 8 years ago
name in the sense of vpc?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
in the sense of application/solution name
Jan
Janalmost 8 years ago
(im looking at the terraform vpc module, just to be clear here)
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
for example, your VPC could be named like this:
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
cp-prod-myapp for prod
Jan
Janalmost 8 years ago
and in the case where I have a pre-production account that has like 30+ vpcs?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
cp-staging-myapp for staging
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
then you use attributes to add additional params to each ID generated by the label modules
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
for example
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
cp-prod-myapp-unit1
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
cp-prod-myapp-unit2
Jan
Janalmost 8 years ago
And where are you setting the attributes then?
Jan
Janalmost 8 years ago(edited)
as env vars in your dockerfile
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
each module has a var attributes
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you can set them in a few diff ways:
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
1. Directly in a higher-level module
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
2. In Dockerfile
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
3. in var file
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
it all depends on a particular use-case
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and you either hardcode them (e.g. in a higher-level module) if they never change, or use ENV vars if you think they might change
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
but don’t worry about name collision between environments/stages, you have stage for that
Jan
Janalmost 8 years ago
so lets say for example using the backing-services root module
Jan
Janalmost 8 years ago
to create the vpc
Jan
Janalmost 8 years ago
what is the expectation for setting this is a cidr I want
Jan
Janalmost 8 years ago
mmm
Jan
Janalmost 8 years ago
wait a sec
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you need to create your own terraform-root-modules or similar repo with diff name if needed
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and provide the CIDR block you need (hardcoded or from var)
Jan
Janalmost 8 years ago
the backing-services is a kops/k8s specific vpc?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
in our terraform-root-modules yes, it was intended to be used and peered with a kops VPC
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
in your terraform-root-modules, it could be in the way you want
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
our terraform-root-modules was not intended to be copied verbatim, it’s just a reference architecture
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
but it uses the TF modules, which could be used everywhere
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
the label module is the central piece here
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
it allows to specify unique names for all environments without naming collisions
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and it does not matter if you deploy everything into just one AWS account, or multiple account per environment
Jan
Janalmost 8 years ago
So I mean I missed that this part is meant to be copied and modded to my needs
Jan
Janalmost 8 years ago
is it stated someplace int he getting started?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
here is an example of using attributes in the same module to create unique names if you have more than one resource of the same type (e.g. role, distribution, etc.) https://github.com/cloudposse/terraform-aws-cloudfront-s3-cdn/blob/master/main.tf#L7
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago

So I mean I missed that this part is meant to be copied and modded to my needs
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
@Jan that’s not probably stated in the docs
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
yea they are not perfect
Jan
Janalmost 8 years ago
So I mean from a "fresh to the project" perspective im not sure there is enough explained about how its meant to be used as yet
Jan
Janalmost 8 years ago
I get they are not perfect
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
docs is always the most difficult thing to create 🙂
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you either want to be concise, or you spend a year to create a book
Jan
Janalmost 8 years ago
but maybe it would add huge value to sitdown with a fresh user and write downt he step by step requirements to get from 0 to a set account/vpc/resources blueprint
joshmyers
joshmyersalmost 8 years ago
A module in terraform-root-modules is little more than some variables and calling other modules which do the heavy lifting.
Jan
Janalmost 8 years ago
maybe take a multi az wordpress on k8s with multiple envs
Jan
Janalmost 8 years ago
and rds / elasticache
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
all good points @Jan
Jan
Janalmost 8 years ago
I have approached diving into the docs and code base knowing what I want to create (and how to do so in terraform) in order to try understand how geodesic would work
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
thanks again
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
so yea, geodesic is just a container with a bunch of tools required to provision infrastructures
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
terraform-root-modules is an example of a reference architecture, shows how to use the TF modules, and is just one way of doing things
Jan
Janalmost 8 years ago
well its been a pretty frustrating process 😛 (to be fair I was warned it would be)
Jan
Janalmost 8 years ago(edited)
so let me start back at the begging with my new understanding
Jan
Janalmost 8 years ago
how would I best go about:
1. setting up a geodesic project with 7 accounts (all pre-existing)
2. setting up users to be created
3. setting up env / project vpc(s) in these accounts
4. setting up resources in some of these
5. peering vpc's selectivley
Jan
Janalmost 8 years ago
I had before used and modified the reference architecture
Jan
Janalmost 8 years ago
and have that all working so far as admin users with cross account sts assume and dns delegation with acm etc
Jan
Janalmost 8 years ago
if you were to describe how to do my list, not in depth, what should I follow
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
you already forked terraform-root-modules
Jan
Janalmost 8 years ago
just did so
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
that’s your collection of module invocation
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
start updating it to suit your needs
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
e.g. change the VPC CIDR, add more modules you need, remove the modules you don’t need
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
then it would be ready to be deployed to all accounts
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
note that you add some modules to it which could be used only in some accounts, but not in the other
Jan
Janalmost 8 years ago
let me go remove everything I created previously first
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
then in Dockerfile(s) just copy what you need
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
per account
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
the COPY commands will be different for all accounts b/c you need different modules in each (some modules are the same for all)
Jan
Janalmost 8 years ago
So the root modules would become the whole module catalog
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
create 7 repos, one per account
Jan
Janalmost 8 years ago
other than fully remote TF modules
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
7 Dockerfiles
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and update all ENV vars in the repos to reflect the accounts
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
yes, exactly, the root modules would become the whole module catalog
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
the whole infrastructure catalog, for ALL accounts
Jan
Janalmost 8 years ago
and there afterwards when I want to add 3rd party ones to only some accounts?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
either add them to the root modules (if you think it makes sense and you might want to re-use it somewhere else), or add it directly to one of the infra repo
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago(edited)
if you want to add them to more than one infra repos, then better to add them to the root modules
Jan
Janalmost 8 years ago
mmm
Jan
Janalmost 8 years ago
how large do these root module end up becoming?
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
reflecting the whole infrastructure
Jan
Janalmost 8 years ago
I might just batch them into categories or something
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
but sure, you can split it into a few repos
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
and add them to the final Dockerfile as multi-stage
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
the point here is that you could re-use the code from terraform-root-modules in many environments (prod, staging, dev), some of them will be the same, some unique to a particular repo
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
(wow i have some reading to do today)
Jan
Janalmost 8 years ago
hahah
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
expect some threaded converstations
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
😃
Jan
Janalmost 8 years ago

# Disable Role ARN (necessary for root account on cold-start)
[ "${DISABLE_ROLE_ARN}" == "0" ] || sed -Ei 's/^(\s+role_arn\s+)/#\1/' main.tf
Jan
Janalmost 8 years ago
nice addition!
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
though still a nasty hack!
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
😃
Jan
Janalmost 8 years ago
better this way than 1 vim and 1 sed
Jan
Janalmost 8 years ago
@Andriy Knysh (Cloud Posse) thanks for your explanations earlier btw
Jan
Janalmost 8 years ago
I seem to be getting on now
Andriy Knysh (Cloud Posse)
Andriy Knysh (Cloud Posse)almost 8 years ago
no problem, looks like it @Jan 🙂
Jan
Janalmost 8 years ago
cool vpc done
Jan
Janalmost 8 years ago
however the subnet math seems a bit odd...
Jan
Janalmost 8 years ago
I provided a /22 range over 3az 2 tier and ended up with 6 x /26's
Jan
Janalmost 8 years ago(edited)
mmmmm
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
we generate subnets in a table manner
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
that takes into account a max number
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
stable not table*
Jan
Janalmost 8 years ago
so first off was surprised by ipv6 being enabled
Jan
Janalmost 8 years ago
Maximum number of subnets that can be created. The variable is used for CIDR blocks calculation
Jan
Janalmost 8 years ago
still...
Jan
Janalmost 8 years ago
I mean I did expect 6 subnets, which is what I got back
Jan
Janalmost 8 years ago
they are just smaller than expected
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
the full calculation is broken down in the README
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
it's rather complicated (and necessarily so)
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
crap
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i don't see the calculation there anymore
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i think i'm getting confused by our other subnet module
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
(@Jan sorry i'm busy onboarding a couple new hires today so i'm very distracted)
Jan
Janalmost 8 years ago
so I mean a /22 would be 1022 usable ip's so even removing say 5 for aws uses per subnet I would still expect like 165 odd useable per subnet
Jan
Janalmost 8 years ago
all good mate
Jan
Janalmost 8 years ago
its like 10:20pm here so probably wont carry on much longer
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
i'll catch up on this discussion later on today
Jan
Janalmost 8 years ago
cool im gonna carry on for now since I will rebuild these vpc's any way
Jan
Janalmost 8 years ago
maybe when you are back, how would I best go about creating multiple vpcs within a single geodesic module
Jan
Janalmost 8 years ago(edited)
say stage{a,b,c,d,e}.example.com
Jan
Janalmost 8 years ago
I have a pre calculated list of /22's and /23's that would get used, just read from a remote state output of a map
Jan
Janalmost 8 years ago
stagea.example.copm = 10.0.0.0/22
Jan
Janalmost 8 years ago
etc
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
I created that issue to better address the purpose of root modules
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
in short, you nailed it with this comment:
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago

root modules would become the whole module catalog of your organization
Jan
Janalmost 8 years ago
wrong channel
Jan
Janalmost 8 years ago
oops
erik
erikalmost 8 years ago
set the channel description: Discussions related to https://github.com/cloudposse/geodesic
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
rejoice!
Jan
Janalmost 8 years ago
Nifty for debugging
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
@Jesse Bye I think it's good you're looking at both Gruntworks library as well as our own. They build solid stuff.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
The key differentiator is our approach.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
1) we don't rely on a wrapper like terragrunt
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
2) we containerize our entire tool chain and docker extensively to deliver the solution
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
3) everything is 100% apache2 open source (we accept most PRs)
Jesse Bye
Jesse Byealmost 8 years ago
I definitely like that 3rd point 😀 it's very hard for us to evaluate Gruntwork without being able to look at any real source code
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
(i think they will let you do that though if you maybe sign an NDA...)
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
Jesse Bye
Jesse Byealmost 8 years ago
They offer a 30-day money back agreement after purchase, so you have to pay, check it all out, then cancel within 30 days if you don't like it
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
are you looking to adopt kubernetes?
Jesse Bye
Jesse Byealmost 8 years ago
Eventually, yes. For now, though, we are looking at an ECS-based architecture
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
ok
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
Have a look also at #airship by @Maarten van der Hoef for ECS
Maarten van der Hoef
Maarten van der Hoefalmost 8 years ago
@Maarten van der Hoef has joined the channel
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
This is what one of our single account architectures looks like: https://github.com/cloudposse/testing.cloudposse.co
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Basically every AWS account is a repo, defined with a Dockerfile and pulls in source from a shared repository (terraform-root-modules) of code.
Jesse Bye
Jesse Byealmost 8 years ago
Interesting
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
And we deploy https://www.runatlantis.io/ with each account
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
gruntworks takes a different approach. I think they have a monorepo for all AWS account and then a service catalog like our with apps to deploy therein.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
they use a shared terraform statebucket for all accounts
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago(edited)
we deploy (1) state bucket/dynamodb per account and share nothing (heck even our account repos share nothing)
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
this lets every account act autonomously and be managed by different teams
Jesse Bye
Jesse Byealmost 8 years ago
Thanks for the info, Erik. I'll have to take some time to digest it and see how it fits with how we are doing things. We already have a big chunk of Terraform code we wrote, but it has a fair number of issues and is all based around EC2 instances, not ECS. So as we move to using containers, we're looking at a fresh start using a more mature codebase.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
yea, this is a good transition point to consider other alternatives
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Added some more thoughts here: https://github.com/cloudposse/docs/issues/351
Jesse Bye
Jesse Byealmost 8 years ago
@Erik Osterman (Cloud Posse) do you have an infrastructure diagram of any sort showing how you lay out the VPCs, bastions, peering, etc. in your reference arch?
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
good question: at this point, we don't opine down to that level.
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
we provide the various components, but don't say what your network should look like
Erik Osterman (Cloud Posse)
Erik Osterman (Cloud Posse)almost 8 years ago
Check out our various subnet modules that implement the different kinds of strategies