{"id":24503656,"url":"https://github.com/plus3it/cloud-talk-cats-or-dogs","last_synced_at":"2025-10-06T07:19:38.566Z","repository":{"id":49075055,"uuid":"140711072","full_name":"plus3it/cloud-talk-cats-or-dogs","owner":"plus3it","description":"Demo infrastructure as code for cloud talk series","archived":false,"fork":false,"pushed_at":"2021-06-29T13:05:08.000Z","size":1019,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-21T23:17:54.905Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plus3it.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-12T12:35:10.000Z","updated_at":"2021-06-29T13:05:10.000Z","dependencies_parsed_at":"2022-08-25T08:22:31.053Z","dependency_job_id":null,"html_url":"https://github.com/plus3it/cloud-talk-cats-or-dogs","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fcloud-talk-cats-or-dogs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fcloud-talk-cats-or-dogs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fcloud-talk-cats-or-dogs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plus3it%2Fcloud-talk-cats-or-dogs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plus3it","download_url":"https://codeload.github.com/plus3it/cloud-talk-cats-or-dogs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243703962,"owners_count":20334079,"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":[],"created_at":"2025-01-21T23:17:58.023Z","updated_at":"2025-10-06T07:19:33.532Z","avatar_url":"https://github.com/plus3it.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cloud-talk-cats-or-dogs\n\nDemo Infrastructure as Code for Cloud Talk series\n\n## Overview\n\nThis project demonstrates Infrastructure as Code principles using Terraform\nand Salt. The Terraform modules will create and manage the following resources:\n\n* IAM Instance Role\n* S3 Bucket\n* Application Load Balancer\n* Security Groups (1 for the load balancer and 1 for EC2 instances)\n* Autoscaling Group and Launch Config\n\nSalt is used within the EC2 instances (deployed by the Autscaling Group) to\ninstall and configure an Apache web server. The web server will serve cat or\ndog images from the S3 bucket. One Availability Zone will be designated as the\n\"cats AZ\", and any EC2 instance running in that AZ will only serve cat images.\nInstances in any other AZ will serve only dog images. This is intended to help\ndemonstrate the failover and recovery capabilities of the architecture.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"800\" height=\"342\" src=\".static/overview.jpg\"\u003e\n\u003c/p\u003e\n\n## Usage\n\n1. Create a `main.auto.tfvars` file in the `main` module. See [`main/variables.tf`](main/variables.tf)\n   for the required and optional variables. This file is ignored intentionally\n   by source control so it is not committed to the project.\n\n2. The first time the project is deployed, execute the following `make` targets\n   in the listed order. For subsequent executions, execute the targets as needed\n   depending on the changes being evaluated. See [Make Targets][#make-targets]\n   for more info on the available targets.\n\n   * `make test`\n   * `make apply/iam`\n   * `make apply/bucket`\n   * `make apply/main`\n\n## Terraform Modules\n\nAll resources are deployed using Terraform. The project consists of 3 Terraform\nmodules:\n\n* [iam](./iam)\n  * Manages the IAM Instance Role\n* [bucket](./bucket)\n  * Manages the S3 bucket\n* [main](./main)\n  * Manages all other resources, including the objects in the S3 bucket\n  * Utilizes the [`lx-autoscale`][lx-autoscale] module from [`terraform-aws-watchmaker`][terraform-aws-watchmaker]\n\n[lx-autoscale]: https://github.com/plus3it/terraform-aws-watchmaker/tree/master/modules/lx-autoscale\n[terraform-aws-watchmaker]: https://github.com/plus3it/terraform-aws-watchmaker\n\n\u003e **NOTE**: The `iam` and `bucket` modules must be deployed first, as their\nresources must exist when the `main` module is deployed.\n\n## Make Targets\n\nThere is a `Makefile` that helps manage the project workflow.. The following\n`make` targets are supported:\n\n* `make test`\n  * Runs `terraform fmt` to standardize format of all Terraform files.\n  * Runs `terraform validate` on all modules to check for syntax errors.\n* `make \u003ctf_command\u003e/\u003cmodule\u003e`\n  * Executes the `\u003ctf_command\u003e` in the specified `\u003cmodule\u003e`. The command `init`\n    supports an additional argument `upgrade=\u003ctrue|false (default)\u003e`, which\n    controls whether to force terraform to re-download all providers and modules\n    (see `terraform init -help`).\n* `make \u003ctf_command\u003e/all`\n  * Executes the `\u003ctf_command\u003e` in all Terraform modules. This target does not\n    account for dependencies between modules, so should not be used for `plan`,\n    `apply`, or `destroy` commands. `init` and `validate` are safe.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplus3it%2Fcloud-talk-cats-or-dogs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplus3it%2Fcloud-talk-cats-or-dogs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplus3it%2Fcloud-talk-cats-or-dogs/lists"}