#announcements (2018-06)
Cloud Posse Open Source Community #geodesic #terraform #release-engineering #random #releases #docs
This channel is for workspace-wide communication and announcements. All members are in this channel.
Archive: https://archive.sweetops.com
2018-06-06

@Erik Osterman (Cloud Posse) has joined the channel
2018-06-13

@Bot has joined the channel

@chris has joined the channel

@Andriy Knysh (Cloud Posse) has joined the channel

@wookasz has joined the channel

set the channel topic: Cloud Posse Open Source Community

@tamsky has joined the channel

anyone else have trouble in their terminal with the selected glyphs in the prompt?

WHITE_HEAVY_CHECK_MARK=$'\u2705 '
BLACK_RIGHTWARDS_ARROWHEAD=$'\u27A4 '
TWO_JOINED_SQUARES=$'\u29C9 '
CROSS_MARK=$'\u274C '

yea, it’s unfortunately a bug we haven’t solved

it’s a combination of usign UTF8, prompts and terminals

I’ve tried quite a few fonts in xterm

i think most of us use iTerm2, but there are still some problems

(OSX thing)

what are the goals behind the glyphs ?

@Erik Osterman (Cloud Posse) uploaded a file: image.png

to visually communicate information like the powerline shell for zsh/bash

I suppose we could create a non-fancy mode

currently, the non-printing glyphs disturb readline, so history editing gets confused

ok, I’ll offer a non-unicode set of glyphs in a PR soon

that would be awesome!

I know a few who would appreciate it

wow, I think you might have helped me find the answer though

I think it’s related to this: https://superuser.com/questions/301353/escape-non-printing-characters-in-a-function-for-a-bash-prompt
In a Bash Prompt (PS1 variable), I’m calling a function to potentially add text to the prompt: export PS1=”\u@\h $(my_function) $ “ However, the function in the prompt contains ANSI color codes …

we already use \[
,\]
in the PS1
, but maybe we need to throw in some \001
, and \002
in there too

@mcrowe has joined the channel

welcome @mcrowe!

