-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: migrate medium posts into here #4569
Merged
Merged
Changes from all commits
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
c7deb27
feat: migrate medium posts into here
chenrui333 763babb
add `markdown-it-footnote` for footnote support
chenrui333 3653dbe
update highlights
chenrui333 1f2e0cd
add `Hosting Our Static Site over SSL` post
chenrui333 65342b0
add `Terraform And The Dangers Of Applying Locally` post
chenrui333 a165a96
remove `.md` for blog post refs
chenrui333 21ae2c0
add `Atlantis 0.4.4 Now Supports Bitbucket` post
chenrui333 3bf25c6
add `Putting The Dev Into DevOps` post
chenrui333 16f00b0
add `I’m Joining HashiCorp` post
chenrui333 db85276
add `4 Reasons To Try HashiCorp’s (New) Free Terraform Remote State S…
chenrui333 82ff27c
reverse blog post order
chenrui333 99e6a9d
update sidebar config
chenrui333 e83c3c4
s/’/'/g
chenrui333 fe6e05d
update markdownlint and apply lint fixes
chenrui333 4a2b3ad
remove s3 url (as it is 404)
chenrui333 5a654f8
update approved link ref
chenrui333 31b68b7
update blog entry
chenrui333 4c21710
update `What is Atlantis?` link ref
chenrui333 86c97e0
add slack join link on `/blog`
chenrui333 db47e33
netlify: remove csp for now
chenrui333 79c31b4
sidebar: add `/blog` link
chenrui333 4707368
Merge branch 'main' of github.com:runatlantis/atlantis into add-blog-…
chenrui333 eeda500
exclude twitter.com for muffet checks
chenrui333 f023d2b
update file layout
chenrui333 1b5dd3e
update sidebar to include year layer
chenrui333 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
title: Welcome to Our Blog | ||
aside: false | ||
--- | ||
|
||
# Welcome to Our Blog | ||
|
||
We are thrilled to have you here! Our blog is a collection of insightful articles, tips, and updates from our team. Whether you're new or have been following us for a while, there's always something new to learn and explore. | ||
|
||
### Explore Our Popular Posts | ||
|
||
We have a rich history of blog posts dating back to 2017-2019. Here are some of our popular posts: | ||
|
||
- [4 Reasons To Try HashiCorp's (New) Free Terraform Remote State Storage](/blog/2019/4-reasons-to-try-hashicorps-new-free-terraform-remote-state-storage) | ||
- [I'm Joining HashiCorp!](/blog/2018/joining-hashicorp) | ||
- [Putting The Dev Into DevOps: Why Your Developers Should Write Terraform Too](/blog/2018/putting-the-dev-into-devops-why-your-developers-should-write-terraform-too) | ||
- [Atlantis 0.4.4 Now Supports Bitbucket](/blog/2018/atlantis-0-4-4-now-supports-bitbucket) | ||
- [Terraform And The Dangers Of Applying Locally](/blog/2018/terraform-and-the-dangers-of-applying-locally) | ||
- [Hosting Our Static Site over SSL with S3, ACM, CloudFront and Terraform](/blog/2018/hosting-our-static-site-over-ssl-with-s3-acm-cloudfront-and-terraform) | ||
- [Introducing Atlantis](/blog/2017/introducing-atlantis) | ||
|
||
### Welcoming New Blog Authors | ||
|
||
We are excited to welcome new authors to our blog. Our diverse team brings a wealth of knowledge and experience to share with our readers. Stay tuned for fresh perspectives and in-depth articles on the latest trends and technologies. | ||
|
||
If you have any questions or topics you would like us to cover, feel free to reach out [on Slack](https://join.slack.com/t/atlantis-community/shared_invite/zt-9xlxtxtc-CUSKB1ATt_sQy6um~LDPNw). We are always looking to engage with our community and provide valuable content. | ||
|
||
Happy reading! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
--- | ||
title: Introducing Atlantis | ||
lang: en-US | ||
--- | ||
|
||
# Introducing Atlantis | ||
|
||
::: info | ||
This post was originally written on September 11th, 2017 | ||
|
||
Original post: <https://medium.com/runatlantis/introducing-atlantis-6570d6de7281> | ||
::: | ||
|
||
We're very excited to announce the open source release of Atlantis! Atlantis is a tool for | ||
collaborating on Terraform that's been in use at Hootsuite for over a year. The core | ||
functionality of Atlantis enables developers and operators to run `terraform plan` and | ||
`apply` directly from Terraform pull requests. Atlantis then comments back on the pull | ||
request with the output of the commands: | ||
|
||
![](/blog/intro/intro1.gif) | ||
|
||
This is a simple feature, however it has had a massive effect on how our team writes Terraform. | ||
By bringing a Terraform workflow to pull requests, Atlantis helped our Ops team collaborate | ||
better on Terraform and also enabled our entire development team to write and execute Terraform safely. | ||
|
||
Atlantis was built to solve two problems that arose at Hootsuite as we adopted Terraform: | ||
|
||
### 1. Effective Collaboration | ||
|
||
What's the best way to collaborate on Terraform in a team setting? | ||
|
||
### 2. Developers Writing Terraform | ||
|
||
How can we enable our developers to write and apply Terraform safely? | ||
|
||
## Effective Collaboration | ||
|
||
When writing Terraform, there are a number of workflows you can follow. The simplest workflow is just using `master`: | ||
|
||
![](/blog/intro/intro2.webp) | ||
|
||
In this workflow, you work on `master` and run `terraform` locally. | ||
The problem with this workflow is that there is no collaboration or code review. | ||
So we start to use pull requests: | ||
|
||
![](/blog/intro/intro3.webp) | ||
|
||
We still run `terraform plan` locally, but once we're satisfied with the changes we create a pull request for review. When the pull request is approved, we run `apply` locally. | ||
|
||
This workflow is an improvement, but there are still problems. The first problem is that it's hard to review just the diff on the pull request. To properly review a change, you really need to see the output from `terraform plan`. | ||
|
||
![](/blog/intro/intro4.webp) | ||
|
||
What looks like a small change... | ||
|
||
![](/blog/intro/intro5.webp) | ||
|
||
...can have a big plan | ||
|
||
The second problem is that now it's easy for `master` to get out of sync with what's actually been applied. This can happen if you merge a pull request without running `apply` or if the `apply` has an error halfway through, you forget to fix it and then you merge to `master`. Now what's in `master` isn't actually what's running on production. At best, this causes confusion the next time someone runs `terraform plan`. At worst, it causes an outage when someone assumes that what's in `master` is actually running, and depends on it. | ||
|
||
With the Atlantis workflow, these problems are solved: | ||
|
||
![](/blog/intro/intro6.webp) | ||
|
||
Now it's easy to review changes because you see the `terraform plan` output on the pull request. | ||
|
||
![](/blog/intro/intro7.webp) | ||
|
||
Pull requests are easy to review since you can see the plan | ||
|
||
It's also easy to ensure that the pull request is `terraform apply`'d before merging to master because you can see the actual `apply` output on the pull request. | ||
|
||
![](/blog/intro/intro8.webp) | ||
|
||
So, Atlantis makes working on Terraform within an operations team much easier, but how does it help with getting your whole team to write Terraform? | ||
|
||
## Developers Writing Terraform | ||
|
||
Terraform usually starts out being used by the Ops team. As a result of using Terraform, the Ops team becomes much faster at making infrastructure changes, but the way developers request those changes remains the same: they use a ticketing system or chat to ask operations for help, the request goes into a queue and later Ops responds that the task is complete. | ||
|
||
Soon however, the Ops team starts to realize that it's possible for developers to make some of these Terraform changes themselves! There are some problems that arise though: | ||
|
||
- Developers don't have the credentials to actually run Terraform commands | ||
- If you give them credentials, it's hard to review what is actually being applied | ||
|
||
With Atlantis, these problems are solved. All `terraform plan` and `apply` commands are run from the pull request. This means developers don't need to have any credentials to run Terraform locally. Of course, this can be dangerous: how can you ensure developers (who might be new to Terraform) aren't applying things they shouldn't? The answer is code reviews and approvals. | ||
|
||
Since Atlantis comments back with the `plan` output directly on the pull request, it's easy for an operations engineer to review exactly what changes will be applied. And Atlantis can run in `require-approval` mode, that will require a GitHub pull request approval before allowing `apply` to be run: | ||
|
||
![](/blog/intro/intro9.webp) | ||
|
||
With Atlantis, developers are able to write and apply Terraform safely. They submit pull requests, can run `atlantis plan` until their change looks good and then get approval from Ops to `apply`. | ||
|
||
Since the introduction of Atlantis at Hootsuite, we've had **78** contributors to our Terraform repositories, **58** of whom are developers (**75%**). | ||
|
||
## Where we are now | ||
|
||
Since the introduction of Atlantis at Hootsuite we've grown to 144 Terraform repositories [^1] that manage thousands of Amazon resources. Atlantis is used for every single Terraform change throughout our organization. | ||
|
||
## Getting started with Atlantis | ||
|
||
If you'd like to try out Atlantis for your team you can download the latest release from <https://github.com/runatlantis/atlantis/releases>. If you run `atlantis testdrive` you can get started in less than 5 minutes. To read more about Atlantis go to <https://www.runatlantis.io/>. | ||
|
||
Check out our video for more information: | ||
|
||
<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FTmIPWda0IKg%3Ffeature%3Doembed&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DTmIPWda0IKg&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FTmIPWda0IKg%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube" allowfullscreen="" frameborder="0" height="480" width="640" title="Atlantis Walkthrough" class="fr n gh dv bg" scrolling="no"></iframe> | ||
|
||
[^1]: We split our Terraform up into multiple states, each with its own repository (see [1], [2], [3]). | ||
|
||
[1]: https://blog.gruntwork.io/how-to-manage-terraform-state-28f5697e68fa | ||
[2]: https://charity.wtf/2016/03/30/terraform-vpc-and-why-you-want-a-tfstate-file-per-env/ | ||
[3]: https://www.nclouds.com/blog/terraform-multi-state-management/ |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be A+ if you could include the rule name and possible link to the rule docs for each; makes it a lot easier to grok and maintain in the long run