{"id":15755456,"url":"https://github.com/grantbirki/fastly-framework","last_synced_at":"2025-03-13T16:32:03.661Z","repository":{"id":103811335,"uuid":"344678080","full_name":"GrantBirki/fastly-framework","owner":"GrantBirki","description":"⏰ Fastly Framework - A Framework for Using Fastly with Terraform, Automation, and CICD","archived":false,"fork":false,"pushed_at":"2021-03-15T05:11:07.000Z","size":501,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-07T17:45:33.440Z","etag":null,"topics":["automation","cdn","cicd","deployment","edge-computing","fastly","framework","pipeline","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GrantBirki.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-05T03:04:57.000Z","updated_at":"2024-10-28T16:02:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"d994cdbe-bbe5-4ff3-b07b-c08b4bd9c49a","html_url":"https://github.com/GrantBirki/fastly-framework","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/GrantBirki%2Ffastly-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrantBirki%2Ffastly-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrantBirki%2Ffastly-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GrantBirki%2Ffastly-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GrantBirki","download_url":"https://codeload.github.com/GrantBirki/fastly-framework/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243441503,"owners_count":20291482,"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":["automation","cdn","cicd","deployment","edge-computing","fastly","framework","pipeline","terraform"],"created_at":"2024-10-04T08:21:54.865Z","updated_at":"2025-03-13T16:32:03.656Z","avatar_url":"https://github.com/GrantBirki.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fastly-framework ⏰\n\nA Framework for Using Fastly with Terraform, Automation, and CICD\n\n## About 💡\n\nThis project is an open source framework for creating a CICD pipeline with Terraform that builds Fastly services.\n\nThe CICD framework portion was created using GitLab-CI but it can be adapted to run with GitHub actions, CircleCI, and others.\n\nBenefits:\n\n* Using Git as a version control system for all Fastly changes\n* Eliminate code reuse through shared VCL files, Snippets, and Terraform configuration blocks\n* Test your services through a CICD pipeline before deploying them\n* Integrate with chatops for deployments (Example: Slack)\n* Quickly create new services from templates with `make service` - Using Jinja and Python\n* Adopt *Infrastructure as Code* methodologies with Terraform\n* Create your own pipeline stages for robust testing, alerts, approval, and much more\n\n## Documentation 📚\n\n### Table of Contents\n\nHere is the table of contents for the documentation folder. See below for other doc links.\n\nNew to Fastly? The [Getting Started](docs/getting-started.md) doc is your place to start.\n\nView the following documents for specific details around each subject:\n\n* [getting-started](docs/getting-started.md) - The best place for newcomers\n* [learning](docs/learning.md) - A guide for learning all things Fastly\n* [fastly-to-insights](code/logs/fastly-to-insights/README.md) - Aggregated metrics collection from Fastly to New Relic\n* [new-service](docs/new-service.md) - A guide for creating a new service in Fastly using this repo\n* [pipeline](docs/pipeline.md) - General Pipeline framework information\n* [rapid-rollback](docs/rapid-rollback.md) - Information about the rapid-rollback stage of the pipeline\n* [slack](docs/slack.md) - For setting up Slack integrations with this pipeline\n* [terraform-reference](docs/terraform-reference.md) - How to use common Terraform blocks to configure your Fastly service\n* [vcl-include-and-snippets](docs/vcl-include-and-snippets.md) - Details about VCL include statements vs snippets. This guide has examples about how to use both and the key differences between them.\n\n### Additional Documentation\n\nThe following links are to other doc pages and READMEs in this repo that are not in this specific folder.\n\n* [ci folder details readme](/code/ci/README.md) - Details about the `/code/ci` folder\n* [fastly-ci readme](/code/ci/docker/README.md) - Details about the stock CICD image with Terraform\n* [logs folder readme](/code/logs/README.md) - Details about the logs folder\n\n## Demos\n\nThe following section will show screenshots and details for a demo pipeline deployment to Fastly.\n\n### 1. Create a Merge Request\n\nTo kick off the pipeline, create a `merge request` with your changes. This demo will make changes to a `nonprod` and `prod` service as an example.\n\n### 2. ChatOps Notification\n\nOnce your pipeline starts running, check Slack (or other messaging service if configured) for a notification that your MR has been created and the pipeline is now running.\n\n![cdn-bot-mr](docs/assets/cdn-bot-mr.png)\n\n### 3. Merge Request Pipeline\n\nCheck out your `merge request` pipeline to see how its doing. It will `plan` your changes with Terraform, `test` them with self configured tests, and then create an `approval` for deployment.\n\nNote: `TFsec` will not be covered in this framework for simplicity. However, it is very easy to add on your own.\n\n![dev-and-prod-pipeline](docs/assets/dev-and-prod-pipeline.png)\n\nIf you have the `slack` integration configured with `servicenow` you will recieve an alert like the one below for approval requests:\n\n![fastly-ci-approval](docs/assets/fastly-ci-approval.png)\n\n### 4. Merge Changes\n\nOnce your `merge request` pipeline passes you are free to merge your changes to the `main` or `master` branch. This will trigger the `deployment` pipeline!\n\n### 5. Deployment Pipeline\n\nThis pipeline is triggered from a successful `merge` to `main`/`master` branches. The `deploy` stage is a manual action so you may deploy `nonprod` first to validate changes before deploying to `prod`. The `rapid-rollback` stage exists to revert your changes if something goes wrong.\n\n![dev-and-prod-deploy-pipeline](docs/assets/dev-and-prod-deploy-pipeline.png)\n\nIf you have the `slack` integration configured you will recieve notification about successful deployments in Slack like the one below:\n\n![fastly-ci-activation](docs/assets/fastly-ci-activation.png)\n\n### 6. Deployed to Fastly\n\nHooray! Your change has been successfully deployed to Fastly!\n\n![fastly-new-version](docs/assets/fastly-new-version.png)\n\n### 7. Rapid-Rollback\n\nIf something goes wildly wrong you can always rollback your changes via the `rapid-rollback` stage. Doing so will revert to the last active version in Fastly.\n\nIf you have the `slack` integration configured you will recieve a notification like the one below:\n\n![fastly-ci-rollback](docs/assets/fastly-ci-rollback.png)\n\n#### Large Job Support\n\nThe demo section above just shows two services running through the pipeline: `nonprod` and `prod` for example. However, the pipeline can support hundreds of concurrent jobs and for many services at once.\n\nThe example below shows many jobs running at once. They had testing errors so they failed and hence haulted the pipeline from continuing.\n\n![fastly-multiple-jobs](docs/assets/fastly-multiple-jobs.png)\n\n## Contributing\n\nYou are welcome to send pull requests to this repo. All and any contributors are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrantbirki%2Ffastly-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrantbirki%2Ffastly-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrantbirki%2Ffastly-framework/lists"}