yeah, but for you, they’re printing, and for me they’re not, so use of \[
won’t help

hrm

can you send me a screenshot?

@tamsky uploaded a file: image.png

oh wow, yea, that’s bad

@Erik Osterman (Cloud Posse) uploaded a file: image.png

I understand, but my guess is, iTerm is actually choosing a different font for rendering unicode glyphs, and the font in use for your terminal doesn’t actually include those codepoints.

which isn’t something that most terminal programs can do (least among them: xterm)

I’ll admit it works in iterm, I tried it… I just can’t use it.

i agree we should offer a mode that does require it.

ok, great, I’ll do the work



you got inputrc, readline and bash questions, I got answers.

redirecting file descriptors in bash is still a head scratcher for me though

yea, i’ll never remember the syntax for that

[ -n "${UNICODE_PROMPT_DISABLED}" ] && {
WHITE_HEAVY_CHECK_MARK=$'\u2705 ' ;
BLACK_RIGHTWARDS_ARROWHEAD=$'\u27A4 ' ;
TWO_JOINED_SQUARES=$'\u29C9 ' ;
CROSS_MARK=$'\u274C ' ;
} || {
# these use 8859-1 codepoints:
WHITE_HEAVY_CHECK_MARK=$'X ' ;
BLACK_RIGHTWARDS_ARROWHEAD=$'-> ' ;
TWO_JOINED_SQUARES=$'¤ ' ;
CROSS_MARK=$'× ' ;
}
?

Let’s use something more generic. For example, PROMPT_STYLE=plain

As for the bash logic, please use standard if/then rather than pipeline notation

Feels like we’re introducing technical debt if we repurpose the current variables.

I can take a look at it later tonight. Currently afk.

@tamsky
redirecting file descriptors in bash is still a head scratcher for me though
This one still doesn’t click for me:
exec 1> >(logger -t process-psv) 2>&1

I get it in principle, but I always have to lookup how to do it

@sarkis has joined the channel

@mike.ballou has joined the channel
2018-06-14

@Robert Tisdale has joined the channel

@alex has joined the channel

@alebabai has joined the channel

@dave.yu has joined the channel

@yurchenko has joined the channel

@evan has joined the channel

@tamsky I had a long chat with @mcrowe today. lots of great feedback. one of the things that came up was using a dotfile manager. You recently shared your dotfiles. is this something you would use?

I’d need to understand what the “dotfile manager” would do?

w.r.t. geodesic and friends

yadm - Yet Another Dotfiles Manager

so there’s a convention/interface for adding shell customizations (E.g. aliases, prompts, etc)

dotphiles - A community driven framework of dotfiles.

conventions would be awesome. the lack of .inputrc in the current geodesic has me adding
ADD <https://raw.githubusercontent.com/play-with-docker/play-with-docker/master/dockerfiles/pwm/.inputrc> /conf/.inputrc
to many sub-Dockerfiles

I think the interface is the important part

i’m actually not familiar with .intputrc
, which is probably why it’s not there

I’m trying to figure out how I’d set some default for PROMPT_STYLE in my OSX shell that would get honored in geodesic shells

consider passing --env-file
?

I know I heard once here in slack that someone wanted $PWD mapped into their geodesic shell.

Geodesic is the fastest way to get up and running with a rock solid, production grade cloud platform https://docs.cloudposse.com/geodesic/

could also introduce something like a ~/.geodesic/env
file

sure, have the docker run wrapper test for the file ~/.geodesic-env
and add the flag --env-file ~/.geodesic-env
if it exists

here’s for you:
what Add support for PROMPT_STYLE environment variable that alters the behavior of the shell prompt why The current utf8 heavy prompt breaks some terminals Users have mentioned they'd prefer a …
what Look for a ~/.geodesic/env file and pass it as –env-file, if found why Provide a way to set some defaults for all geodesic shells.

@mcrowe added this to track it: https://github.com/cloudposse/geodesic/issues/148
what Provide a standard interface for shell extensions Re-use some existing standard why Allow users to define their own aliases, prompts, inputrcs, etc references https://github.com/dotphiles/dotp…

Erik, does this flag and logic that we just imagined we need, already exist:: https://github.com/cloudposse/geodesic/blob/master/rootfs/templates/wrapper#L72-L74
if [ -n "${ENV_FILE}" ]; then
DOCKER_ARGS+=(--env-file ${ENV_FILE})
fi
Geodesic is the fastest way to get up and running with a rock solid, production grade cloud platform https://docs.cloudposse.com/geodesic/

# ENV_FILE=~/.geodesic/env geodesic
looks like it works

do we want to also test for a default file and add it to DOCKER_ARGS[@]?

local gedesic_env_file="~/.geodesic/env"
# use our default env file if it exists
if [ -f ${geodesic_env_file} ]; then
DOCKER_ARGS+=(--env-file=${geodesic_env_file})
fi

Yea, so I think checking for a default is what we could add

I’d make this: GEODESIC_DEFAULT_ENV_FILE
or something. so even that can be overridden

e..g for different projects

also @mcrowe if you don’t mind making an issue around the region issue from yesterday… I do want to take a look but it’s looking more like this weekend the earliest

sorry for delay on that

@sarkis – actually, I needed to ping @Andriy Knysh (Cloud Posse) instead of you. It was his repo

ah ok - i still don’t mind looking into it… if he can’t get to it

Ah, @Andriy Knysh (Cloud Posse) replied in the other channel with some feedback. I’ll get it setup and submit a PR with his feedback

@mcrowe @sarkis you talking about this https://github.com/mike-zipit/terraform-aws-acm-request-certificate/blob/5ac54c38a5ca2cea715e5c2cee1218c508a0f888/main.tf or something else?
terraform-aws-acm-request-certificate - Terraform module to request an ACM certificate for a domain name and create a CNAME record in the DNS zone to complete certificate validation

to be clear i was referring to: >@sarkis Ran into an interesting situation today. Using Cognito, it needs certificates in us-east-1
in order to be used for the auth domain. We’re in us-east-2
, so I’m going to have to: …

right

ah, @Jamie replied to that

in the other channel

ah yea reading over that code - looks like thats it @Andriy Knysh (Cloud Posse) - yep @mcrowe just referenced that - going to get us a PR soon

yea it’s a nice way to do it, specify two providers with alias
provider "aws" {
region = "us-east-2"
}
provider "aws" {
alias = "east"
region = "us-east-1"
}

that’s how we do it https://github.com/cloudposse/terraform-root-modules/blob/master/aws/acm-cloudfront/main.tf
terraform-root-modules - Collection of Terraform root module invocations for provisioning reference architectures

we use us-west-2
too for all other stuff

For @tamsky and @Erik Osterman (Cloud Posse) – .inputrc, prompt and all this fall under this rubric of “dotfile” management. IMO, the way to approach this is:
- Move any files that are “user breakable” from
/etc/profile.d
into acloudeposse/geodesic-dotfiles
(which has the default configuration for environment, prompt, anything shell related) Dockerfile
for geodesic has something like:ENV USER_HOME=<https://github.com/cloudposse/geodesic-dotfiles> RUN curl -fLo /usr/local/bin/yadm <https://github.com/TheLocehiliosan/yadm/raw/master/yadm> && chmod a+x /usr/local/bin/yadm RUN cd /conf && yadm clone $USER_HOME
- This would put the user in control of their bash setup – they could clone the “breakable” dotfiles from
cloudposse/geodesic-dotfiles
and then add their custom settings

though I’m sure once I try to implement this I’ll find some holes in that logic

yea, something along those lines…

could you add that to the issue? @mcrowe

Yeah

personally I don’t think we need a dotfile manager

I put it under the rubric of “homedir” management

what I don’t like about homedir management is consistency

I see what you’re getting at

it’s like an escape hatch

if I don’t want to make my homedir git repo public, then here be demons

should only be used when knowing what you’re doing.

yea, true

cloning git private repos in docker no fun

especially using some 3rd party “manager”

I’m pretty certain alias
commands will want to enter the mix as well at some point.

yadm = git (but the .git directory is offset from your home directory).
yadm clone [repo]
yadm add .inputrc
yadm commit
yadm push
etc

I already have a git repo

But, I’m not planning on putting my home directory in geodesic. But my aliases, maybe some other helpers, yea

i guess my Q would be - when would we want to do something more than just terraform plan/apply or like chamber cli commands in geodesic.. since it mounts your homedir to /localhost - i can do most things outside of the container

Here’s a flavor:
$ yadm ls
Commit: 4d4ee021adb12c3c147f69dc0979f00094456c08 (HEAD -> master)
Author: Mike Crowe <[email protected]>
Date: 2018-04-06 22:20:14 -0400 (10 weeks ago)
Latest changes
.aws/config | 11 ++++++
.bash-custom/bash-it.sublime-project | 11 ++++++
.bash-custom/bash-it.sublime-workspace | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.bash-custom/custom.aliases.bash | 2 +-
.bash-custom/environ.bash | 4 +-
.bash-custom/functions.bash | 7 ----
.bash-custom/history.bash | 2 +-
.bash-custom/nvm.bash | 2 +-
.bash-custom/rerun.bash | 2 +-

what I don’t like about homedir management is consistency
vs
it’s like an escape hatch
should only be used when knowing what you’re doing.
I’m pretty sure we can’t have both consistency and escape hatches

I’ll rejoin the conversation in a couple hours. Good luck to us

So, for my local development, I have a pretty extensive .bashrc
that configures a bunch of stuff. However, there’s a case to be made for those guest systems (like geodesic, remote ssh logins, etc), maybe that needs to be a public gist or something different

ENV USER_HOME=<https://github.com/cloudposse/geodesic-dotfiles>
RUN curl -fLo /usr/local/bin/yadm <https://github.com/TheLocehiliosan/yadm/raw/master/yadm> && chmod a+x /usr/local/bin/yadm
RUN cd /conf && yadm clone $USER_HOME
@Erik Osterman (Cloud Posse) I guess this reminds me that I’ve been wondering how/what you expect geodesic users to handle geodesic – as a template that individuals and organizations modify and then use internally, a stepping off point, so to speak…. or more as a common central starting point for all things in the CP ecosystem?

I’ve seen both. I think inheriting from our “base image” is a great start, but anticipate that as a company’s usage increases, that they’ll eventually “hard fork” and have their own base.

organizations with a sizable ops team may prefer to manage their own.

@Jeremy G (Cloud Posse) has joined the channel

@jamie has joined the channel
2018-06-15

@Erik Osterman (Cloud Posse) you May have noticed the two new alerts repos I put in.

They are 90% done codewise. Needs readme done.

I’m going to rename all the repos so that the alert subject is last. So that they sort nicely.

And in the latest repos I’ve added ‘additional endpoints’ variables

So instead of only having an sns topic, you can pass in autoscaling groups as endpoints, or lambda functions as endpoints.


thanks sweet!

@mcrowe was just telling me that tackling cloudwatch alerts of the type you’re creating are next up on his list of things todo

thanks @jamie! do you want us to review anything yet?

I’m doing a demo of them to my client next week, so I should have the code to 100 by Tuesday. I’ll do my pull requests then. :)

