{"id":15050241,"url":"https://github.com/mozilla/hashitalk2015","last_synced_at":"2025-10-04T12:32:33.918Z","repository":{"id":44884695,"uuid":"43323776","full_name":"mozilla/hashitalk2015","owner":"mozilla","description":"INACTIVE - http://mzl.la/ghe-archive - Notes from the Hashiconf talk by @jdotp and @phrawzty","archived":true,"fork":false,"pushed_at":"2019-03-29T17:03:38.000Z","size":120,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-12T10:31:09.298Z","etag":null,"topics":["inactive","unmaintained"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mozilla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-28T19:59:23.000Z","updated_at":"2023-01-28T03:53:01.000Z","dependencies_parsed_at":"2022-09-10T19:11:05.728Z","dependency_job_id":null,"html_url":"https://github.com/mozilla/hashitalk2015","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla%2Fhashitalk2015","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla%2Fhashitalk2015/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla%2Fhashitalk2015/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mozilla%2Fhashitalk2015/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mozilla","download_url":"https://codeload.github.com/mozilla/hashitalk2015/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234851248,"owners_count":18896659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["inactive","unmaintained"],"created_at":"2024-09-24T21:25:15.442Z","updated_at":"2025-10-04T12:32:28.637Z","avatar_url":"https://github.com/mozilla.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Good reads and tools we use\n    \n* 12factor.net : A great write up by Heroku on making an app scalable, modular, and easy to upgrade.  Basically, how to build apps in the new world.\n* https://github.com/phrawzty/hiera-s3: Nice hiera plugin from phrawzty (but maybe just use vault! :) )\n* Visible Ops Book: http://www.amazon.com/The-Visible-Ops-Handbook-Implementing/dp/0975568612\n* Phoenix Project Book: http://www.amazon.com/The-Phoenix-Project-Helping-Business/dp/0988262592\n\n\n# Code Examples We Use\n* Our Terraform code: https://github.com/mozilla/socorro-infra/blob/master/terraform\n* Our Puppet code: https://github.com/mozilla/socorro-infra/blob/master/puppet\n* Our rustic deployment script: https://github.com/mozilla/socorro-infra/blob/master/bin/deploy-socorro.sh\n* Our Packer code: https://github.com/mozilla/socorro-infra/blob/master/packer\n* Our user data code: https://github.com/mozilla/socorro-infra/blob/master/terraform/webapp/socorro_role.sh\n\n\n# Some of our example public dashboards / metrics \n* A cool way to cycle through dashboards: http://dashplay.io/0p98yofx+ \n* Our current events:  https://p.datadoghq.com/sb/282da3b8c-2916c1621c\n* Today vs yesterday: https://p.datadoghq.com/sb/282da3b8c-3c0ed4ed8d\n* Prod stats: https://p.datadoghq.com/sb/282da3b8c-bfee0403b5\n* How to send custom and arbitrary metrics to cloudwatch (you can track # of coffees consumed, or anything else) https://www.loggly.com/blog/send-custom-metrics-to-cloudwatchs-api/\n\n# Packer Hint\n* Packer can create an AMI for any region, and even create an AMI for multiple regions.  Super useful for deployment!\n\n\n# S3 Specific Hints\n* US Standard is simply (US-East-1 and US-West-1) in failover mode.  This is why things in US Standard are 'eventual consistency' for reads after writes.  \n* If you need immediate, reliable consistency, choose a specific region when creating the bucket.  \n* US-Standard does not cost extra compared to single-region non-redundant S3 regions.\n* Cloudfront costs the same per request as S3.\n* You *do* get SSL with S3, but not on http endpoints.  ( Here, have this page explain it to you...it's a little weird.  http://docs.aws.amazon.com/general/latest/gr/rande.html )\n* Otherwise, use SSL in cloudfront.  Use the old IAM tools to upload it...\n\n# Other AWS Hints\n* Our naming standards for AWS infrastructure(do this ASAP!): https://dl.dropboxusercontent.com/u/2273146/aws-naming-conventions.txt\n* When given a choice, download/request your SSL certs in Apache format.  This goes right up to AWS easily.\n\n**iam-servercertupload -b ./mysite.crt  -k ./mysite.key -c ./intermediatechain.crt -p /cloudfront/ -s mysite-2015-09-25**\n\n* Always use autoscaling groups for everything, even things that never need to scale.  You always want 1 of some server up...autoscaling groups make it so if that one dies, a new one automatically replaces it.\n* You can have multiple autoscaling groups scale into a single ELB.\n* You can have a single autoscaling group add/remove servers from multiple ELBs.\n* These concepts are useful if you want to balance out the # of instance store vs. EBS backed EC2 instances...EBS is usually the culprit on AWS @#$@storm days\n* Go multi-region early rather than later...it doesn't get easier the longer you wait!\n* When load testing or expecting heavy traffic, it's a great idea to call AWS support and have them \"prewarm\" your ELB.  ELBs are basically just EC2 instances running load balancing software, and 'prewarming' them is scaling them up.\n* To get great ratings for SSL security, check out Mozilla's SSL cipher tool (credit to Gene!) https://mozilla.github.io/server-side-tls/ssl-config-generator/\n* If you have to have multiple AZ's in staging but only have one node up, enable cross zone balancing.\n* CNAME everything!  Let's say you have a database server:  webappdatabase.rdsaddress.2342342342.aws.com...  If you cname that to webapp-db.internaldomain.com instead, if you ever have to switch databases or regions you have a super easy way to switch over!\n* Health check based routing is awesome, as is geo-ip routing.  \n* Decide on a tagging strategy early on....Mozilla Tools and Services team uses:  environment, role, project.  These tags play a major role in monitoring, metrics, and even permissions.\n* Always, immediately, first thing...enable Cloudtrail in AWS.\n\n# Alerting Hint\n* Setup an IFTTT recipe which will monitor the status RSS feeds for AWS, and SMS/email/alert you and your team when those RSS feeds get updated.\n* Be sure you have multiple sources watching your apps!\n\n# Load Testing Hint\n* Easy 'pound one address' tool:  bees with machineguns  (it's awesome to make an endpoint that exercises the entire app/funnel/workflow that you can then pound on with bees...and the logs are so fun to read)\n\n\n\n# Ways to Not Spend All of Your Organizations Money \n* Setup detailed billing and a bucket to store it im\n* Try out Netflix ICE cost analysis software\n* When you know you need an instance for at least a year, setup reserved instances\n\n# Team Hint\n* A Great Intro to 'Gamedays' (The Way to Make Apps and Teams More Resilient by Dylan Richard): https://www.youtube.com/watch?v=LCZT_Q3z520  \n\n# A hint from @rhelmer\nABCD:  ALWAYS BE CHECKING DATADOG\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmozilla%2Fhashitalk2015","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmozilla%2Fhashitalk2015","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmozilla%2Fhashitalk2015/lists"}