@mcrowe if you put yours off till next week I’ll have the template sorted. And we can both continue making alerts modules

The alerts modules are for: Awareness - such as slack. Automation- such as asg scaling Deployments- such as rolling back a codedeploy if the alert is triggered on a new version

I’ll do a push to my branches in a moment so you can see what’s been done

@LeoGmad has joined the channel


@Erik Osterman (Cloud Posse) and @mcrowe and the rest, I’m wanting to do a training day for my clients engineering team

trainingdayone - The repo containing the training Terraform configurations

@mike.ballou @dave.yu might be something for joany
trainingdayone - The repo containing the training Terraform configurations

I’ve just written this up today

@Purva has joined the channel


If anyone wants to use it you’re welcome, and if anyone has any good inputs for it, please let me know.

that’s cool

we’re starting to do more training. we’ll need to develop more materials like this.

@Purva, @chris have you guys tried/started doing any terraform training?

@jamie looks like a good start. Inevitably, a big project you’re taking on to teach this stuff.

Totally big job. I need to get their team of 14 introduced to what Terraform can do.

I don’t need to train to pro level. But I do need to get them thinking about what they can accomplish with Terraform

Day one is being filled out, and will likely need more READMEs

Day two is taking a more real world example, and working through that.

In this case it will be creating a CI/CD pipeline for Serverless deployments

With updating a lambda function, and API Gateway, and doing a rolling deploy with monitored events which would cause roll back.

Once training week is done, i’ll be back to the modules…

would love to incorporate something like this eventually into docs.cloudposse.com

what Add materials for holding trainings why Needed for many customer engagements references https://github.com/firmstep-public/trainingdayone


Well great!

terraform-aws-lb-s3-bucket - Terraform module to provision an S3 bucket with built in IAM policy to allow AWS Load Balancers to ship access logs

One more fargate tip: no more than 20 tasks running per account per region

The following table provides the default limits for Amazon ECS for an AWS account which can be changed. For more information on the service limits for other AWS services that you can use with Amazon ECS, such as Elastic Load Balancing and Auto Scaling, see

which can be changed

have you tried requesting a limit increase, or is that already on your path forward?

Hasn’t affected me yet. Eric and @sarkis have been working on an ecs fargate module for a client, so I was hoping to point it out!

@jamie thanks!

i bet they’d raise the limit like any other - just depends if you have biz level support on how quickly they get around to it

highly recommend this for clients that have business level+ support btw: https://aws.amazon.com/premiumsupport/trustedadvisor/ - one of the things it does is track if you get close to service limits
Learn about the cost savings, security, and performance features and benefits of AWS Trusted Advisor.

Other useful info includes reserved instance allocation and idle ebs volumes
2018-06-16

Hey guys, I’m finding a need to document a geodesic module for internal use. For example, the inputs needed, but also I need to export the outputs from the modules included. For example:
module "ecs_alb_service_task" {
source = "git::<https://github.com/cloudposse/terraform-aws-ecs-alb-service-task.git?ref=0.1.0>"
...
However, I typically want the outputs of this alb in my state, so I need to re-output the CP module’s output like this:
output "app_service_name" {
value = "module.ecs_alb_service_task.service_name"
description = "ECS Service name."
}
Check this out: https://gist.github.com/mike-zipit/fa936438c1edbb5f26ba68eec1cffaf8 This is WIP, but would like to validate if this is a need others see

This is definitely a need as the number of module deps grow. I think @Andriy Knysh (Cloud Posse) and @jamie will dig it.

Thank you for helping to remove the tedium

what Open PRs against terraform repos when terraform modules have new releases Open PRs against terraform repos when terraform providers have new releases why It's an extremely diverse ecosyste…

Looks in line with some of things we are doing for readme generation
2018-06-17

@sarkis do you have a minute? I’m trying to use terraform-aws-ecs-alb-service-task but having a weird problem

sure whats up

So, using terraform-aws-ecs-alb-service-task, the nginx container deploys and comes up (I see the default page). However, when my custom container deploys, it ends up dying

anything in the ECS service logs/container output?

what’s strange is I think it’s a health check

@mcrowe uploaded a file: image.png

I’ve ssh’d into the container (fixed various environment/permission issues I had), and I can run the container manually on the ECS host with docker run …..

does it go into a loop of starting/stopping the container?

yep

i think you are right in that it sounds like the scheduler is giving up after failed healthcheck threshold and just keeps trying to start a “healthy” container

I’ve bumped up the timeout on the alb:
health_check_timeout = 20
health_check_interval = 30

Plus, my target groups look like this in the EC2 console:

@mcrowe uploaded a file: image.png

(the healthy one is the nginx controller – the others are failed deployments of my container)

do you have your target group tf resource handy?

i ran into something similar when i wasn’t pointing my target resources to the right healthcheck endpoint

endpoint/port

@mcrowe uploaded a file: image.png

and the above unhealthy status seems to reaffirm this is where the issue is…

oh, traffic port – is this supposed to be ip
?

what is on that custom container?

i dont think there is any http server on your custom container*

a microservice. if you GET /
, it returns a JSON document of the status

ah ok… i think i know something else to look into.. does this container take a bit to load?

yeah, it does

so there is a grace period

before ECS will start considering failed healthchecks as unhealthy

ah, good point.

let me find it

Task definitions are split into separate parts: the task family, the IAM task role, the network mode, container definitions, volumes, task placement constraints, and launch types. The family is the name of the task, and each family can have multiple revisions. The IAM task role specifies the permissions that containers in the task should have. The network mode determines how the networking is configured for your containers. Container definitions specify which image to use, how much CPU and memory the container are allocated, and many more options. Volumes allow you to share data between containers and even persist the data on the container instance when the containers are no longer running. The task placement constraints customize how your tasks are placed within the infrastructure. The launch type determines which infrastructure your tasks use.

startPeriod The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default.

that’s my guess right now - is that the container is taking a bit to start.. healthchecks failing and getting into a loop there

if you used our module - can modify that here in this map: https://github.com/cloudposse/terraform-aws-ecs-container-definition/blob/master/variables.tf#L34
terraform-aws-ecs-container-definition - A Terraform module to generate well-formed JSON documents (container definitions) that are passed to the aws_ecs_task_definition Terraform resource

which reminds me to fix the README on that ^

well, i don’t think that’s in the terraform-aws-ecs-alb-service-task module yet, is it?

this should be used on it’s own… so an example: https://github.com/cloudposse/terraform-aws-ecs-alb-service-task/blob/master/example/main.tf#L62-L89
terraform-aws-ecs-alb-service-task - A Terraform module which implements an ECS service which exposes a web service via ALB.

i’m in the process of cleaning this all up and things may change :disappointed: - but all that module does is allow you to create a json doc out of terraform code - it’s not required to use it … you can just modify your .json for the container_definition_json

btw, did you see the issue I submitted about the environment variables? I had to just use pure .json files because I couldn’t pass environment variables in

did not, until now.. I just assigned to myself and will reproduce and see if we can workaround that

lmk if the startPeriod
fixes your issue - now I’m about it

testing it now

BTW, another thin I ran into but didn’t report yet is this: we need the ability to customize the task security policy (we needed to grant permissions to SSM with a specific arn). I hacked it like this in the module (it’s not ideal, but I think you get the idea):
data "aws_iam_policy_document" "ecs_execution_role" {
source_json = "${var.custom_policy_document}"
statement {
sid = "vLMpjauEwiCGsAJ9tJKsbSgn"
effect = "Allow"
resources = ["*"]
actions = [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogStream",
"logs:PutLogEvents",
]
}
}

hmm yea that makes sense and should be an option to pass in our own existing or managed security policy (if not provided then generate)

would you mind opening an issue @mcrowe if not, I can

I’ll do it later today if that’s ok

that works - i don’t know if i can get to anything today - so would be tomorrow at the earliest after client work

that may have done it – not getting an OOM error (so further along in the chain)

btw, do you know how to kill an ecs codepipeline deploy when it fails?

@sarkis Adding:
health_check_grace_period_seconds = 30
to my local copy of terraform-aws-ecs-alb-service-task
fixed the issue

PR?

@antonbabenko has joined the channel

2018-06-18

terraform-aws-ecs-web-app - A Terraform module which implements a web app on ECS and supporting AWS resources.

this implements the common pattern of provisioning an ECR integrated with CI/CD to deploy containers to an ECS task and adding an ALB ingress

That’s pretty sweet – needed that 2w ago

but it’s also just a prime example of using all other ecs modules

terraform-aws-ecs-web-app - A Terraform module which implements a web app on ECS and supporting AWS resources.

(realize it’s a bit late)


also, this uses our “readme generator” to convert a README.yaml
(using gomplate
) to a README.md

terraform-aws-ecs-web-app - A Terraform module which implements a web app on ECS and supporting AWS resources.

as part of this, it uses terraform-docs
to generate the wellformed markdown

I scheduled a quick call with you tomorrow about this. I think what I did has a different application

ok, look forward to talking at 10:30
2018-06-19

@Erik Osterman (Cloud Posse) uploaded a file: image.png

being able to easily identify out-of-date modules and automatically generate all the output
definitions from nested modules is something I’ve wanted

Did any of the modules i made help with the ecs web app?

I think we used your ecs codepipline changes

@sarkis would know more

i can walk you through what we have this week sometime

we’re showing the client how to use it right now

and i think sarkis also used your ecs task module as an initial starting off point

i’d be really interested in your feedback on our ecs-web-app module <— from an interface perspective

does it make sense?

we’ll probably create an ecs-job-app
soon <— which wouldn’t depend on an ALB

I read through it earlier very briefly and I thought it was well made from what I saw. I’ll give it a test later on - :)

yea the codepipeline and codebuild code you contributed - thanks a ton Jamie!

I’ll make sure you get credit in the READMEs for those projects

In my init-terraform scripts, I am seeing mount -a
failing to mount s3 to local

(dev-admin) backing-services ➤ init-terraform
/bin/sh: s3fs: not found

I was looking at previous chats, seems like this is common

what version of build-harness?

and geodesic

i am using a fork of geodesic,

Also I am not sure where we are putting build-harness version, I think its always master

<https://raw.githubusercontent.com/cloudposse/build-harness/master/templates/Makefile.build-harness>

My geodesic is mostly in sync with master

@rohit.verma what does which s3fs
return? (from inside geodesic container)

s3fs
Error: goofys takes exactly two arguments.

i am on goofys v0.19.0

looking at the s3fs on my geodesic container…
cat /usr/local/bin/s3fs
#!/bin/bash
# This script is used to mount filesystems from `/etc/fstab`
export DEVICE="$(eval echo ${1})"
export MOUNT_POINT="$(eval echo ${2})"
export BUCKET_REGION="${BUCKET_REGION:-${AWS_REGION}}"
# Evaluate the bash envs passed in via args and then execute goofys
exec goofys --file-mode=0600 --dir-mode=0700 --region=${BUCKET_REGION} --sse --acl=private ${DEVICE##s3://} ${MOUNT_POINT}

probably an issue with one of the last 2 args there ^ not being set

not sure yet why - tried to reproduce to no avail…

in my dockerfile I have added just RUN s3 fstab '${TF_BUCKET}' '/' '/secrets/tf'

@rohit.verma do you have ENV TF_BUCKET set before somewhere in the Dockerfile?

yes

running s3 fstab '${TF_BUCKET}' '/' '/secrets/tf'
directly in container gives no error

I think ideally it should mount the terraform bucket to /secrets/tf

but that is still empty

We can look into this together
2018-06-20

@sarkis Next week I’ll have an ECS treat for you

terraform-aws-ecs-ecs-spot-fleet - Terraform module to create a diversified spot fleet for ECS clusters

Its pending an update to the SpotFleet for allowing Launch Templates

A fraction of the cost of Fargate.

Looks really interesting Jamie - are you going to have a % of spot instances or I guess spot fleet handles that? I’m thinking what happens when prices spike…

Yep looks like it:
The Spot Fleet also attempts to maintain its target capacity fleet if your Spot Instances are interrupted due to a change in Spot prices or available capacity.

well, the fleet will be made of a mix of instance types

yea

so, if one instance type goes out of price, it boots another

last i tried anything with spot - there was no fleet

or it was super new i forget why we didn’t look into it

yeah, its new.

and they have released autoscaling for spot fleet recently too

it was pretty much unusable for anything mission critical for this reason

so, you can create a spot fleet, and scale it

really cool - looking forward to seeing the finished product!

when combined with a watcher script that runs on the instance (which you will see if you look in the user-data dir)

that starts ‘draining’ the instance as soon as it gets a spot instance termination notice

and setting the ‘draining lifetime’ of tasks to 1 min 45 seconds

it means that all of the containers running on the interupted instance get moved to another server before its removed

so you can keep your workload stable

its good for web sites, slightly less good for things that need to gaurentee connections for longer than 2 mins

i have been running spot instances for years, and they have only rotated out a few times

Very cool! I’d like to demo this for a company currently using spotinst.com

I think their spend is like 800K/mo on AWS :-)

Jamie, re: ssm param store policy docs PR, put in a comment in there - lmk if you have any Qs about the process for that stuff… I’m working on moving more of our repos to that README.yaml format

Thank you @sarkis

btw, added #releases where we’ll announce releases of our projects

@Erik Osterman (Cloud Posse) uploaded a file: image.png

Jamie - I know it’s getting late there so not doing the @ pings , do you have any prior art or tips for ECS Fargate CloudWatch monitoring - we obviously don’t have/care about the ECS cluster health, but starting to look into what we can monitor in the containers themselves - basic mem, cpu ,etc.

@sarkis Yo, keep the pings coming

I’ve done the README update that you suggested

ah great -

Okay so…

terraform-aws-ecs-events - Add on an SNS topic for capturing ECS events

I think this is great… gives me a nudge on where to look and I can just borrow this as a base (and give you credit of course), if you don’t mind
terraform-aws-ecs-events - Add on an SNS topic for capturing ECS events

Can you use the format of the lambda one I posted? So that all the new alarm modules can work the same?

Yea - I’m reviewing that one now as well

So mainly referring to alarms.tf and the inputs to be in this format: https://github.com/cloudposse/terraform-aws-cloudwatch-alarms-lambda/blob/init/alarms.tf#L1-L6?
terraform-aws-cloudwatch-alarms-lambda - Terraform module for creating a set of Lambda alarms and outputting to an endpoint

Exactly. I’ve made the repo now..

Thats a minor one…

but when do you need it by? I’ll make a fuller one

that follows the format of https://github.com/cloudposse/terraform-aws-cloudwatch-alarms-lambda/tree/init
terraform-aws-cloudwatch-alarms-lambda - Terraform module for creating a set of Lambda alarms and outputting to an endpoint

@jamie I reviewed your terraform-aws-ssm-parameter-store-policy-documents
- just a few nit picks

Also just curious Jamie - what’s your thoughts on the README generation process

It’s annoying. A form would be good ;)

what part of it could be improved?

A form would be good

in otherwords, an “init” process?

I’ll elaborate shortly. Just walking somewhere


Hi, I’m back.

So in regards to the README.yaml it isn’t very DRY

which parts?

hello all

Can’t remember if I said hello

# Name of this project
name: terraform-aws-ssm-parameter-store-policy-documents
# Logo for this project
#logo: docs/logo.png
# License of this project
license: "APACHE2"
# Canonical GitHub repo
github_repo: cloudposse/terraform-aws-ssm-parameter-store-policy-documents
# Badges to display
badges:
- name: "Build Status"
image: "<https://travis-ci.org/cloudposse/terraform-aws-ssm-parameter-store-policy-documents.svg?branch=master>"
url: "<https://travis-ci.org/cloudposse/terraform-aws-ssm-parameter-store-policy-documents>"
- name: "Latest Release"
image: "<https://img.shields.io/github/release/cloudposse/terraform-aws-ssm-parameter-store-policy-documents.svg>"
url: "<https://github.com/cloudposse/terraform-aws-ssm-parameter-store-policy-documents/releases>"
- name: "Slack Community"
image: "<https://slack.cloudposse.com/badge.svg>"
url: "<https://slack.cloudposse.com>"
related:
- name: "terraform-aws-ssm-parameter-store"
description: "AWS SSM Parameter Store module"
url: "<https://github.com/cloudposse/terraform-aws-ssm-parameter-store>"
# Short description of this project
description: |-
This module generates JSON documents for restricted permission sets for AWS SSM Parameter Store access.
Helpful when combined with [terraform-aws-ssm-parameter-store](<https://github.com/cloudposse/terraform-aws-ssm-parameter-store>)
# How to use this project
examples: |-
Create a policy that allows access to write all parameters
hcl
module "ps_policy" {
source = "git::<https://github.com/cloudposse/terraform-aws-ssm-parameter-store-policy-documents.git?ref=master>"
}

Don’t want to derail

Holy paste batman

sorry Robert!

hey @Robert Tisdale!


LOL, no problem I’m just yanking your chain @jamie

Hey @Erik Osterman (Cloud Posse)

can you propose (in pseudo code) how the YAML should look instead?

@Erik Osterman (Cloud Posse) the terraform-aws-ssm-parameter-store-policy-documents
(project name) gets used over and over

and in the intro areas especially, it would help if it was a variable

unfortunately, don’t see a way around that without recursion.

ah… it might turn into a case of mutliple levels of interpolation though since we already render this - thinking something like terraforms $$

-rw-r--r-- 1 erik staff 11291 Jun 20 12:50 README.md
-rw-r--r-- 1 erik staff 5429 Jun 20 12:50 README.yaml
but it’s at least 50% more DRY

yeah

anyways, thanks for the feedback. I think we can take over some of the “cleanup” burden to keep you focused on coding

whoa didn’t bother to look at that - nice

but there’s a stronger, more overwhelming reason we cannot do that

to me the biggest bonus is to only ever have to update the legal jargon in one spot

the purpose for the .yaml
format is so we can include it in our docs portal (docs.cloudposse.com)

if the .yaml
was itself templated, we would then need to create multiple parsers

one for readmes and one for hugo

Why use YAML for that instead of just markdown?


so basically, in hugo (our docs CMS) we can do this:

{{% include-github org="cloudposse" repo="terraform-root-modules" ref="0.1.5" file="codefresh.yml" title="Example codefresh.yml" language="yaml" type="code-block" %}}

this allows us to pull documentation in from individual repos

the hardest part about writing documentation is keeping it up to date

by allowing individual repositories to manage the general usage/examples/inputs/outputs/etc, we can reference that in our main documentation portal via YAML and ensure it’s up to date in both places

“documentation as code”


I have started to look into doing TDD with terraform.

My current opinion is not to do it

but to do validations as part of a test process

I would like to do a compromise

i think writing full on tests for everything is overkill

but running plan/apply/destroy 80% of the battle

i want to use our [testing.cloudposse.co](http://testing.cloudposse.co)
account for that

its also fucking horrid, terraform is not at the stage to validate that beyond plan

and use codebuild
with codepipeline
to automate that

@jamie something i’ve been pondering, more than TDD is RDD (Readme Driven Development)

yeah, well… Ive been reading on awspec, kitchen-terraform, goss, and inspec for the last 2 weks

weeks

@sarkis im in to that

@antonbabenko will probably have some more insights on it <– i know he uses kitchen-terraform

but @jamie what do you think about the plan/apply/destroy
part?

I think that there is a portion that could be done, and i think there could be a ‘minimum’ that can be tested for at ‘unit test’ time

@Erik Osterman (Cloud Posse) i think the plan/apply/destroy part could take too long as a ‘unit-test’ but as a further along test it works

you think so? i really feel like integration tests are going to be the bulk of the tests if and when we get to it

i dont know how useful unit tests are is what im tying to say

I agree. Its what I was attempting to articulate too.

I am not from a recent dev background. The unit test part allows for testing as you create quickly.

But Integration tests can be done… quite well with terraform

our modules are breaking frequently due to terraform changes outside of our control

this is why I want plan/apply/destroy

the time to run the tests isn’t a concern

it’s very frequent in software projects that tests taken 30-45 minutes or even more

I think we can get that bit…at least

although they take longer to run, and can be a lot of work to write

anyone check out terratest yet?

I read about terratest yesterday… did you read about it on reddit?

they had a big announcement a couple of months ago

it’s by Grunt Works (terragrunt)

i had talked to Yevgeniy about it as I helped bug squash a bit on terragrunt… he was telling me they had it ready to release but hashicorp kept telling him to hold off because they have something they want to come out with (surprise, they are all over the place :P)

so yea officially publicly available a couple months ago as erik said ^

Like, Terraform’s ‘issues’ list is huge. But i don’t like them any less.

They are the best of the crowd

oh yea - i just mean they should just let the community run with some things - it might help them focus on the core

but i can see the other side of that coin too

nice to have control (enforce quality)

I normally don’t use kitchen-terraform
and will not use terratest
because it is very hard to make meaningful tests. hcl/tf files are not code, so I don’t think we need just-developer-friendly-tool. I think we need something what is more like DSL (in a form of BDD/Gherkin). Also, there will be a validation of values before apply
, and a lot more…

Community Gardening - Summer 2018

Room in Gitter is - https://gitter.im/hashicorp-terraform/gardening
Where developers come to talk.

something like serverspec but for aws resources lol


I wish something more abstract.

Well, if there was a terraform for testing that was multi provider enabled…

For example, when I was looking for something like inspec for google provider a year and more ago I could not, and I don’t know if there is awspec for google now.

true

From what I see, there is 70% of testing things for AWS, 30% for Azure, and 0% for Google.

Google have a test system… I found it when researching this week..

let me find it

Its not quite right but this goes towards it https://github.com/inspec/inspec-gcp
inspec-gcp - InSpec GCP (Google Cloud Platform) Resource Pack

Are you guys using any pentest bots for testing code and infrastructure as part of the deploy pipeline?

https://github.com/guardicore/monkey <– I’ve been watching this repo
monkey - Infection Monkey - An automated pentest tool

but haven’t used it yet

And it looks very thorough

I actually expect very few clients to pass muster

hmm that is nice - thanks for sharing it @jamie - starred to dig into on my free time

the only thing that worries me with this stuff is getting an aws account suspended - i’ve heard some horror stories

not specifically about this but just in general

Well, yeah… if you are doing anything that is DOS related

you have to inform AWS

right

its on their TOS

like i know security firms need to have a special deal with AWS and follow some standards, etc

So, if you are running this bot and doing any DDOS or DOS features you have to fill in the AWS Support request first

and say that is what you are doing

But this bot, doesn’t just brute force

So, its likely it will be outside of the AWS security remit


Infection Monkey is an open source breach and attack simulation tool to evaluate the security posture of your network

yea it looks more like discovery


lol
2018-06-21

Thanks @jamie for sharing links. inspec-gcp is just 3 months old project.

2018-06-22

Have any of you made a metadata index for s3 in terraform? like this? https://github.com/aws-samples/aws-big-data-blog/tree/master/aws-blog-s3-index-with-lambda-ddb
Contribute to aws-big-data-blog development by creating an account on GitHub.

If no one has, @Erik Osterman (Cloud Posse) can you add it to me on your project board?

Also: An aws alarm terraform module for detecting root account logins.

And: An aws alarm terraform module for alerting on unauthorized aws api access.

These are part of the aws CIS best practices.

And should be small and easy to add

And a module to deploy this task to a cluster. https://github.com/ExpediaDotCom/c3vis/blob/master/README.md
c3vis - Visualize the resource utilisation of Amazon ECS clusters

I will track those in the project later today

GitHub is where people build software. More than 28 million people use GitHub to discover, fork, and contribute to over 85 million projects.

@Daren anything you can share for the root account logins?

Thanks!

No rush I just don’t want to forget them

@Erik Osterman (Cloud Posse) Sure. Id prefer to touch it up before open sourcing it, it was hacked together to meet the pci deadline

ok, understandable

It does the following:
- alert when a public is made public
- alert on root login
- alert on modification of cloudtrails
- auto re-enable disabled cloudtrails

a bucket is made public?

@Daren would really appreciate you publishing it, i’m working through this doc https://d0.awsstatic.com/whitepapers/compliance/AWS_CIS_Foundations_Benchmark.pdf

(we could also probably help with “clean up” if you want - PM)

@Daren I did most of what you have just mentioned. https://github.com/TeliaSoneraNorge/telia-terraform-modules/blob/master/cloudtrail-forwarder/cloudwatch-metric-filters.tf - maybe it can help. And this - https://github.com/TeliaSoneraNorge/telia-terraform-modules/blob/master/cloudtrail-forwarder/cloudwatch-metric-alarms.tf

Thanks this looks promising. We tackled our using cloudwatch event rule -> lambda -> pagerduty/slack/…

those are great anton

may I use them?

@antonbabenko i just spotted something that may cause a headache for you…

At the bottom of https://github.com/TeliaSoneraNorge/telia-terraform-modules/blob/master/cloudtrail-forwarder/main.tf
telia-terraform-modules - Terraform modules for creating cloud infrastucture

You use aws_iam_policy_attachment

instead of aws_iam_role_policy_attachment

Incase it wasn’t intentional

Absolutely, use anything from there. I quit from that company today

no way!

what are you going to focus on now?

there are some modules which I want to move to open-source under terraform-aws-modules umbrella

long vacation first, and then find something related to Terraform & AWS. Have nothing settled yet

Thanks for pointing to aws_iam_policy_attachment - I didn’t know that

Guys who are from Russia or Europe, will you consider going to https://devoops.ru/en/ ? I am going there and will be talking about Terraform there.

DevOps conference. October 14, Saint Petersburg. More than 400 participants, 20 technical talks.

man I wanna goto St Petersburg if it wasn’t a 20+ hr flight i’d be buying a ticket lol

Yeah, it is far from you. Will anyone go to HashiConf?


Alarm module made, with working example…. with some README

terraform-aws-cloudtrail-cloudwatch-alarms - Terraform module that notifies an endpoint such as SNS when cloudtrail logs unauthorised API access

make sure to add all proper attributions
terraform-aws-cloudtrail-cloudwatch-alarms - Terraform module that notifies an endpoint such as SNS when cloudtrail logs unauthorised API access

will do
2018-06-23

I added a thanks, a reference, and the MIT licence+copyright under the Apache2 license.

Looks like there are some extra brackets around the image. See GitHub rendering

Missing period before “With many thanks”

I would write [Anton Babenko](…link to github…]

terraform-aws-cloudtrail-cloudwatch-alarms - Terraform module for creating alarms for tracking important changes and occurances from cloudtrail.

Is that correct?

Looks good, but I would not use locals
(in alarms.tf), but rather create a bunch of resources aws_cloudwatch_metric_alarm
manually. This way, you can easily delete something in the middle of the list without recreating the rest of the list. This will be fixed in HCL2 and Terraform 0.12, but for now it is still an issue with ordered lists.

@antonbabenko I’ve updated it to use the pretty readme, added dashboards, and added screenshots

Although I’m going to keep the lists in locals because I find the compact layout easier to read. And the lists are static.

I’m looking forward to hcl2 and getting ForExpressions https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#for-expressions
hcl2 - Temporary home for experimental new version of HCL


Hey Joost!

Is there a way sending cloudtrail logs (from several customer aws accounts
– all regions) to a specific cloudwatch log group at my security
aws account?

I want to use the module terraform-aws-cloudtrail-cloudwatch-alarms
at my security aws account

Hrmm.. we do something very similar, but ship them to an encrypted s3 bucket. What you propose sounds nice though.

I think @jamie might have recently done what you want

Cool. When you ship them to s3, what do you use for notifications? S3 events to lambda?

With the s3 bucket, we are not doing any no notifications. :( just storing logs.
This is something I’d need to defer to @jamie who has been working on all the alarm modules and probably has done what you are trying to achieve.

This a an area we just started investing in - so it will be a little bit before we have everything fully baked.

Ok, I understand. Thx!

@Daren would really appreciate you publishing it, i’m working through this doc https://d0.awsstatic.com/whitepapers/compliance/AWS_CIS_Foundations_Benchmark.pdf

Jamie is working on implementing modules to address as much of this as possible.

Aws KB has published the Iam policies, guidelines and such for centralizing the cloudwatch logs. I can pull the policies into the module as an option. And put the guide in the readme. So you can use the alerts on one account, but have it track and alert for all accounts.

That would be awesome
2018-06-24

@joost another good item for you to read through this [WIP] [ETA: 30.6.2018] Terraform best practices https://github.com/antonbabenko/terraform-best-practices by @antonbabenko it links to examples of organizing code for multiple aws accounts such as you may need
terraform-best-practices - [WIP] [ETA: 30.6.2018] Terraform best practices

“WIP” will have to be remaining for that repo until I am back from my vacation. I want to make it complete in September before I speak about it at conferences.

Thx @antonbabenko for the great link
2018-06-25

@Daren did you guys get kiam
working? We started on this: https://github.com/cloudposse/geodesic/pull/163
what Add helmfile definition for kiam why kube2iam has stability problems addressed by kiam references https://medium.com/@pingles/kiam-iterating-for-security-and-reliability-5e793ab93ec3 uswi…

Actually started on it this week
what Add helmfile definition for kiam why kube2iam has stability problems addressed by kiam references https://medium.com/@pingles/kiam-iterating-for-security-and-reliability-5e793ab93ec3 uswi…

Our first stab was giving us 403 to the AWS metadata api

Will get back to it today

Are you deploying the agent to masters?

also why no iptables or rbac?

We haven’t enabled rbac yet in our kops manifest

Iptables false was just an attempt to get it working

(It also happens to be the default)

hm, I thought it was required. but the doc is a little vague

An DNAT iptables rule is required to intercept the traffic. The agent is capable of adding and removing the required rule for you through use of the –iptables flag.

Odd, kiam says to install server only on masters https://github.com/uswitch/kiam/blob/master/deploy/server.yaml#L18-L19 however the chart does not https://github.com/kubernetes/charts/blob/master/stable/kiam/values.yaml#L125
kiam - Integrate AWS IAM with Kubernetes
charts - Curated applications for Kubernetes

Wont this lead to the server being blocked by the agent

also, doesn’t [kubernetes.io/role](http://kubernetes.io/role): master
require a toleration? they don’t have one

hmm

Also ran into this https://github.com/uswitch/kiam/issues/36
{"generation.metadata""error","msg":"error warming credentials: RequestError: send request failed\ncaused by: Post https://sts.amazonaws.com/…

did it fix it for you?

Going to try shortly

Unfortunately we still have a mix of coreos + debian hosts. Not sure if the path is consistent

Well I got the server up and running fine. However the agents are reporting this error:
error creating server gateway: error waiting for address being available in the balancer: context deadline exceeded

Im reading through https://github.com/uswitch/kiam/issues/94
I have Kiam setup on a 3 master cluster - the server runs on two of the three masters with some readiness probes failing but the 3rd node is in a crash loop backoff with the liveness probe failing….

ran into some issues
2018-06-26

I wish i liked writing READMEs

terraform-aws-s3-logs-athena-query - A Terraform module that creates an Athena Database and Structure for querying S3 access logs

It works. But is pending readme creation

Ok - we can help with that

Really not fond of heredocs. Can we move that to template files?

Perhaps named query should be a separate module that reads queries from a template file

Whats wrong with heredocs?

Legibility of code

Can not properly indent

okay

I can split it into its own sql folder

That would be perfect

@jamie @Andriy Knysh (Cloud Posse) @Igor Rodionov - can we schedule some time to talk about standardizing how we use IAM permissions?

@Igor Rodionov has some problems with one of our older modules on ecr
and before he makes any changes, we thought it a good idea to come up with a standard

@jamie - I know you’re working a lot with locking down IAM permissions these days

I can provide an example of my vision on ecr module

yea, that would be a good start

we can CR that <— as a proposal

and bring it to the table for meeting

Sure. In brief: the iam_policy_documents can be overwritten, or appended to depending on if the statement has a SID. Combining that, with the concept of a per project ‘policy module’ such as https://github.com/cloudposse/terraform-aws-ssm-parameter-store-policy-documents Or an integrated policy module, so that as part of the current module, it outputs the json policy documents json, and sids, so they can be seen. And includes an option for including json documents that can be passed through for appending.
terraform-aws-ssm-parameter-store-policy-documents - A Terraform module that generates JSON documents for access for common AWS SSM Parameter Store policies

It will be more work, but allows the lowest possible permissions to be added by the developer. But still allows additional permissions to be included in the module for custom needs.

source_json (Optional) - An IAM policy document to import as a base for the current policy document. Statements with non-blank sids in the current policy document will overwrite statements with the same sid in the source json. Statements without an sid cannot be overwritten.
override_json (Optional) - An IAM policy document to import and override the current policy document. Statements with non-blank sids in the override document will overwrite statements with the same sid in the current document. Statements without an sid cannot be overwritten.
2018-06-27

@jamie @mcrowe https://github.com/cloudposse/terraform-null-label/pull/25
– THIS IS CURRENTLY A POC/RFC – what Support passing a label's context between label modules why DRY demo module "label1" { source = "../../" namespace = &quo…
2018-06-28

I added an example and such to the terraform-aws-ecs-service-cloudwatch-sns-alarms init

@jamie you are on a roll today - i need to know what brand/bean of coffee you having

thank you

Did you see the null label one?

yes

hehe

It was very heavily refactored

just to get consistency on the data types, and then outputs them in the old output style

yea, that was a clever trick. hadn’t considered it, but i think it’s a necessary evil.

Terraform 0.12 focuses on major Terraform language improvements and will be released later this summer. We are communicating about Terraform 0.12 prior to release to highlight the …

Upgrading to Terraform v0.12
2018-06-29

Interesting

so i was doing the whole compact concat dance before.. but i think this works in tf now…
alarm_actions = ["${local.sns_topic_arn}", "${var.additional_notify_arns}"]
ok_actions = ["${local.sns_topic_arn}", "${var.additional_notify_arns}"]

where local.sns_topic_arn
is a string and var.additional_notify_arns
is a list

hmm yea just tested it and it does work as expected… reference: https://github.com/hashicorp/terraform/issues/5682#issuecomment-278483475
It seems to be tricky to append a value to an array. I thought that something like this should work: "${compact(concat(split(",", var.security_groups), var.common_security_group))}&q…

I saw that it was working

like magic

so much nicer than the old way

Beautifully designed to be used in your home or at your desk, the Ember® Ceramic Mug keeps your beverages at the perfect temperature from the first sip to the last drop. Buy the World’s First Temperature Control Mug™ at Ember.com.

is that for you?

(via: @Max Moon)

@Erik Osterman (Cloud Posse) uploaded a file: image.png

have you guys seen or worked with https://github.com/blinkist
GitHub is where people build software. More than 28 million people use GitHub to discover, fork, and contribute to over 85 million projects.

some very thorough modules built by him (almost to @sarkis completeness grade)

terraform-aws-airship-ecs-service - Terraform module which creates an ECS Service, IAM roles, Scaling, ALB listener rules.. Fargate & AWSVPC compatible

hmmm looks interesting - thanks for sharing @jamie

at the very least - I need some diagrams for the ecs-web-app module … it’s getting huge

Diagrams are annoying and always appreciated

Hi fellas, I’m the Blinkist guy

Welcome :)

Few small bugs still here and there, but slowly getting there. I was discussing earlier with Jamie I think if it’s possible to have Terraform manage the ECS container definitions except for the image parameter.. Where Terraform runs would extract the image:tag from aws_ecs_container_definition. Only solution I can think of is by creating a bootstrap=true for the module which would turn on/off a datasource for the first run, and other logic on the second run.. Would need to play around with that..

@maarten so I want to share our strategy for this. it’s not original and I’ve seen it mentioned in a few places.

Guys, I invited that guy from the links I shared

Thanks for the invite

Welcome to the channel!

Nice work on those modules

I am afk, but will share how we are doing it

@maarten it’s Friday night for like most of the crew, and it’s quieter here over the weekend. But core group of @sarkis @Erik Osterman (Cloud Posse) sand @Andriy Knysh (Cloud Posse) are keeping an eye on it

As seen

Yeah sure.. Normally I’m not around on a Friday either … I’ll introduce myself quickly.

Yes, things are pretty quiet now as it’s the end of the week

I’m the founder of the Terraform User Group in Berlin, started it when I didn’t know where to start with Terraform roughly 2 years ago. Worked for 2.5 years at Blinkist where we went for AWS with ECS, coming from Heroku. Was always a dream to be self-employed, Blinkist fully supported that and made me a contractor with as first assignment open sourcing the ECS stuff I did earlier. Anothing thing I made is a golang tool called skipper which does some magic regarding task execution through a docker tunnel etc.etc. but that project is on hold until I get a bit of golang help.


@Erik Osterman (Cloud Posse) Yeah, happy to see some of that Have a good weekend.

Welcome! Its 11:30pm for me too so I’m going offline as well. But we will chat soon.

Sure, again, thanks for the invite.

Yea let’s sync up on Monday !

Also, maybe it would be interesting to have a weekly standing “round table” where we get together in a zoom room

It might even be something to record and distribute podcast style…

Welcome Maarten

Thanks

Can’t have enough slack channels

I need all the ones I have open plus more for terraform/hcl workarounds

Where is the hcl2 countdown channel ? ;)
2018-06-30

https://github.com/cloudposse/terraform-aws-elasticache-redis/pull/12 if anyone has time for a one line code review
What it is Adds engine_version argument to the aws_elasticache_replication_group module. Why Previously when referencing this module in an external terraform template any attempt to override the en…

Thanks in advance!

@Max Moon thanks for the PR. Looks like the variables.tf entry was there but just wasn’t being passed?

aha

I’ll wait for 1 more approval and can merge. Is this blocking you right now?

if i missed that then no big deal on this PR. No it’s not blocking me, i just referenced my branch.

After reviewing variables.tf I think that despite being referenced in [variables.tf](http://variables.tf)
it wasn’t being picked up because the reference wasn’t made in the module, but i could be wrong

Yea - I think CI would catch this (maybe) either way put a to-do for myself to get that PRed up

it certainly was not working this morning, at least. So I think the PR for this is still relevant, pending review from others

Oh absolutely your PR is necessary. Sorry should have gave context. I was confused why you didn’t have a variables.tf change - made sense when I looked at master. It has the unref variable on there.

ah yes okay, i gotchya now

So one last thing. Now I’m thinking if we default to 4.0

i was thinking the same.

Since that was the previous behavior it seems from your testing

Let’s do that so it’s less of a backwards incompatible risk

If you don’t mind pushing that to your PR I’ll grab my laptop so I can merge and release

yeah sure one sec

already done and done

im headed out for the afternoon but updated default family and engine version to latest available via AWS documentation (family: redis4.0 and engine_version: 4.0.10) in [variables.tf](http://variables.tf)
on the PR. Thanks again @sarkis

thanks @Max Moon! pushing out 0.5.0 now

thanks!!!

terraform-aws-elasticache-redis - Terraform module to provision an ElastiCache Redis Cluster

i thought it was a change that warranted a minor version++

agreed, thanks again!