diff --git a/.editorconfig b/.editorconfig index 22b7907fa..4c4756481 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,7 +14,3 @@ indent_size = 2 [*.js] indent_style = space indent_size = 2 - - - - diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..5d86c8c75 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +## what +* Describe the problem and how to reproduce it. Use bullet or list format. +* Describe the feature request or enhancement. + +## why +* If this is a bug, then explain why this is a problem and what is the expected outcome. +* If this is a feature request or enhancement, then explain why it is beneficial. If relevant, provide an example interface for how it could work. diff --git a/.github/PULL_REQUEST.md b/.github/PULL_REQUEST.md new file mode 100644 index 000000000..cabfb1089 --- /dev/null +++ b/.github/PULL_REQUEST.md @@ -0,0 +1,5 @@ +## what +* Describe high-level what changed. + +## why +* Provide the justifications for the changes. diff --git a/.htmltest.yml b/.htmltest.yml new file mode 100644 index 000000000..adba35e4b --- /dev/null +++ b/.htmltest.yml @@ -0,0 +1,40 @@ +# Directory to scan for HTML files. +DirectoryPath: "public/" + +# The file to look for when linking to a directory. +DirectoryIndex: "index.html" + +# Extension of your HTML documents, includes the dot. If FilePath is set we use the extension from that. +FileExtension: ".html" + +# Enables checking the document type declaration. +CheckDoctype: true + +# Enables checking + +We love [Open Source Software](https://github.com/cloudposse/)! -# Glossary +See [our other projects][community] +or [hire us][hire] to help build your next cloud-platform. -Update [`glossary.json`](static/js/glossary.json) + [website]: http://cloudposse.com/ + [community]: https://github.com/cloudposse/ + [hire]: http://cloudposse.com/contact/ +### Contributors +| [![Erik Osterman][erik_img]][erik_web]
[Erik Osterman][erik_web] | [![Igor Rodionov][igor_img]][igor_web]
[Igor Rodionov][igor_web] | [![Andriy Knysh][andriy_img]][andriy_web]
[Andriy Knysh][andriy_web] | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------ | + [erik_img]: http://s.gravatar.com/avatar/88c480d4f73b813904e00a5695a454cb?s=144 + [erik_web]: https://github.com/osterman/ + [igor_img]: http://s.gravatar.com/avatar/bc70834d32ed4517568a1feb0b9be7e2?s=144 + [igor_web]: https://github.com/goruha/ + [andriy_img]: https://avatars0.githubusercontent.com/u/7356997?v=4&u=ed9ce1c9151d552d985bdf5546772e14ef7ab617&s=144 + [andriy_web]: https://github.com/aknysh/ diff --git a/content/LICENSE.md b/content/LICENSE.md new file mode 100644 index 000000000..7a36c0fa5 --- /dev/null +++ b/content/LICENSE.md @@ -0,0 +1,211 @@ +--- +title: Apache License v2.0 +slug: license +tags: +- license +- apl +- apache2 +--- + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Cloud Posse, LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/content/announcements/aws-assumed-roles-repo-deprecated.md b/content/announcements/aws-assumed-roles-repo-deprecated.md index 193a73fcc..521de7c9f 100644 --- a/content/announcements/aws-assumed-roles-repo-deprecated.md +++ b/content/announcements/aws-assumed-roles-repo-deprecated.md @@ -9,10 +9,10 @@ tags: --- We've decided to deprecate our [`aws-assume-role`](https://github.com/cloudposse/aws-assumed-role) repo in favor of using [`aws-vault`](https://github.com/99designs/aws-vault) by 99 Designs. This offers an outstanding, ultra-secure experience for working with IAM assumed roles for local development. -Features: +## AWS Vault Features: * Encrypted vault for IAM credentials (OSX KeyChain or file) - * IAM Metadata server + * IAM Metadata server * MFA Token * Variable Session TTLs diff --git a/content/aws-infrastructure/_index.md b/content/aws/_index.md similarity index 80% rename from content/aws-infrastructure/_index.md rename to content/aws/_index.md index 9c854701a..6c64b153d 100644 --- a/content/aws-infrastructure/_index.md +++ b/content/aws/_index.md @@ -1,5 +1,6 @@ --- title: AWS Infrastructure +slug: "aws" excerpt: '' --- diff --git a/content/aws-infrastructure/aws-well-architected-framework.md b/content/aws/aws-well-architected-framework.md similarity index 100% rename from content/aws-infrastructure/aws-well-architected-framework.md rename to content/aws/aws-well-architected-framework.md diff --git a/content/aws-infrastructure/cloudfront.md b/content/aws/cloudfront.md similarity index 100% rename from content/aws-infrastructure/cloudfront.md rename to content/aws/cloudfront.md diff --git a/content/aws-infrastructure/cloudtrail.md b/content/aws/cloudtrail.md similarity index 100% rename from content/aws-infrastructure/cloudtrail.md rename to content/aws/cloudtrail.md diff --git a/content/aws-infrastructure/cloudwatch-logs.md b/content/aws/cloudwatch-logs.md similarity index 100% rename from content/aws-infrastructure/cloudwatch-logs.md rename to content/aws/cloudwatch-logs.md diff --git a/content/aws-infrastructure/ecs.md b/content/aws/ecs.md similarity index 100% rename from content/aws-infrastructure/ecs.md rename to content/aws/ecs.md diff --git a/content/aws-infrastructure/iam/_index.md b/content/aws/iam/_index.md similarity index 93% rename from content/aws-infrastructure/iam/_index.md rename to content/aws/iam/_index.md index 695cecea8..87478eb6b 100644 --- a/content/aws-infrastructure/iam/_index.md +++ b/content/aws/iam/_index.md @@ -1,5 +1,6 @@ --- title: IAM +slug: "iam" excerpt: '' draft: true tags: diff --git a/content/aws-infrastructure/iam/iam-assuming-roles.md b/content/aws/iam/assuming-roles.md similarity index 87% rename from content/aws-infrastructure/iam/iam-assuming-roles.md rename to content/aws/iam/assuming-roles.md index a88f4959b..2fc809606 100644 --- a/content/aws-infrastructure/iam/iam-assuming-roles.md +++ b/content/aws/iam/assuming-roles.md @@ -1,7 +1,7 @@ --- title: AWS IAM Assuming Roles excerpt: '' -draft: true +draft: false tags: - iam - aws diff --git a/content/aws-infrastructure/authorization.md b/content/aws/iam/authorization.md similarity index 74% rename from content/aws-infrastructure/authorization.md rename to content/aws/iam/authorization.md index d2a8037b0..6e8e081b0 100644 --- a/content/aws-infrastructure/authorization.md +++ b/content/aws/iam/authorization.md @@ -17,7 +17,7 @@ aws_access_key_id = XXXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ``` -Following [IAM Best Practices](doc:best-practices) users have minimum permissions by default, but they can assume [IAM Roles](doc:assuming-roles) that provides wide access to AWS. +Following [IAM Best Practices]({{< relref "aws/iam/best-practices.md" >}}) users have minimum permissions by default, but they can assume [IAM Roles]({{< relref "aws/iam/assuming-roles.md" >}}) that provides wide access to AWS. To config assume role access add AWS profile in `~/.aws/config`. Make sure to change username to your own. @@ -31,4 +31,4 @@ source_profile=example In provided example: `example` - source profile name `example-staging-admin` - name of profile with assumed role `role_arn` - ARN of role to assume `mfa_serial` - use MFA ARN `source_profile` = name of credentials to use. specified in `~/.aws/credentials` -We recommend authorizing with assumed role profile using [AWS Vault](doc:aws-vault). AWS vault is included in [Geodesic Overview](doc:geodesic) so you can use it in the geodesic shell +We recommend authorizing with assumed role profile using [AWS Vault]({{< relref "tools/aws-vault.md" >}}). AWS vault is included in [Geodesic Overview](/geodesic) so you can use it in the geodesic shell diff --git a/content/aws-infrastructure/iam/iam-best-practices.md b/content/aws/iam/best-practices.md similarity index 71% rename from content/aws-infrastructure/iam/iam-best-practices.md rename to content/aws/iam/best-practices.md index f378300ea..8fd892647 100644 --- a/content/aws-infrastructure/iam/iam-best-practices.md +++ b/content/aws/iam/best-practices.md @@ -1,7 +1,8 @@ --- title: AWS IAM Best Practices +slug: "best-practices" excerpt: '' -draft: true +draft: false tags: - iam - aws diff --git a/content/aws-infrastructure/kms.md b/content/aws/kms.md similarity index 100% rename from content/aws-infrastructure/kms.md rename to content/aws/kms.md diff --git a/content/aws-infrastructure/organizations/_index.md b/content/aws/organizations/_index.md similarity index 100% rename from content/aws-infrastructure/organizations/_index.md rename to content/aws/organizations/_index.md diff --git a/content/aws-infrastructure/organizations/best-practices.md b/content/aws/organizations/best-practices.md similarity index 100% rename from content/aws-infrastructure/organizations/best-practices.md rename to content/aws/organizations/best-practices.md diff --git a/content/aws-infrastructure/rds.md b/content/aws/rds.md similarity index 100% rename from content/aws-infrastructure/rds.md rename to content/aws/rds.md diff --git a/content/aws-infrastructure/route53/_index.md b/content/aws/route53/_index.md similarity index 100% rename from content/aws-infrastructure/route53/_index.md rename to content/aws/route53/_index.md diff --git a/content/aws-infrastructure/route53/route53-best-practices.md b/content/aws/route53/best-practices.md similarity index 78% rename from content/aws-infrastructure/route53/route53-best-practices.md rename to content/aws/route53/best-practices.md index cb3c62b6e..d093167fe 100644 --- a/content/aws-infrastructure/route53/route53-best-practices.md +++ b/content/aws/route53/best-practices.md @@ -8,5 +8,5 @@ tags: --- - Use very short TTLs on `SOA` records (E.g. 60 seconds or less) -- Delegate Zones to every organization or use dedicated zones per organization (e.g. cloudposse.com, cloudposse.net, cloudposse.org) +- Delegate Zones to every organization or use dedicated zones per organization (e.g. `cloudposse.com`, `cloudposse.net`, `cloudposse.org`) - Use `ALIAS` records to map zone apex record to ELBs diff --git a/content/aws-infrastructure/s3.md b/content/aws/s3.md similarity index 100% rename from content/aws-infrastructure/s3.md rename to content/aws/s3.md diff --git a/content/aws-infrastructure/ssm.md b/content/aws/ssm.md similarity index 100% rename from content/aws-infrastructure/ssm.md rename to content/aws/ssm.md diff --git a/content/aws-infrastructure/vpc.md b/content/aws/vpc.md similarity index 100% rename from content/aws-infrastructure/vpc.md rename to content/aws/vpc.md diff --git a/content/contributors/andriy-knysh.md b/content/contributors/andriy-knysh.md new file mode 100644 index 000000000..8940b8677 --- /dev/null +++ b/content/contributors/andriy-knysh.md @@ -0,0 +1,16 @@ +--- +title: "Andriy Knysh" +excerpt: "" +tags: + - "devops" + - "terraform" + - "kubernetes" + - "java" + - "golang" + - "helm" +--- + +Andriy Knysh is a Certified AWS Specialist, Java Developer, and Cloud Architect. He's the Terraform genius responsible for maintaining most of our modules. +(Miami, Florida) + +![Andriy Knysh](https://cloudposse.com/wp-content/uploads/sites/29/2018/02/andriy.png) diff --git a/content/contributors/erik-osterman.md b/content/contributors/erik-osterman.md index 260c9cb1d..60769d7c0 100644 --- a/content/contributors/erik-osterman.md +++ b/content/contributors/erik-osterman.md @@ -11,10 +11,11 @@ Erik Osterman is a technical evangelist and insanely passionate DevOps guru with Born and raised in Southern California, Erik is a 2002 graduate of UCLA, receiving a B.S. in Applied Mathematics with a specialization in Computation. He is an avid sailor, outdoorsman, skier, and tennis player, and currently resides in Pasadena, CA. -| | | -|------|------| -|LinkedIn|https://linkedin.com/in/osterman| -|Blog|https://osterman.com/| +| | | +| -------- | -------------------------------- | +| LinkedIn | https://linkedin.com/in/osterman | +| Blog | https://osterman.com/ | +| Calendar | https://calendly.com/cloudposse | -![](/assets/ba3ae6b-erik_osterman.png) +![Erik Osterman](/assets/ba3ae6b-erik_osterman.png) diff --git a/content/contributors/igor-rodionov.md b/content/contributors/igor-rodionov.md new file mode 100644 index 000000000..d14206077 --- /dev/null +++ b/content/contributors/igor-rodionov.md @@ -0,0 +1,16 @@ +--- +title: "Igor Rodionov" +excerpt: "" +tags: + - "devops" + - "terraform" + - "kubernetes" + - "java" + - "golang" + - "helm" +--- + +Igor Rodionov is a Sr DevOps Engineer. He's a Kubernetes expert, Helm Chart maestro, GoLang Developer, and Beanstalk Slinger. +(Omsk, Russia) + +![Igor Rodionov](https://cloudposse.com/wp-content/uploads/sites/29/2018/02/igor.png) diff --git a/content/development/github/feature-branches.md b/content/development/github/feature-branches.md index 66d658726..b589e5235 100644 --- a/content/development/github/feature-branches.md +++ b/content/development/github/feature-branches.md @@ -21,21 +21,17 @@ The next thing that needs to happen is that the `master` branch is treated as th Once a feature is considered ready, the developer submits a Pull Request (or PR) and assigns it to a Subject Matter Expert (SME) or peer for review. -On the surface, this is what a well-formatted Pull Request looks like: ![](/assets/e802ae2-image_3.png) A _Pull Request_ allows many things to happen: +On the surface, this is what a well-formatted Pull Request looks like: ![Pull Request Example](/assets/e802ae2-image_3.png) A _Pull Request_ allows many things to happen: -- **Title**: A "human readable" title that represents the feature! ![](/assets/2d4fce9-image.png) +- **Title**: A "human readable" title that represents the feature! ![Pull Request Title](/assets/2d4fce9-image.png) - **Description**: A long description that details **_What_** was changed, **_Why_** it was deemed necessary, and any other **_References_** that might be useful (E.g. Jira ticket) - - **Comments**: let anyone provide arbitrary feedback viewable by everyone. - - **Diffs**: show what changed between this feature and the current master branch - - **Formal Code Review Process:** let multiple people contribute to the code review process by submitting comments on a line-by-line basis. Having these code reviews formally documented serves as an excellent teaching tool. Over time, the reviews become faster and faster as developers learn what is expected. ![](/assets/9df4fad-image_2.png) - - **Merging**: Once the PR is approved, the developer can squash and merge their code into the master branch. Squashing allows the master branch to have a very clean commit history where every commit corresponds to a PR. ![](/assets/2b3e7eb-image_4.png) -- **Clean Commit History**: means that every change to the master branch is documented and justified. No one is sneaking in changes. ![](/assets/b3dae79-image_5.png) -- **History of Features** and when they were added ![](/assets/f9a3727-image_7.png) -- **Reverting**: If a feature needs to be removed, with the click of a single button it can be removed from the `master` branch ![](/assets/28887e9-image_8.png) +- **Clean Commit History**: means that every change to the master branch is documented and justified. No one is sneaking in changes. ![Clean Commit History](/assets/b3dae79-image_5.png) +- **History of Features** and when they were added ![History of Features](/assets/f9a3727-image_7.png) +- **Reverting**: If a feature needs to be removed, with the click of a single button it can be removed from the `master` branch ![Reverting Changes](/assets/28887e9-image_8.png) # Technical Details @@ -45,7 +41,7 @@ Whenever you begin work on a new feature or bugfix, it's important that you crea To create a new branch and start working on it: -``` +```shell # Checkout the master branch - you want your new branch to come from master git checkout master @@ -58,8 +54,8 @@ git checkout -b newfeature Now, go to town hacking away. When you're ready, push the changes up to the origin. -``` +```shell git push origin newfeature ``` -Now check out how to create [Pull Requests](doc:pull-requests)! +Now check out how to create [Pull Requests]({{< relref "development/github/pull-requests.md" >}})! diff --git a/content/development/markdown/_index.md b/content/development/markdown/_index.md index 519378aea..05dbb946f 100644 --- a/content/development/markdown/_index.md +++ b/content/development/markdown/_index.md @@ -3,68 +3,72 @@ title: Markdown excerpt: '' --- -![](/assets/5a735a9-markdown.png) Markdown is a simple way to format plain text that looks great on any device without using any HTML or CSS. It doesn't permit do anything fancy like changing fonts, color, or typeface -- just the bare essentials by using keyboard symbols you already know. +![Markdown Logo](/assets/5a735a9-markdown.png) Markdown is a simple way to format plain text that looks great on any device without using any HTML or CSS. It doesn't permit do anything fancy like changing fonts, color, or typeface -- just the bare essentials by using keyboard symbols you already know. # Standard Formatting -Preferred Syntax | Alternative Syntax | Example ----------------- | ------------------ | ------- - | ```_Italic_ +| Preferred Syntax | Alternative Syntax | Example | +|:------------------------------|:-------------------------|:------------------------------| +| `*Italic*` | `_Italic_` | *Italic* | +| `**Bold**` | `__Bold__` | **Bold** | +| `# Heading 1` | `Heading 1
=========` | # Heading 1 | +| `## Heading 2` | `Heading 1
---------` | ## Heading 2 | +| `~~Strikeout~~` | `~Strikeout~` | `~~Strikeout~~` | +| `Inline code` with back-ticks | | `Inline code` with back-ticks | +| `> Blockquote` | | > Blockquote | +| `---` | `***` | --- | -````|```_italic_ -```|*Italic*| -|Horizontal Rule -```` --------------------------------------------------------------------------------- +# Bulleted Lists -`|Horizontal Rule` +## Preferred Syntax +``` +* Item 1 +* Item 2 +* Item 3 +``` --------------------------------------------------------------------------------- +## Alternative Syntax +``` +- Item 1 +- Item 2 +- Item 3 +``` -``` | Horizontal Rule ---- | --------------- - | ```**Bold** -``` | ```**Bold** -``` | **Bold** | - | ```# Heading 1 -``` | ```Heading 1 +## Example -========= `|# Heading 1| |`## Heading 2 +* Item 1 +* Item 2 +* Item 3 -## `|`Heading 2 +# Numbered lists -`|## Heading 2| |`~~Strikeout~~ +## Preferred Syntax +``` +1. Item 1 +2. Item 2 +3. Item 3 +``` -`````|```~strikeout~ -```|~~Strikeout~~| -|````Inline code` with back-ticks -```|`Inline code` with back-ticks| -|```> Blockquote -```|> Blockquote| -|```* Item 1 -* Item 2 -* Item 3 -```|```- Item 1 -- Item 2 -- Item 3 -```|* Item 1* Item 2 -* Item 3| -|```1\. Item 1 -2\. Item 2 -3\. Item 3 -```|```1) Item 1 +## Alternative Syntax +``` +1) Item 1 2) Item 2 3) Item 3 -```|1\. Item 11\. Item 2 -1\. Item 3| +``` + +## Example + +1. Item 1 +2. Item 2 +3. Item 3 # Simple Links ##### ```markdown [Link Example](https://cloudposse.com) -````` +``` [Link Example](https://cloudposse.com) @@ -93,7 +97,7 @@ Preferred Syntax | Alternative Syntax | Example ## Standard Image ```markdown -![Image](https://files.readme.io/40ee68a-cloudposse-64x64.png) +![Image](/assets/40ee68a-cloudposse-64x64.png) ``` ![Image][1] @@ -107,7 +111,7 @@ Preferred Syntax | Alternative Syntax | Example ```markdown ![Image][1] ...other content here... -[1]: https://files.readme.io/40ee68a-cloudposse-64x64.png +[1]: /assets/40ee68a-cloudposse-64x64.png ``` ![Image][1] ...other content here... @@ -116,21 +120,19 @@ Preferred Syntax | Alternative Syntax | Example # Code Block -## Code Block +## Code Block Examples -````markdown +~~~~ ``` $i = 0; $i++; -```` - -```` ``` +~~~~ -$i = 0; $i++; - -` -```` +``` +$i = 0; +$i++; +``` # Tables @@ -140,24 +142,22 @@ $i = 0; $i++; - Columns do not need to be neatly formatted. - Supports inline Markdown. -## # - -```text +## Table Examples - -| Animals | Fruits | Coins | -| ------------- |:-------------:| --------:| -| Cats | Apples | Nickle | -| Dogs | Oranges | Quarter | -| Zebras | Oranges | Dime | +```markdown +| Animals | Fruits | Coins | +|:--------|:-------:|--------:| +| Cats | Apples | Nickle | +| Dogs | Oranges | Quarter | +| Zebras | Oranges | Dime | ` ``` -Animals | Fruits | Coins -------- | :-----: | ------: -Cats | Apples | Nickle -Dogs | Oranges | Quarter -Zebras | Oranges | Dime +| Animals | Fruits | Coins | +|:--------|:-------:|--------:| +| Cats | Apples | Nickle | +| Dogs | Oranges | Quarter | +| Zebras | Oranges | Dime | # References @@ -165,5 +165,5 @@ Zebras | Oranges | Dime - - -[1]: https://files.readme.io/40ee68a-cloudposse-64x64.png +[1]: /assets/40ee68a-cloudposse-64x64.png [2]: https://google.com diff --git a/content/development/markdown/markdown-best-practices.md b/content/development/markdown/best-practices.md similarity index 87% rename from content/development/markdown/markdown-best-practices.md rename to content/development/markdown/best-practices.md index 83d0a2f0a..7637db0d9 100644 --- a/content/development/markdown/markdown-best-practices.md +++ b/content/development/markdown/best-practices.md @@ -3,11 +3,11 @@ title: Markdown Best Practices excerpt: '' --- -![](/assets/13f56b6-markdown.png) +![Markdown Logo](/assets/13f56b6-markdown.png) Using Markdown is essential for clear communication on mediums such as GitHub, Slack or just plain text. Here are some of our recommendations on when to use certain conventions. -{{% dialog type="info" icon="fa-info-circle" title="Markdown Cheatsheet" %}} If you're new to Markdown or need a refresher, check out our [Markdown cheatsheet](doc:markdown). {{% /dialog %}} +{{% dialog type="info" icon="fa-info-circle" title="Markdown Cheatsheet" %}} If you're new to Markdown or need a refresher, check out our [Markdown cheatsheet](/development/markdown). {{% /dialog %}} # Code Blocks @@ -18,9 +18,8 @@ Use code blocks for anything more than 1 line. Use `code` for inline code, filen ````markdown ``` # This is a code block -```` - -```` +``` +````` ## Table of Options @@ -43,11 +42,11 @@ Here's an example: * `:---------` should be used for all other columns * Use `` for empty defaults * Use `value` for all values -```` + Which will render to something like this: ![](/assets/8d8cdf3-image_23.png) -![](/assets/a2761a9-image_22.png) +![Example Markdown Table](/assets/a2761a9-image_22.png) # Feature List Formatting @@ -56,8 +55,8 @@ Use this format describe the features & benefits. ## Feature List Example ```markdown -1\. **Feature 1** - Explanation of benefits -2\. **Feature 2** - Explanation of benefits +1. **Feature 1** - Explanation of benefits +2. **Feature 2** - Explanation of benefits ``` # Use Block Quotes diff --git a/content/development/semantic-versioning.md b/content/development/semver.md similarity index 100% rename from content/development/semantic-versioning.md rename to content/development/semver.md diff --git a/content/devops-methodology/_index.md b/content/devops-methodology/_index.md index 9f982b1db..d1b9b7d1d 100644 --- a/content/devops-methodology/_index.md +++ b/content/devops-methodology/_index.md @@ -2,43 +2,43 @@ title: "DevOps Methodology" excerpt: "" --- -Cloud Posse is a **DevOps Professional Services** company. Everything we do is Open Source. [Hire us](doc:contact-us) to help you implement it. +Cloud Posse is a **DevOps Professional Services** company. Everything we do is Open Source. [Hire us]({{< relref "documentation/contact-us.md" >}}) to help you implement it. This is our methodology. # Project Management -* [GOST Framework](doc:gost-framework) -* [RACI Matrix](doc:raci-matrix) +* [GOST Framework]({{< relref "project-management/gost-framework.md" >}}) +* [RACI Matrix]({{< relref "project-management/raci-matrix.md" >}}) # Local Development Environments -1. Create easy functional environments using [Docker Compose](doc:docker-compose) -2. Use [Makefile](doc:makefile) targets for automation of routine tasks across toolchains -3. Use [Dockerfile](doc:dockerfile) to capture application dependencies +1. Create easy functional environments using [Docker Compose]({{< relref "local-dev-environments/docker-compose.md" >}}) +2. Use [Makefile](/tools/make) targets for automation of routine tasks across toolchains +3. Use [Dockerfile](/local-dev-environments/dockerfile) to capture application dependencies # Release Engineering -* [Build Harness](doc:build-harness) -* [Semantic Versioning](doc:semantic-versioning) +* [Build Harness]({{< relref "release-engineering/build-harness.md" >}}) +* [Semantic Versioning]({{< relref "development/semver.md" >}}) # Platform -* [Kops](doc:kops) with [Geodesic](doc:geodesic) +* [Kops]({{< relref "tools/kops.md" >}}) with [Geodesic](/geodesic) # Monitoring & Alerting -* [Root Cause Analysis (Postmortem)](doc:post-mortems) +* [Root Cause Analysis (Postmortem)](/devops-methodology/root-cause-analysis-postmortem) # Infrastructure as Code -* [Terraform Supported Modules](doc:supported-modules) -* [Helm Charts](doc:helm-charts) +* [Terraform Supported Modules](/terraform-modules) +* [Helm Charts](/helm-charts) # Best Practices -* [Pull Request Best Practices](doc:pull-requests) -* [Terraform Best Practices](doc:terraform-best-practices) -* [Terraform Module Best Practices](doc:terraform-module-best-practices) -* [Makefile Best Practices](doc:makefile-best-practices) -* [Markdown Best Practices](doc:markdown-best-practices) -* [Development Best Practices](doc:development-best-practices) -* [Workstation Best Practices](doc:workstation-best-practices) +* [Pull Request Best Practices]({{< relref "development/github/pull-requests.md" >}}) +* [Terraform Best Practices]({{< relref "terraform/best-practices.md" >}}) +* [Terraform Module Best Practices]({{< relref "terraform-modules/best-practices.md" >}}) +* [Makefile Best Practices]({{< relref "tools/make/best-practices.md" >}}) +* [Markdown Best Practices]({{< relref "development/markdown/best-practices.md" >}}) +* [Development Best Practices]({{< relref "development/development-best-practices.md" >}}) +* [Workstation Best Practices]({{< relref "development/workstation-best-practices.md" >}}) # Tips & Tricks -* [Docker Tips & Tricks](doc:tips-tricks) -* [Terraform Tips & Tricks](doc:terraform-tips-tricks) -* [Fancy Shell Prompts](doc:fancy-prompts) +* [Docker Tips & Tricks]({{< relref "tools/docker/tips-tricks.md" >}}) +* [Terraform Tips & Tricks]({{< relref "terraform/tips-tricks.md" >}}) +* [Fancy Shell Prompts]({{< relref "local-dev-environments/fancy-shell-prompts.md" >}}) diff --git a/content/devops-methodology/roles-responsibilities.md b/content/devops-methodology/roles-responsibilities.md index 2b39aa393..e1066fd93 100644 --- a/content/devops-methodology/roles-responsibilities.md +++ b/content/devops-methodology/roles-responsibilities.md @@ -3,38 +3,38 @@ title: Roles & Responsibilities excerpt: '' --- -The following matrix outlines various components and responsibilities that establishes who amongst the various teams involved are Responsible, Accountable, Consulted, and Informed for each action or component. We use the [RACI Matrix](doc:raci-matrix) to assign responsibilities. +The following matrix outlines various components and responsibilities that establishes who amongst the various teams involved are Responsible, Accountable, Consulted, and Informed for each action or component. We use the [RACI Matrix]({{< relref "project-management/raci-matrix.md" >}}) to assign responsibilities. # Roles There are four teams involved in these processes. Team membership is not exclusive. Members may be part of multiple teams. -Team | Abbreviation | Description ------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -**DevOps Engineering** | **DEVOPS** | Engineers specializing on developing infrastructure and tools that allow Software Engineers to specify how the application would be run.Responsible for creating and support monitoring, alerting and backup/restore of systems. -**Software Engineering** | **DEV** | Full Stack Engineers who work on software development, create tests and specify how that soft will be run in the cluster. Use tools provided by DevOps and QA engineers. -**QA Engineering** | **QA** | Engineers developing tools and frameworks that simplify creation of tests. -**Engineering Managers** | **MGMT** | Project managers with technical expertise. +| Team | Abbreviation | Description | +|:-------------------------|:-------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **DevOps Engineering** | **DEVOPS** | Engineers specializing on developing infrastructure and tools that allow Software Engineers to specify how the application would be run.Responsible for creating and support monitoring, alerting and backup/restore of systems. | +| **Software Engineering** | **DEV** | Full Stack Engineers who work on software development, create tests and specify how that soft will be run in the cluster. Use tools provided by DevOps and QA engineers. | +| **QA Engineering** | **QA** | Engineers developing tools and frameworks that simplify creation of tests. | +| **Engineering Managers** | **MGMT** | Project managers with technical expertise. | # Responsibilities These are the responsibility of various roles. -Responsibilities | Responsible | Accountable | Consulted | Informed -------------------------------------------------------- | ----------- | ----------- | --------- | -------- -Chart Development | DEV | DEV | DEVOPS | DEVOPS -Integration Tests | | | | -Unit Tests | | | | -Acceptance Tests | | | | -On Call / Pager Duty | | | | -Infrastructure as Code(e.g. kops) | | | | -Backing Services(e.g. databases) | | | | -Platform Services(E.g. kube2iam, external-dns, ingress) | | | | -Chart Code Reviews | | | | -Chart Deployment | | | | -CI/CD Pipelines | | | | -Dockerization | | | | -Docker Code Reviews | | | | -Terraform Code Reviews | | | | -Terraform Modules | | | | -Software Development | | | +| Responsibilities | Responsible | Accountable | Consulted | Informed | +|:--------------------------------------------------------|:------------|:------------|:----------|:---------| +| Chart Development | DEV | DEV | DEVOPS | DEVOPS | +| Integration Tests | | | | | +| Unit Tests | | | | | +| Acceptance Tests | | | | | +| On Call / Pager Duty | | | | | +| Infrastructure as Code(e.g. kops) | | | | | +| Backing Services(e.g. databases) | | | | | +| Platform Services(E.g. kube2iam, external-dns, ingress) | | | | | +| Chart Code Reviews | | | | | +| Chart Deployment | | | | | +| CI/CD Pipelines | | | | | +| Dockerization | | | | | +| Docker Code Reviews | | | | | +| Terraform Code Reviews | | | | | +| Terraform Modules | | | | | +| Software Development | | | | | diff --git a/content/devops-methodology/root-cause-analysis-postmortem/postmortem-example.md b/content/devops-methodology/root-cause-analysis-postmortem/postmortem-example.md index 5fdd1511e..db26985e3 100644 --- a/content/devops-methodology/root-cause-analysis-postmortem/postmortem-example.md +++ b/content/devops-methodology/root-cause-analysis-postmortem/postmortem-example.md @@ -118,11 +118,11 @@ Prior to rollout, all 3 production instances indicated high memory pressure (90% ### Pingom -![](/assets/1f27db8-image_12.png) +![Pingdom 1](/assets/1f27db8-image_12.png) -![](/assets/89c0050-image_13.png) +![Pingdom 2](/assets/89c0050-image_13.png) -![](/assets/9d3f441-image_14.png) +![Pingdom 3](/assets/9d3f441-image_14.png) ### Elastic Beanstalk @@ -136,23 +136,23 @@ There were no deadlocks. There was no increase in IOPS (r/w) #### CPU Utilization spiked. -![](/assets/2e1d7be-image_17.png) +![CPU Utilization Spiked](/assets/2e1d7be-image_17.png) #### Connections peaked and maxed out. -![](/assets/8f2e7d3-image_18.png) +![DB Connections Peaked](/assets/8f2e7d3-image_18.png) #### Selects went through the roof. -![](/assets/43dfb04-image_19.png) +![DB Selects Spiked](/assets/43dfb04-image_19.png) #### CPU credits were not exhausted, so we had excess capacity -![](/assets/7bd6416-image_20.png) +![CPU Credits Okay](/assets/7bd6416-image_20.png) #### Commits / Writes went through the roof -![](/assets/b7a608c-image_21.png) +![DB Commits Spiked](/assets/b7a608c-image_21.png) ## Related Post Mortems diff --git a/content/devops-methodology/software-lifecycle/_index.md b/content/devops-methodology/software-lifecycle/_index.md index 2340a4c58..6566701e0 100644 --- a/content/devops-methodology/software-lifecycle/_index.md +++ b/content/devops-methodology/software-lifecycle/_index.md @@ -5,7 +5,7 @@ excerpt: '' Conceptual process loop is 8 segment wheel. Left half of it is about software development, right half - software execution. ![Process Loop](/assets/fa5c2bb-Process_Loop_-_general_-_Page_1_1.png)Process Loop Each step have legend who involved in work on that step and what tools are used ![General Process Loop](/assets/2c9fd63-Process_Loop_-_Page_1_4.png)General Process Loop During development we have to develop, config and execute different types of software. Depends of purpose, the process loop for that types can use different tools, involve different kind of engineers and even can skip some loop steps. -- [Language Libraries & Frameworks](doc:library) -- [Deployable Applications](doc:deployable-application) -- [Infrastructure as a Code](doc:infrastructure-as-a-code) -- [Backing Services](doc:scafflod) +- [Language Libraries & Frameworks]({{< relref "devops-methodology/software-lifecycle/language-libraries-frameworks.md" >}}) +- [Deployable Applications]({{< relref "devops-methodology/software-lifecycle/deployable-applications.md" >}}) +- [Infrastructure as Code]({{< relref "devops-methodology/software-lifecycle/infrastructure-as-code.md" >}}) +- [Backing Services](/kubernetes-backing-services) diff --git a/content/documentation/contact-us.md b/content/documentation/contact-us.md index 8814f598b..65be6b23a 100644 --- a/content/documentation/contact-us.md +++ b/content/documentation/contact-us.md @@ -3,9 +3,8 @@ title: Contact Us excerpt: '' parent: home --- - | | | -|:--------------|:-----------------------------------------------------------| +| ------------- | ---------------------------------------------------------- | | Inquiries | [hello@cloudposse.com](mailto:hello@cloudposse.com) | | Schedule Time | [calendly.com/cloudposse](https://calendly.com/cloudposse) | | Call | +1 (310) 496-6556 | diff --git a/content/documentation/documentation-template.md b/content/documentation/documentation-template.md index dcbd4e083..8d635f4cb 100644 --- a/content/documentation/documentation-template.md +++ b/content/documentation/documentation-template.md @@ -12,5 +12,5 @@ excerpt: Example of how to structure a document # See Also {{% dialog type="info" icon="fa-info-circle" title="References" %}} - -- Links to other sites {{% /dialog %}} +- Links to other sites +{{% /dialog %}} diff --git a/content/geodesic/_index.md b/content/geodesic/_index.md index 660c002ff..5fd627ae0 100644 --- a/content/geodesic/_index.md +++ b/content/geodesic/_index.md @@ -1,18 +1,19 @@ --- title: Geodesic +slug: geodesic excerpt: >- Geodesic is the fastest way to get up and running with a rock solid, production-grade cloud platform. homepage: true --- -![](/assets/638d917-geodesic-small.png) +![Geodesic Logo](/assets/638d917-geodesic-small.png) - | ------------- | ---------------------------------------------------------------------------------------------------------------------------- -GitHub Repo | -Release | [![Release](https://img.shields.io/github/release/cloudposse/geodesic.svg)](https://github.com/cloudposse/geodesic/releases) -Build Status | [![Build Status](https://travis-ci.org/cloudposse/geodesic.svg?branch=master)](https://travis-ci.org/cloudposse/geodesic) +| | | +|:-------------|:-----------------------------------------------------------------------------------------------------------------------------| +| GitHub Repo | | +| Release | [![Release](https://img.shields.io/github/release/cloudposse/geodesic.svg)](https://github.com/cloudposse/geodesic/releases) | +| Build Status | [![Build Status](https://travis-ci.org/cloudposse/geodesic.svg?branch=master)](https://travis-ci.org/cloudposse/geodesic) | # Introduction @@ -20,7 +21,7 @@ Geodesic provides a fully customizable framework for defining and building world # Demo -{{% dialog type="info" icon="fa-info-circle" title="Important" %}} This demo is out-of-date. {{% /dialog %}} +{{% dialog type="info" icon="fa-info-circle" title="Important" %}} This demo is *very* out-of-date. {{% /dialog %}} ![demo video](https://media.giphy.com/media/26FmS6BRnPVPo2FDq/source.gif) @@ -43,20 +44,20 @@ An organization may choose to leverage all of these components or just the parts At its core, Geodesic is a framework for provisioning cloud infrastructure and the applications that sit on top of it. We leverage as many existing tools as possible to facilitate cloud fabrication and administration. We're like the connective tissue that sits between all of the components of a modern cloud. - | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- -[`ansible`](http://docs.ansible.com/ansible/latest/index.html) | for automating configuration management. It can configure systems, deploy software, and orchestrate more advanced IT tasks. -[`goofys`](https://github.com/kahing/goofys/) | for mounting encrypted S3 buckets that store cluster configurations and secrets -[`packer`](https://github.com/hashicorp/packer/) | for creating identical machine images for multiple platforms -[`terraform`](https://github.com/hashicorp/terraform/) | for provisioning miscellaneous resources on pretty much any cloud -[`aws-vault`](https://github.com/99designs/aws-vault) | for securely storing and accessing AWS credentials in an encrypted vault for the purpose of assuming IAM roles -[`aws-cli`](https://github.com/aws/aws-cli/) | for interacting directly with the AWS APIs (E.g. s3, ec2, rds) -[`chamber`](https://github.com/segmentio/chamber) | for managing secrets with AWS SSM+KMS -[`helm`](https://github.com/kubernetes/helm/) | for installing packages like Varnish or Apache on the Kubernetes cluster -[`kops`](https://github.com/kubernetes/kops/) | for Kubernetes cluster orchestration -[`kubectl`](https://kubernetes.io/docs/user-guide/kubectl-overview/) | for controlling kubernetes resources like deployments or load balancers -[`gcloud`, `gsutil`](https://cloud.google.com/sdk/) | for integration with Google Cloud (e.g. GKE, GCE, Google Storage) -[`gomplate`](https://github.com/hairyhenderson/gomplate/) | for template rendering configuration files using the GoLang template engine. Supports lots of local and remote data sources +| Tool | Purpose | +|:-------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------- | +| [`ansible`](http://docs.ansible.com/ansible/latest/index.html) | for automating configuration management. It can configure systems, deploy software, and orchestrate more advanced IT tasks. | +| [`goofys`](https://github.com/kahing/goofys/) | for mounting encrypted S3 buckets that store cluster configurations and secrets | +| [`packer`](https://github.com/hashicorp/packer/) | for creating identical machine images for multiple platforms | +| [`terraform`](https://github.com/hashicorp/terraform/) | for provisioning miscellaneous resources on pretty much any cloud | +| [`aws-vault`](https://github.com/99designs/aws-vault) | for securely storing and accessing AWS credentials in an encrypted vault for the purpose of assuming IAM roles | +| [`aws-cli`](https://github.com/aws/aws-cli/) | for interacting directly with the AWS APIs (E.g. s3, ec2, rds) | +| [`chamber`](https://github.com/segmentio/chamber) | for managing secrets with AWS SSM+KMS | +| [`helm`](https://github.com/kubernetes/helm/) | for installing packages like Varnish or Apache on the Kubernetes cluster | +| [`kops`](https://github.com/kubernetes/kops/) | for Kubernetes cluster orchestration | +| [`kubectl`](https://kubernetes.io/docs/user-guide/kubectl-overview/) | for controlling kubernetes resources like deployments or load balancers | +| [`gcloud`, `gsutil`](https://cloud.google.com/sdk/) | for integration with Google Cloud (e.g. GKE, GCE, Google Storage) | +| [`gomplate`](https://github.com/hairyhenderson/gomplate/) | for template rendering configuration files using the GoLang template engine. Supports lots of local and remote data sources | # Our Logo diff --git a/content/geodesic/geodesic-design.md b/content/geodesic/geodesic-design.md index abd856456..bea214e1e 100644 --- a/content/geodesic/geodesic-design.md +++ b/content/geodesic/geodesic-design.md @@ -14,14 +14,14 @@ For the default environment variables, check out `Dockerfile`. We believe using We leverage as many semantics of the linux shell as we can to make the experience as frictionless as possible. -Path | Purpose ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ -`/etc/profile.d` | is where shell profiles are stored (like aliases). These are executed when the shell starts. -`/etc/bash_completion.d` | is where all bash completion scripts are kept and sourced when the shell starts. -`/usr/local/bin` | has some helper scripts like `init-terraform` or `s3` to manage `fstab` for remote s3 filesystems. -`/etc/motd` | is the current "Message of the Day" -`/etc/fstab` | is where we configure the S3 filesystems we should mount -`/localhost` | is where we house the local state (like your temporary AWS credentials). This is your native `$HOME` directory mounted into the container. -`/s3` | is where we mount S3 buckets; these files are never written to disk and only kept in memory for security +| Path | Purpose | +|:-------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------| +| `/etc/profile.d` | is where shell profiles are stored (like aliases). These are executed when the shell starts. | +| `/etc/bash_completion.d` | is where all bash completion scripts are kept and sourced when the shell starts. | +| `/usr/local/bin` | has some helper scripts like `init-terraform` or `s3` to manage `fstab` for remote s3 filesystems. | +| `/etc/motd` | is the current "Message of the Day" | +| `/etc/fstab` | is where we configure the S3 filesystems we should mount | +| `/localhost` | is where we house the local state (like your temporary AWS credentials). This is your native `$HOME` directory mounted into the container. | +| `/s3` | is where we mount S3 buckets; these files are never written to disk and only kept in memory for security | You can easily change almost any aspect of how the shell works simply by extending it with [Geodesic Module](doc:module) diff --git a/content/geodesic/geodesic-module/_index.md b/content/geodesic/module/_index.md similarity index 100% rename from content/geodesic/geodesic-module/_index.md rename to content/geodesic/module/_index.md diff --git a/content/geodesic/geodesic-module/quick-start.md b/content/geodesic/module/quickstart.md similarity index 77% rename from content/geodesic/geodesic-module/quick-start.md rename to content/geodesic/module/quickstart.md index 4ccc04b60..c7fd909ea 100644 --- a/content/geodesic/geodesic-module/quick-start.md +++ b/content/geodesic/module/quickstart.md @@ -4,10 +4,10 @@ excerpt: "Get up and running quickly with geodesic" --- # Prerequisites -* Follow the "Quick Start" for [Local Development Environments](doc:quickstart) +* Follow the "Quick Start" for [Local Development Environments]({{< relref "local-dev-environments/quickstart.md" >}}) {{% dialog type="info" icon="fa-info-circle" title="Examples" %}} -All examples are based on use cases provided in [Agenda](doc:agenda) +All examples are based on use cases provided in [Agenda]({{< relref "learn-by-example/agenda.md" >}}) {{% /dialog %}} # Creating a New Module @@ -43,7 +43,7 @@ cd $CLUSTER_NAME ## Build & Install -Initialize the [Build Harness](doc:build-harness) +Initialize the [Build Harness]({{< relref "release-engineering/build-harness.md" >}}) ``` make init @@ -53,7 +53,7 @@ Build the docker container ``` make build -``` +``` Install the module as shell @@ -68,10 +68,10 @@ For more information follow [Use](doc:use) # Authorize on AWS -Config AWS credentials and roles following [Authorization](doc:authorization) +Config AWS credentials and roles following [Authorization]({{< relref "aws/iam/authorization.md" >}}) ##### :warning: Warning -> Geodesic use [AWS Vault](doc:aws-vault) to authorize on AWS so ensure you add source profile name to [AWS Vault](doc:aws-vault) +> By default, Geodesic uses [AWS Vault]({{< relref "tools/aws-vault.md" >}}) to authorize on AWS so ensure you add source profile name to [AWS Vault]({{< relref "tools/aws-vault.md" >}}) ## Set default profile in Geodesic Module @@ -86,5 +86,5 @@ Run `make docker/build` to rebuild module container {{% dialog type="info" icon="fa-info-circle" title="Note" %}} You can install it on local to do the same for development purpose. -See [AWS Vault](doc:aws-vault) setup. +See [AWS Vault]({{< relref "tools/aws-vault.md" >}}) setup. {{% /dialog %}} diff --git a/content/geodesic/geodesic-module/use/_index.md b/content/geodesic/module/usage/_index.md similarity index 64% rename from content/geodesic/geodesic-module/use/_index.md rename to content/geodesic/module/usage/_index.md index 9f428730f..934c87d4a 100644 --- a/content/geodesic/geodesic-module/use/_index.md +++ b/content/geodesic/module/usage/_index.md @@ -4,27 +4,27 @@ excerpt: "" --- # Prerequisites -* Follow the "Quick Start" for [Quick start](doc:geodesic-quick-start) +* Follow the "Quick Start" for [Quick start]({{< relref "geodesic/module/quickstart.md" >}}) {{% dialog type="info" icon="fa-info-circle" title="Examples" %}} -All examples are based on use cases provided in [Agenda](doc:agenda) +All examples are based on use cases provided in [Agenda]({{< relref "learn-by-example/agenda.md" >}}) {{% /dialog %}} # Run shell A Geodesic Module is docker container that extends Geodesic and used as a shell. -Each Geodesic Module will have a unique name. The shell can be easily started any time by simply running that name in a terminal. +Each Geodesic Module will have a unique name. The shell can be easily started any time by simply running that name in a terminal. The name is a shell script in `/usr/local/bin`. Make sure this path is in your `PATH` environment variable. -## Development mode +# Development Iterations -If you create a Geodesic Module with [scaffolding](doc:quickstart) there would be `/conf` directory in Geodesic Module directory. -'/conf' dir used to store [Backing Services](doc:scafflod). -If you run Geodesic Module shell with flag `--dev` it will share local `./conf` directory into Geodesic Module container `/conf`. -This is very useful when you developing [Backing Services](doc:scafflod). +After you [create a Geodesic Module]({{< relref "geodesic/module/quickstart.md" >}}), there will be `/conf` directory in the image. +The '/conf' dir used to store definitions of all [Backing Services]({{< relref "learn-by-example/kubernetes-cluster/add-platform-backing-services.md" >}}). -When the development finished, you need rebuild Geodesic Module container to add [Backing Services](doc:scafflod) in the module container. +During development, it would be very painful to have to rebuild the container everytime you make or test a change. Therefore, we recommend that you use `/localhost` path in the Geodesic Shell so that you can work on your local copy. Your native `$HOME` directory is mounted to `/localhost` in the container. + +Finally, when you have everything working, we recommend that you rebuild Geodesic Module container to add the backing services in the container and do one more final test. # Build new version @@ -41,12 +41,12 @@ When you run into the shell you need to authorize on AWS by assuming a correct r # Starting new staging.example.com session from cloudposse/staging.example.com:dev # Exposing port 48934 * Started EC2 metadata service at http://169.254.169.254/latest - _ _ _ + _ _ _ ___| |_ __ _ __ _(_)_ __ __ _ _____ ____ _ _ __ ___ _ __ | | ___ / __| __/ _` |/ _` | | '_ \ / _` | / _ \ \/ / _` | '_ ` _ \| '_ \| |/ _ \ \__ \ || (_| | (_| | | | | | (_| | | __/> < (_| | | | | | | |_) | | __/ |___/\__\__,_|\__, |_|_| |_|\__, | \___/_/\_\__,_|_| |_| |_| .__/|_|\___| - |___/ |___/ |_| + |___/ |___/ |_| IMPORTANT: * Your $HOME directory has been mounted to `/localhost` @@ -61,6 +61,6 @@ Enter passphrase to unlock /conf/.awsvault/keys/: Enter token for arn:aws:iam::xxxxxxx:mfa/goruha: 365322 * Assumed role arn:aws:iam::xxxxxxx:role/OrganizationAccountAccessRole ⧉ staging example -> ✅ (example-staging-admin) ~ ➤ +> ✅ (example-staging-admin) ~ ➤ ``` diff --git a/content/geodesic/geodesic-module/use/with-kops.md b/content/geodesic/module/usage/with-kops.md similarity index 78% rename from content/geodesic/geodesic-module/use/with-kops.md rename to content/geodesic/module/usage/with-kops.md index 67953afc9..70dacf07e 100644 --- a/content/geodesic/geodesic-module/use/with-kops.md +++ b/content/geodesic/module/usage/with-kops.md @@ -4,7 +4,7 @@ excerpt: "" --- ##### :warning: Prerequisites -> This assumes you've followed the [Geodesic Quick Start](doc:geodesic-quick-start) guide which covers all the scaffolding necessary to get started. +> This assumes you've followed the [Geodesic Quick Start]({{< relref "geodesic/module/quickstart.md" >}}) guide which covers all the scaffolding necessary to get started. # Create a cluster @@ -12,7 +12,7 @@ Follow the [Provision a Cluster](doc:provision-a-cluster) process # Provision Platform Backing Services -A number of [Terraform Modules Overview](doc:terraform-modules-overview) provide to provision AWS resources needed by Charts like [external-dns](doc:external-dns) and [chart-repo](doc:chart-repo). See our [Terraform modules for Kubernetes (Kops)](doc:terraform-kubernetes-kops-modules). +A number of [Terraform Modules Overview]({{< relref "terraform-modules/overview.md" >}}) provide to provision AWS resources needed by Charts like [external-dns](/kubernetes-backing-services/external-dns/) and [chart-repo]({{}}). See our [Terraform modules for Kubernetes (Kops)](/terraform-modules/kops-kubernetes). # Provisioning a Kops cluster @@ -25,7 +25,7 @@ and is compiled by running the `build-kops-manifest` script as a `RUN` step in t Provisioning a `kops` cluster takes three steps: -1. Provision a [terraform-aws-kops-state-backend](doc:terraform-aws-kops-state-backend) which consists of an S3 bucket, cluster DNS zone, and SSH keypair to access the k8s masters and nodes. +1. Provision a [terraform-aws-kops-state-backend]({{< relref "terraform-modules/kops-kubernetes/terraform-aws-kops-state-backend.md" >}}) which consists of an S3 bucket, cluster DNS zone, and SSH keypair to access the k8s masters and nodes. 2. Update the `Dockerfile` and rebuild/restart the `geodesic` shell to generate a kops manifest file 3. Launch a kops cluster from the manifest file @@ -93,7 +93,9 @@ You will find the rendered `kops` manifest file `/conf/kops/manifest.yaml`. # Launch Cluster Run `kops create -f manifest.yaml` to create the cluster (this will just create the cluster state and store it in the S3 bucket, but not the AWS resources for the cluster). -![](/assets/b251e2e-kops-create.png) + +![Kops Create Example](/assets/b251e2e-kops-create.png) + Run the following to add the SSH public key to the cluster. ``` kops create secret sshpublickey admin -i /secrets/tf/ssh/joany-staging-kops-us-west-2.pub \ @@ -101,11 +103,12 @@ kops create secret sshpublickey admin -i /secrets/tf/ssh/joany-staging-kops-us-w ``` Run the following to provision the AWS resources for the cluster. + ``` kops update cluster --name us-west-2.staging.joany.net --yes ``` -![](/assets/944178e-kops-update-cluster.png) +![Kops Update Cluster Example](/assets/944178e-kops-update-cluster.png) All done. The `kops` cluster is now up and running. diff --git a/content/geodesic/geodesic-module/use/with-terraform.md b/content/geodesic/module/usage/with-terraform.md similarity index 100% rename from content/geodesic/geodesic-module/use/with-terraform.md rename to content/geodesic/module/usage/with-terraform.md diff --git a/content/glossary/aws-vault.md b/content/glossary/aws-vault.md new file mode 100644 index 000000000..7e691cbbf --- /dev/null +++ b/content/glossary/aws-vault.md @@ -0,0 +1,9 @@ +--- +title: aws-vault +terms: +- "aws-vault" +- "aws vault" +excerpt: "aws-vault is a utility for securely managing secrets with AWS Systems Manager (SSM) Parameter Store and KMS" +--- +`aws-vault` is a utility for securely managing secrets with AWS Systems Manager (SSM) Parameter Store and KMS + diff --git a/content/helm-charts/helm-quick-start.md b/content/helm-charts/quickstart.md similarity index 88% rename from content/helm-charts/helm-quick-start.md rename to content/helm-charts/quickstart.md index 1ac66172c..b75cca3e2 100644 --- a/content/helm-charts/helm-quick-start.md +++ b/content/helm-charts/quickstart.md @@ -4,7 +4,7 @@ excerpt: "" --- Helm is a package manager for kubernetes. -There are a vast number of public charts available: https://github.com/kubernetes/charts/ +There are a vast number of public charts available: {{% dialog type="info" icon="fa-info-circle" title="Official Documentation" %}} Visit the [Helm Documentation Portal](https://docs.helm.sh/) for excellent documentation @@ -12,7 +12,7 @@ Visit the [Helm Documentation Portal](https://docs.helm.sh/) for excellent docum # Values File -Most packages will require some shared secrets. We recommend storing the `values.yaml` in an encrypted S3 bucket. [Geodesic Overview](doc:geodesic) makes this easy using the `s3` command to mount S3 buckets to the local filesystem. +Most packages will require some shared secrets. We recommend storing the `values.yaml` in an encrypted S3 bucket. [Geodesic Overview](/geodesic) makes this easy using the `s3` command to mount S3 buckets to the local filesystem. Mount secrets: ``` diff --git a/content/helm-charts/supported-charts/chart-repo.md b/content/helm-charts/supported-charts/chart-repo.md index 4ae4c7940..a33f40ac8 100644 --- a/content/helm-charts/supported-charts/chart-repo.md +++ b/content/helm-charts/supported-charts/chart-repo.md @@ -1,5 +1,4 @@ --- title: "chart-repo" excerpt: "" -draft: true --- diff --git a/content/kubernetes-backing-services/ingress/_index.md b/content/kubernetes-backing-services/ingress/_index.md index 76c7663e3..7095ead09 100644 --- a/content/kubernetes-backing-services/ingress/_index.md +++ b/content/kubernetes-backing-services/ingress/_index.md @@ -63,7 +63,7 @@ This would require you to specify explicitly which instance of the ingress contr Here is a list of controllers we support: -* [Nginx Ingress Controller](doc:nginx-ingress-controller) +* [Nginx Ingress Controller]({{< relref "kubernetes-backing-services/ingress/nginx-ingress-controller.md" >}}) {{% dialog type="info" icon="fa-info-circle" title="Read More" %}} https://kubernetes.io/docs/concepts/services-networking/ingress diff --git a/content/kubernetes-backing-services/ingress/nginx-ingress-controller.md b/content/kubernetes-backing-services/ingress/nginx-ingress-controller.md index 384cdb166..49f87ca7d 100644 --- a/content/kubernetes-backing-services/ingress/nginx-ingress-controller.md +++ b/content/kubernetes-backing-services/ingress/nginx-ingress-controller.md @@ -47,10 +47,11 @@ releases: value: 3Mi ``` -Then do [Helmfile](doc:helmfile) sync follow instructions +Then do [Helmfile]({{< relref "tools/helmfile.md" >}}) sync follow instructions + # Usage -After install you the ingress controller, then you can create [Ingress Resources](doc:ingress) with [kubectl](doc:kubectl) or specifying them in [Helm](doc:helm-charts) values directly or with [Helmfile](doc:helmfile). +After install you the ingress controller, then you can create [Ingress Resources](/kubernetes-backing-services/ingress/) with [kubectl]({{< relref "kubernetes/kubectl.md" >}}) or specifying them in [Helm Chart](/helm-charts) values directly or with [Helmfile]({{< relref "tools/helmfile.md" >}}). Here are some examples: (see tabs) @@ -97,12 +98,12 @@ releases: value: true - name: ingress.hosts.example\.com[0] value: / - + ``` ##### :warning: Helm chart values are specific for chart -> There is no unified specification for helm chart values structure. Different charts may have very different structures to values. The only way to know for sure what is supported is to refer to the chart. +> There is no unified specification for helm chart values structure. Different charts may have very different structures to values. The only way to know for sure what is supported is to refer to the chart. > >Provided examples are based on the `stable/chartmuseum` chart https://github.com/kubernetes/charts/blob/master/stable/chartmuseum diff --git a/content/kubernetes-platform-services/artifact-storage/_index.md b/content/kubernetes-platform-services/artifact-storage/_index.md index 17da48be2..5d3d9a04e 100644 --- a/content/kubernetes-platform-services/artifact-storage/_index.md +++ b/content/kubernetes-platform-services/artifact-storage/_index.md @@ -1,4 +1,5 @@ --- title: "Artifact Storage" excerpt: "" +draft: true --- diff --git a/content/kubernetes-platform-services/dashboard/cluster-portal.md b/content/kubernetes-platform-services/dashboard/cluster-portal.md index 71b0a5cd4..e756389bd 100644 --- a/content/kubernetes-platform-services/dashboard/cluster-portal.md +++ b/content/kubernetes-platform-services/dashboard/cluster-portal.md @@ -1,5 +1,4 @@ --- title: "Cluster Portal" excerpt: "" -draft: true --- diff --git a/content/kubernetes-platform-services/dashboard/kubernetes-ui-dashboard.md b/content/kubernetes-platform-services/dashboard/kubernetes-ui-dashboard.md index a2e575004..20bf2f55f 100644 --- a/content/kubernetes-platform-services/dashboard/kubernetes-ui-dashboard.md +++ b/content/kubernetes-platform-services/dashboard/kubernetes-ui-dashboard.md @@ -15,4 +15,4 @@ Explain what it does Give `helmfile` stub / example # Related -* [Cluster Portal](doc:cluster-portal) for exposing this publicly +* [Cluster Portal]({{< relref "kubernetes-platform-services/dashboard/cluster-portal.md" >}}) for exposing this publicly diff --git a/content/kubernetes/kubernetes-core-concepts.md b/content/kubernetes/core-concepts.md similarity index 54% rename from content/kubernetes/kubernetes-core-concepts.md rename to content/kubernetes/core-concepts.md index ae96ae452..b7f717c69 100644 --- a/content/kubernetes/kubernetes-core-concepts.md +++ b/content/kubernetes/core-concepts.md @@ -11,4 +11,4 @@ draft: true ## Read More -* Production Patterns & Antipatterns, https://github.com/gravitational/workshop/blob/master/k8sprod.md +* Production Patterns & Antipatterns, diff --git a/content/kubernetes/helm-charts/helm-charts-quick-start.md b/content/kubernetes/helm-charts/quickstart.md similarity index 100% rename from content/kubernetes/helm-charts/helm-charts-quick-start.md rename to content/kubernetes/helm-charts/quickstart.md diff --git a/content/kubernetes/kubectl.md b/content/kubernetes/kubectl.md index aa28524f6..0841eb6b4 100644 --- a/content/kubernetes/kubectl.md +++ b/content/kubernetes/kubectl.md @@ -1,5 +1,4 @@ --- title: "kubectl" excerpt: "" -draft: true --- diff --git a/content/kubernetes/kubernetes-pull-secrets.md b/content/kubernetes/pull-secrets.md similarity index 100% rename from content/kubernetes/kubernetes-pull-secrets.md rename to content/kubernetes/pull-secrets.md diff --git a/content/kubernetes/kubernetes-resource-management.md b/content/kubernetes/resource-management.md similarity index 96% rename from content/kubernetes/kubernetes-resource-management.md rename to content/kubernetes/resource-management.md index 3b63004fd..5e348b4c8 100644 --- a/content/kubernetes/kubernetes-resource-management.md +++ b/content/kubernetes/resource-management.md @@ -6,7 +6,7 @@ excerpt: "Understanding Kubernetes Resource Limits, Requests and how to configur ## What's the difference between "Requests" and "Limits"? -Kubernetes provides excellent controls around hard and soft limits for resource consumption. The "requested" amount is generally how much of some resource a pod is expected to consume. Consider this the "soft limit"; it gives the scheduler a hint so it can best figure out where to place the pod. The "limit" is the actual "hard limit". This is the maximum amount of some resource that a pod can consume. +Kubernetes provides excellent controls around hard and soft limits for resource consumption. The "requested" amount is generally how much of some resource a pod is expected to consume. Consider this the "soft limit"; it gives the scheduler a hint so it can best figure out where to place the pod. The "limit" is the actual "hard limit". This is the maximum amount of some resource that a pod can consume. If a process consumes more than the "limit" of CPU, it will be throttled. If a process attempts to consume more memory than the "limit", it will get an OOM error. @@ -19,12 +19,12 @@ NAME READY STATUS RESTARTS AGE some-pod 0/1 OOMKilled 1 24s ``` - + ## How can we tell if we're oversubscribed on CPU/Memory? -By inspecting a "Node" in the kubernetes dashboard, it's really easy to tell if a cluster is oversubscribed. In the example below, we can see that pods have requested 54% of available CPU, but the hard limit has been set to 100% of available CPU. This means, that nothing else should be scheduled do this node as 100% of total available capacity has been allocated. +By inspecting a "Node" in the kubernetes dashboard, it's really easy to tell if a cluster is oversubscribed. In the example below, we can see that pods have requested 54% of available CPU, but the hard limit has been set to 100% of available CPU. This means, that nothing else should be scheduled do this node as 100% of total available capacity has been allocated. -In terms of memory, we see that all pods of a total memory limit of 4.3GB, which is 113% of available resources. This means the cluster is overcommitted in terms of the maximum permitted amount of memory. In terms of actually requested memory, we're still under the threshold. +In terms of memory, we see that all pods of a total memory limit of 4.3GB, which is 113% of available resources. This means the cluster is overcommitted in terms of the maximum permitted amount of memory. In terms of actually requested memory, we're still under the threshold. ![](/assets/334a25e-Screen_Shot_2018-04-17_at_1.50.21_PM.png) ## How can we tell if we have enough CPU/Memory Allocated? Navigate to the kubernetes dashboard. Click the "Cluster" menu option on the left (it's also the default view). At the top, it will show how much CPU and Memory is being consumed versus total available. @@ -35,15 +35,16 @@ In the cluster below, you can see CPU is not constrained, but available memory i Navigate to the kubernetes dashboard. Click the "Overview" menu option on the left and then filter by the namespace. By default, the "default" namespace is selected. Generally, we don't use this namespace. -If everything is running smoothly, you should see "Deployments", "Pods" and "ReplicaSets" all at 100%, which means there are no failures. +If everything is running smoothly, you should see "Deployments", "Pods" and "ReplicaSets" all at 100%, which means there are no failures. ![](/assets/a701e1e-Screen_Shot_2018-04-17_at_1.25.03_PM.png) + Note, you can also select "All Namespaces" to view aggregate information for the cluster. ![](/assets/edea654-Screen_Shot_2018-04-17_at_1.34.31_PM.png) # How can we set resource requests & limits? -## Namespace Level +## Namespace Level It's possible to restrict the total resources available to a namespace. * Who is responsible for this? DevOps ADmin * Who sets these limits? diff --git a/content/learn-by-example/kubernetes-cluster/add-platform-backing-services.md b/content/learn-by-example/kubernetes-cluster/add-platform-backing-services.md index 9bf7b6fdc..b957c8a62 100644 --- a/content/learn-by-example/kubernetes-cluster/add-platform-backing-services.md +++ b/content/learn-by-example/kubernetes-cluster/add-platform-backing-services.md @@ -1,5 +1,4 @@ --- title: "Add Platform Backing Services" excerpt: "" -draft: true --- diff --git a/content/learn-by-example/root-module/_index.md b/content/learn-by-example/root-module/_index.md index 7abac97c5..5c064d7eb 100644 --- a/content/learn-by-example/root-module/_index.md +++ b/content/learn-by-example/root-module/_index.md @@ -3,7 +3,7 @@ title: "Root Module" excerpt: "" weight: 1 --- -* Clone reference architecture repo for Geodesic Root Module. +* Clone reference architecture repo for Geodesic Root Module. * Update the follow settings: XYZ * Configure Terraform Remote State * Establish DNS Zones diff --git a/content/local-dev-environments/_index.md b/content/local-dev-environments/_index.md new file mode 100644 index 000000000..591cf0d7d --- /dev/null +++ b/content/local-dev-environments/_index.md @@ -0,0 +1,5 @@ +--- +title: "Local Dev Environments" +excerpt: "" +homepage: true +--- diff --git a/content/local-development-environments/docker-compose.md b/content/local-dev-environments/docker-compose.md similarity index 100% rename from content/local-development-environments/docker-compose.md rename to content/local-dev-environments/docker-compose.md diff --git a/content/local-development-environments/dockerfile/_index.md b/content/local-dev-environments/dockerfile/_index.md similarity index 100% rename from content/local-development-environments/dockerfile/_index.md rename to content/local-dev-environments/dockerfile/_index.md diff --git a/content/local-development-environments/dockerfile/dockerfile-best-practices.md b/content/local-dev-environments/dockerfile/dockerfile-best-practices.md similarity index 100% rename from content/local-development-environments/dockerfile/dockerfile-best-practices.md rename to content/local-dev-environments/dockerfile/dockerfile-best-practices.md diff --git a/content/local-development-environments/dockerfile/dockerfile-examples.md b/content/local-dev-environments/dockerfile/dockerfile-examples.md similarity index 100% rename from content/local-development-environments/dockerfile/dockerfile-examples.md rename to content/local-dev-environments/dockerfile/dockerfile-examples.md diff --git a/content/local-development-environments/fancy-shell-prompts.md b/content/local-dev-environments/fancy-shell-prompts.md similarity index 100% rename from content/local-development-environments/fancy-shell-prompts.md rename to content/local-dev-environments/fancy-shell-prompts.md diff --git a/content/local-development-environments/minikube.md b/content/local-dev-environments/minikube.md similarity index 100% rename from content/local-development-environments/minikube.md rename to content/local-dev-environments/minikube.md diff --git a/content/local-development-environments/quickstart.md b/content/local-dev-environments/quickstart.md similarity index 68% rename from content/local-development-environments/quickstart.md rename to content/local-dev-environments/quickstart.md index d0d8fc39d..11d6e89a5 100644 --- a/content/local-development-environments/quickstart.md +++ b/content/local-dev-environments/quickstart.md @@ -13,7 +13,7 @@ The "Developer Tools" package is needed for tools like `make` and `git` used thr xcode-select --install ``` -![](/assets/f111fb9-image_4.png) +![Example XCode Dialog](/assets/f111fb9-image_4.png) ## Install Homebrew @@ -31,12 +31,18 @@ Docker for Mac is a Docker Community Edition (CE) version which is completely FR Visit the [Docker for Mac](https://docs.docker.com/docker-for-mac/install/) site or just go ahead and directly download the [`Docker.dmg`](https://download.docker.com/mac/stable/Docker.dmg) -- ![](/assets/840d66e-docker-app-drag.png) After installing, you'll now see a new docker icon in your task bar. +- -![](/assets/dbe7dad-whale-in-menu-bar.png) **IMPORTANT:** Docker for Mac requires OS X El Capitan 10.11 or newer macOS release running on a 2010 or newer Mac, with Intel's hardware support for MMU virtualization. +![Screenshot of Docker for Mac Installation](/assets/840d66e-docker-app-drag.png) + +After installing, you'll now see a new docker icon in your task bar. + +![Screenshot of Task Bar Item](/assets/dbe7dad-whale-in-menu-bar.png) + +**IMPORTANT:** Docker for Mac requires OS X El Capitan 10.11 or newer macOS release running on a 2010 or newer Mac, with Intel's hardware support for MMU virtualization. ## Configure AWS Vault Now set up your AWS credentials so you can interact with AWS on the command line. -Follow the instructions for configuring [AWS Vault](doc:aws-vault). +Follow the instructions for configuring [AWS Vault]({{< relref "tools/aws-vault.md" >}}). diff --git a/content/local-development-environments/tmate.md b/content/local-dev-environments/tmate.md similarity index 100% rename from content/local-development-environments/tmate.md rename to content/local-dev-environments/tmate.md diff --git a/content/local-development-environments/trailer.md b/content/local-dev-environments/trailer.md similarity index 100% rename from content/local-development-environments/trailer.md rename to content/local-dev-environments/trailer.md diff --git a/content/local-development-environments/vagrant.md b/content/local-dev-environments/vagrant.md similarity index 100% rename from content/local-development-environments/vagrant.md rename to content/local-dev-environments/vagrant.md diff --git a/content/local-development-environments/_index.md b/content/local-development-environments/_index.md deleted file mode 100644 index 9d4dc427f..000000000 --- a/content/local-development-environments/_index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Local Development Environments" -excerpt: "" -homepage: true ---- diff --git a/content/popchest/staging-cluster-map/_index.md b/content/popchest/staging-cluster-map/_index.md index 3b383da6b..2fde6b256 100644 --- a/content/popchest/staging-cluster-map/_index.md +++ b/content/popchest/staging-cluster-map/_index.md @@ -7,8 +7,8 @@ Staging - is kubernetes cluster running on top of AWS. Functionality of cluster ![Staging Cluster](/assets/2986185-Current_Staging_cluster_-_Page_1_2.png) -- Grey - Kubernetes & AWS is [Infrastructure as a Code](doc:infrastructure-as-a-code) -- Blue - Kubernetes Backing Services - are [Backing Services](doc:scafflod) for extending k8s functionality -- Red - Monitoring tools - are [Backing Services](doc:scafflod) required for monitoring and alerting -- Yellow - Platform services - are [Backing Services](doc:scafflod) required for CI/CD and development -- Green - [Deployable Applications](doc:deployable-application) +- Grey - Kubernetes & AWS is [Infrastructure as a Code]({{< relref "devops-methodology/software-lifecycle/infrastructure-as-code.md" >}}) +- Blue - Kubernetes Backing Services - are [Backing Services](/kubernetes-backing-services) for extending k8s functionality +- Red - Monitoring tools - are [Backing Services](/kubernetes-backing-services) required for monitoring and alerting +- Yellow - Platform services - are [Backing Services](/kubernetes-backing-services) required for CI/CD and development +- Green - [Deployable Applications]({{< relref "devops-methodology/software-lifecycle/deployable-applications.md" >}}) diff --git a/content/project-management/gost-framework.md b/content/project-management/gost-framework.md index 1d93c55aa..73439ff7f 100644 --- a/content/project-management/gost-framework.md +++ b/content/project-management/gost-framework.md @@ -4,11 +4,8 @@ excerpt: "" --- ![](/assets/3feff88-ghost.png) - - The GOST Framework is a method of clearly articulating a process for achieving a goal. It does this by decomposing it into it's various parts. It helps distinguish between the objectives, strategies and tactics so that relevant stakeholders can focus on what's relevant to them. - # Goals A goal defines a broad primary outcome. This is the business driver and should relate to some specific benefit to the business. Strongly recommend defining a single goal. diff --git a/content/project-management/managers-vs-makers.md b/content/project-management/managers-vs-makers.md index e5e1b8553..aa7176403 100644 --- a/content/project-management/managers-vs-makers.md +++ b/content/project-management/managers-vs-makers.md @@ -6,10 +6,11 @@ excerpt: "" # TL;DR Developers (Makers) and Managers work differently. -* **Makers** plan in half-day blocks of time. These are developers. -* **Managers** plan to minimize empty 15-minute slots in their calendar. + +- **Makers** plan in half-day blocks of time. These are developers. +- **Managers** plan to minimize empty 15-minute slots in their calendar. Interrupts are costly for developers and therefore the business. -http://www.paulgraham.com/makersschedule.html + (Paul Graham - YCombinator Founder) diff --git a/content/project-management/raci-matrix.md b/content/project-management/raci-matrix.md index 3a333d1b2..c26c1e745 100644 --- a/content/project-management/raci-matrix.md +++ b/content/project-management/raci-matrix.md @@ -5,9 +5,6 @@ excerpt: "" The [RACI Responsibility assignment matrix](https://en.wikipedia.org/wiki/Responsibility_assignment_matrix) is used to clarify the participation by various roles in completing tasks or deliverables as it relates to projects or teams. * **Responsible:** Those who perform or recommend the work to achieve the task. - * **Accountable:** The one ultimately answerable for the correct and thorough completion of the deliverable or task, and the one who delegates the work to those responsible. They are required to sign off (approve) work that the Responsible party provides. There must be only one accountable party specified for each Role or Responsibility. - * **Consulted:** Those whose opinions are sought, typically Subject Matter Experts (SME) and with whom there is two-way communication. - * **Informed:** Those who are kept up-to-date on progress, often only on completion of the task or deliverable; and with whom there is just one-way communication. diff --git a/content/release-engineering/build-harness.md b/content/release-engineering/build-harness.md index dade06b88..616aaee9b 100644 --- a/content/release-engineering/build-harness.md +++ b/content/release-engineering/build-harness.md @@ -3,7 +3,7 @@ title: Build Harness excerpt: '' --- -The `build-harness` is a collection of [Makefiles](doc:makefile) to facilitate building stuff. It supports Golang projects, Dockerfiles, Helm charts, and much more. +The `build-harness` is a collection of [Makefiles](/local-dev-environments/makefile) to facilitate building stuff. It supports Golang projects, Dockerfiles, Helm charts, and much more. | | | |:-------------|:---------------------------------------------------------------------------------------------------------------------------------------| @@ -13,7 +13,7 @@ The `build-harness` is a collection of [Makefiles](doc:makefile) to facilitate b It's designed to work with CI/CD systems such as Travis CI, CircleCI, CodeFresh and Jenkins. -It's 100% Open Source and licensed under [APACHE2](LICENSE). +It's 100% Open Source and licensed under [APACHE2]({{< relref "LICENSE.md" >}}). # Usage @@ -21,7 +21,7 @@ At the top of your `Makefile` add, the following... ## Makefile -```text +```shell -include $(shell curl -sSL -o .build-harness "https://git.io/build-harness"; echo .build-harness) ``` @@ -37,9 +37,9 @@ Run `make help` for a list of available targets. # Real World Examples -We leverage the `build-harness` in nearly every project on our [GitHub](doc:github). +We leverage the `build-harness` in nearly every project on our [GitHub]({{< relref "documentation/our-github.md" >}}). -| | | +| Example Repo | Usage | |:----------------------------------------------------------------------------------|:---------------------------------------------------------------------------| | [`github-authorized-keys`](https://github.com/cloudposse/github-authorized-keys/) | A Golang project that leverages `docker/%`, `go/%`, `travis/%` targets | | [`charts`](https://github.com/cloudposse/charts/) | A collection of Helm Charts that leverages `docker/%` and `helm/%` targets | @@ -50,8 +50,6 @@ We leverage the `build-harness` in nearly every project on our [GitHub](doc:gith Running `make help` will produce this helpful output of all available make targets. -## # - ```shell $ make help diff --git a/content/release-engineering/codefresh-kubernetes-integration.md b/content/release-engineering/codefresh-kubernetes-integration.md index f64eba7f1..92345f17f 100644 --- a/content/release-engineering/codefresh-kubernetes-integration.md +++ b/content/release-engineering/codefresh-kubernetes-integration.md @@ -14,7 +14,7 @@ Click "Add Provider" and select the relevant cloud platform. Then click "Add Cluster". For `kops` based clusters, select the "Custom Providers" option. ![](/assets/60b49ab-Screen_Shot_2018-04-16_at_5.19.13_PM.png) -Next, you'll be presented a form. In [Geodesic Overview](doc:geodesic) we provide a script to make this integration a little bit easier. By running the [codefresh-settings]( +Next, you'll be presented a form. In [Geodesic Overview](/geodesic) we provide a script to make this integration a little bit easier. By running the [codefresh-settings]( https://github.com/cloudposse/geodesic/blob/master/rootfs/usr/local/bin/codefresh-settings) script, it will output all the necessary information you need in order to setup the Kubernetes integration. Enter the outputs of the script into the form and click save. diff --git a/content/terraform-modules/terraform-backup-modules/_index.md b/content/terraform-modules/backups/_index.md similarity index 100% rename from content/terraform-modules/terraform-backup-modules/_index.md rename to content/terraform-modules/backups/_index.md diff --git a/content/terraform-modules/terraform-backup-modules/terraform-aws-ec2-ami-backup.md b/content/terraform-modules/backups/terraform-aws-ec2-ami-backup.md similarity index 100% rename from content/terraform-modules/terraform-backup-modules/terraform-aws-ec2-ami-backup.md rename to content/terraform-modules/backups/terraform-aws-ec2-ami-backup.md diff --git a/content/terraform-modules/terraform-backup-modules/terraform-aws-ec2-ami-snapshot.md b/content/terraform-modules/backups/terraform-aws-ec2-ami-snapshot.md similarity index 100% rename from content/terraform-modules/terraform-backup-modules/terraform-aws-ec2-ami-snapshot.md rename to content/terraform-modules/backups/terraform-aws-ec2-ami-snapshot.md diff --git a/content/terraform-modules/terraform-backup-modules/terraform-aws-efs-backup.md b/content/terraform-modules/backups/terraform-aws-efs-backup.md similarity index 100% rename from content/terraform-modules/terraform-backup-modules/terraform-aws-efs-backup.md rename to content/terraform-modules/backups/terraform-aws-efs-backup.md diff --git a/content/terraform-modules/terraform-module-best-practices.md b/content/terraform-modules/best-practices.md similarity index 100% rename from content/terraform-modules/terraform-module-best-practices.md rename to content/terraform-modules/best-practices.md diff --git a/content/terraform-modules/terraform-cdn-modules/_index.md b/content/terraform-modules/cdn/_index.md similarity index 100% rename from content/terraform-modules/terraform-cdn-modules/_index.md rename to content/terraform-modules/cdn/_index.md diff --git a/content/terraform-modules/terraform-cdn-modules/terraform-aws-cloudfront-cdn.md b/content/terraform-modules/cdn/terraform-aws-cloudfront-cdn.md similarity index 100% rename from content/terraform-modules/terraform-cdn-modules/terraform-aws-cloudfront-cdn.md rename to content/terraform-modules/cdn/terraform-aws-cloudfront-cdn.md diff --git a/content/terraform-modules/terraform-cdn-modules/terraform-aws-cloudfront-s3-cdn.md b/content/terraform-modules/cdn/terraform-aws-cloudfront-s3-cdn.md similarity index 100% rename from content/terraform-modules/terraform-cdn-modules/terraform-aws-cloudfront-s3-cdn.md rename to content/terraform-modules/cdn/terraform-aws-cloudfront-s3-cdn.md diff --git a/content/terraform-modules/terraform-cdn-modules/terraform-aws-s3-website.md b/content/terraform-modules/cdn/terraform-aws-s3-website.md similarity index 100% rename from content/terraform-modules/terraform-cdn-modules/terraform-aws-s3-website.md rename to content/terraform-modules/cdn/terraform-aws-s3-website.md diff --git a/content/terraform-modules/terraform-cicd-modules/_index.md b/content/terraform-modules/cicd/_index.md similarity index 100% rename from content/terraform-modules/terraform-cicd-modules/_index.md rename to content/terraform-modules/cicd/_index.md diff --git a/content/terraform-modules/terraform-cicd-modules/terraform-aws-cicd.md b/content/terraform-modules/cicd/terraform-aws-cicd.md similarity index 100% rename from content/terraform-modules/terraform-cicd-modules/terraform-aws-cicd.md rename to content/terraform-modules/cicd/terraform-aws-cicd.md diff --git a/content/terraform-modules/terraform-cicd-modules/terraform-aws-codebuild.md b/content/terraform-modules/cicd/terraform-aws-codebuild.md similarity index 100% rename from content/terraform-modules/terraform-cicd-modules/terraform-aws-codebuild.md rename to content/terraform-modules/cicd/terraform-aws-codebuild.md diff --git a/content/terraform-modules/terraform-cicd-modules/terraform-aws-jenkins.md b/content/terraform-modules/cicd/terraform-aws-jenkins.md similarity index 100% rename from content/terraform-modules/terraform-cicd-modules/terraform-aws-jenkins.md rename to content/terraform-modules/cicd/terraform-aws-jenkins.md diff --git a/content/terraform-modules/terraform-database-modules/_index.md b/content/terraform-modules/databases/_index.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/_index.md rename to content/terraform-modules/databases/_index.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-dynamodb-autoscaler.md b/content/terraform-modules/databases/terraform-aws-dynamodb-autoscaler.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-dynamodb-autoscaler.md rename to content/terraform-modules/databases/terraform-aws-dynamodb-autoscaler.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-dynamodb.md b/content/terraform-modules/databases/terraform-aws-dynamodb.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-dynamodb.md rename to content/terraform-modules/databases/terraform-aws-dynamodb.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-elasticache-memcached.md b/content/terraform-modules/databases/terraform-aws-elasticache-memcached.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-elasticache-memcached.md rename to content/terraform-modules/databases/terraform-aws-elasticache-memcached.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-elasticache-redis.md b/content/terraform-modules/databases/terraform-aws-elasticache-redis.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-elasticache-redis.md rename to content/terraform-modules/databases/terraform-aws-elasticache-redis.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-rds-cluster.md b/content/terraform-modules/databases/terraform-aws-rds-cluster.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-rds-cluster.md rename to content/terraform-modules/databases/terraform-aws-rds-cluster.md diff --git a/content/terraform-modules/terraform-database-modules/terraform-aws-rds.md b/content/terraform-modules/databases/terraform-aws-rds.md similarity index 100% rename from content/terraform-modules/terraform-database-modules/terraform-aws-rds.md rename to content/terraform-modules/databases/terraform-aws-rds.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/_index.md b/content/terraform-modules/kops-kubernetes/_index.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/_index.md rename to content/terraform-modules/kops-kubernetes/_index.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-chart-repo.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-chart-repo.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-chart-repo.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-chart-repo.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-external-dns.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-external-dns.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-external-dns.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-external-dns.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-metadata.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-metadata.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-metadata.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-metadata.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-route53.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-route53.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-route53.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-route53.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-state-backend.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-state-backend.md similarity index 100% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-state-backend.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-state-backend.md diff --git a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-vpc-peering.md b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-vpc-peering.md similarity index 95% rename from content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-vpc-peering.md rename to content/terraform-modules/kops-kubernetes/terraform-aws-kops-vpc-peering.md index f40b1337a..7418885b2 100644 --- a/content/terraform-modules/terraform-kubernetes-kops-modules/terraform-aws-kops-vpc-peering.md +++ b/content/terraform-modules/kops-kubernetes/terraform-aws-kops-vpc-peering.md @@ -16,8 +16,8 @@ excerpt: >- The module depends on the following Terraform modules -- [terraform-aws-kops-metadata](doc:terraform-aws-kops-metadata) - to lookup resources within a Kops cluster -- [terraform-aws-vpc-peering](doc:terraform-aws-vpc-peering) - to create a peering connection between two VPCs +- [terraform-aws-kops-metadata]({{< relref "terraform-modules/kops-kubernetes/terraform-aws-kops-metadata.md" >}}) - to lookup resources within a Kops cluster +- [terraform-aws-vpc-peering]({{< relref "terraform-modules/networking/terraform-aws-vpc-peering.md" >}}) - to create a peering connection between two VPCs # Usage diff --git a/content/terraform-modules/terraform-logging-modules/_index.md b/content/terraform-modules/logging/_index.md similarity index 100% rename from content/terraform-modules/terraform-logging-modules/_index.md rename to content/terraform-modules/logging/_index.md diff --git a/content/terraform-modules/terraform-logging-modules/terraform-aws-cloudwatch-flow-logs.md b/content/terraform-modules/logging/terraform-aws-cloudwatch-flow-logs.md similarity index 100% rename from content/terraform-modules/terraform-logging-modules/terraform-aws-cloudwatch-flow-logs.md rename to content/terraform-modules/logging/terraform-aws-cloudwatch-flow-logs.md diff --git a/content/terraform-modules/terraform-logging-modules/terraform-aws-cloudwatch-logs.md b/content/terraform-modules/logging/terraform-aws-cloudwatch-logs.md similarity index 100% rename from content/terraform-modules/terraform-logging-modules/terraform-aws-cloudwatch-logs.md rename to content/terraform-modules/logging/terraform-aws-cloudwatch-logs.md diff --git a/content/terraform-modules/terraform-logging-modules/terraform-aws-datadog-integration.md b/content/terraform-modules/logging/terraform-aws-datadog-integration.md similarity index 100% rename from content/terraform-modules/terraform-logging-modules/terraform-aws-datadog-integration.md rename to content/terraform-modules/logging/terraform-aws-datadog-integration.md diff --git a/content/terraform-modules/terraform-logging-modules/terraform-aws-s3-log-storage.md b/content/terraform-modules/logging/terraform-aws-s3-log-storage.md similarity index 100% rename from content/terraform-modules/terraform-logging-modules/terraform-aws-s3-log-storage.md rename to content/terraform-modules/logging/terraform-aws-s3-log-storage.md diff --git a/content/terraform-modules/terraform-monitoring-modules/_index.md b/content/terraform-modules/monitoring/_index.md similarity index 100% rename from content/terraform-modules/terraform-monitoring-modules/_index.md rename to content/terraform-modules/monitoring/_index.md diff --git a/content/terraform-modules/terraform-monitoring-modules/terraform-datadog-aws-integration.md b/content/terraform-modules/monitoring/terraform-datadog-aws-integration.md similarity index 100% rename from content/terraform-modules/terraform-monitoring-modules/terraform-datadog-aws-integration.md rename to content/terraform-modules/monitoring/terraform-datadog-aws-integration.md diff --git a/content/terraform-modules/terraform-monitoring-modules/terraform-datadog-monitor.md b/content/terraform-modules/monitoring/terraform-datadog-monitor.md similarity index 100% rename from content/terraform-modules/terraform-monitoring-modules/terraform-datadog-monitor.md rename to content/terraform-modules/monitoring/terraform-datadog-monitor.md diff --git a/content/terraform-modules/terraform-networking-modules/_index.md b/content/terraform-modules/networking/_index.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/_index.md rename to content/terraform-modules/networking/_index.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-dynamic-subnets.md b/content/terraform-modules/networking/terraform-aws-dynamic-subnets.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-dynamic-subnets.md rename to content/terraform-modules/networking/terraform-aws-dynamic-subnets.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-efs.md b/content/terraform-modules/networking/terraform-aws-efs.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-efs.md rename to content/terraform-modules/networking/terraform-aws-efs.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-multi-az-subnets.md b/content/terraform-modules/networking/terraform-aws-multi-az-subnets.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-multi-az-subnets.md rename to content/terraform-modules/networking/terraform-aws-multi-az-subnets.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-named-subnets.md b/content/terraform-modules/networking/terraform-aws-named-subnets.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-named-subnets.md rename to content/terraform-modules/networking/terraform-aws-named-subnets.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-route53-alias.md b/content/terraform-modules/networking/terraform-aws-route53-alias.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-route53-alias.md rename to content/terraform-modules/networking/terraform-aws-route53-alias.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-route53-cluster-hostname.md b/content/terraform-modules/networking/terraform-aws-route53-cluster-hostname.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-route53-cluster-hostname.md rename to content/terraform-modules/networking/terraform-aws-route53-cluster-hostname.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-route53-cluster-zone.md b/content/terraform-modules/networking/terraform-aws-route53-cluster-zone.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-route53-cluster-zone.md rename to content/terraform-modules/networking/terraform-aws-route53-cluster-zone.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-vpc-peering.md b/content/terraform-modules/networking/terraform-aws-vpc-peering.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-vpc-peering.md rename to content/terraform-modules/networking/terraform-aws-vpc-peering.md diff --git a/content/terraform-modules/terraform-networking-modules/terraform-aws-vpc.md b/content/terraform-modules/networking/terraform-aws-vpc.md similarity index 100% rename from content/terraform-modules/terraform-networking-modules/terraform-aws-vpc.md rename to content/terraform-modules/networking/terraform-aws-vpc.md diff --git a/content/terraform-modules/terraform-modules-overview.md b/content/terraform-modules/overview.md similarity index 100% rename from content/terraform-modules/terraform-modules-overview.md rename to content/terraform-modules/overview.md diff --git a/content/terraform-modules/terraform-platform-modules/_index.md b/content/terraform-modules/platform/_index.md similarity index 100% rename from content/terraform-modules/terraform-platform-modules/_index.md rename to content/terraform-modules/platform/_index.md diff --git a/content/terraform-modules/terraform-platform-modules/terraform-aws-ec2-admin-server.md b/content/terraform-modules/platform/terraform-aws-ec2-admin-server.md similarity index 83% rename from content/terraform-modules/terraform-platform-modules/terraform-aws-ec2-admin-server.md rename to content/terraform-modules/platform/terraform-aws-ec2-admin-server.md index 02dc743de..d1f9e1e6b 100644 --- a/content/terraform-modules/terraform-platform-modules/terraform-aws-ec2-admin-server.md +++ b/content/terraform-modules/platform/terraform-aws-ec2-admin-server.md @@ -45,18 +45,18 @@ module "admin_tier" { # About terraform-aws-route53-cluster-zone -This requires terraform-aws-route53-cluster-zone to provide a cluster-level DNS zone. The module uses [terraform-aws-route53-cluster-hostname](doc:terraform-aws-route53-cluster-hostname) to create a DNS record for created host. `terraform-aws-route53-cluster-hostname` module needs `zone_id` parameter as an input, and this parameter actually is an output from [terraform-aws-route53-cluster-zone](doc:terraform-aws-route53-cluster-zone). +This requires terraform-aws-route53-cluster-zone to provide a cluster-level DNS zone. The module uses [terraform-aws-route53-cluster-hostname]({{< relref "terraform-modules/networking/terraform-aws-route53-cluster-hostname.md" >}}) to create a DNS record for created host. `terraform-aws-route53-cluster-hostname` module needs `zone_id` parameter as an input, and this parameter actually is an output from [terraform-aws-route53-cluster-zone]({{< relref "terraform-modules/networking/terraform-aws-route53-cluster-zone.md" >}}). -That is why [terraform-aws-route53-cluster-zone](doc:terraform-aws-route53-cluster-zone) should be implemented in `root` TF manifest when we need `terraform-aws-ec2-admin-server`. +That is why [terraform-aws-route53-cluster-zone]({{< relref "terraform-modules/networking/terraform-aws-route53-cluster-zone.md" >}}) should be implemented in `root` TF manifest when we need `terraform-aws-ec2-admin-server`. # Dependencies This module depends on the following modules: -- [terraform-null-label](doc:terraform-null-label) -- [terraform-template-user-data-github-authorized-keys](doc:terraform-template-user-data-github-authorized-keys) -- [terraform-aws-route53-cluster-hostname](doc:terraform-aws-route53-cluster-hostname) -- [terraform-aws-route53-cluster-zone](doc:terraform-aws-route53-cluster-zone) (not directly, but `terraform-aws-route53-cluster-hostname` need child `zone_id`) +- [terraform-null-label]({{< relref "terraform-modules/supported/terraform-null-label.md" >}}) +- [terraform-template-user-data-github-authorized-keys]({{< relref "terraform-modules/user-data/terraform-template-user-data-github-authorized-keys.md" >}}) +- [terraform-aws-route53-cluster-hostname]({{< relref "terraform-modules/networking/terraform-aws-route53-cluster-hostname.md" >}}) +- [terraform-aws-route53-cluster-zone]({{< relref "terraform-modules/networking/terraform-aws-route53-cluster-zone.md" >}}) (not directly, but `terraform-aws-route53-cluster-hostname` need child `zone_id`) It is necessary to run `terraform get` to download these modules. diff --git a/content/terraform-modules/terraform-platform-modules/terraform-aws-ec2-instance.md b/content/terraform-modules/platform/terraform-aws-ec2-instance.md similarity index 100% rename from content/terraform-modules/terraform-platform-modules/terraform-aws-ec2-instance.md rename to content/terraform-modules/platform/terraform-aws-ec2-instance.md diff --git a/content/terraform-modules/terraform-platform-modules/terraform-aws-ecr.md b/content/terraform-modules/platform/terraform-aws-ecr.md similarity index 100% rename from content/terraform-modules/terraform-platform-modules/terraform-aws-ecr.md rename to content/terraform-modules/platform/terraform-aws-ecr.md diff --git a/content/terraform-modules/terraform-platform-modules/terraform-aws-elastic-beanstalk-application.md b/content/terraform-modules/platform/terraform-aws-elastic-beanstalk-application.md similarity index 100% rename from content/terraform-modules/terraform-platform-modules/terraform-aws-elastic-beanstalk-application.md rename to content/terraform-modules/platform/terraform-aws-elastic-beanstalk-application.md diff --git a/content/terraform-modules/terraform-platform-modules/terraform-aws-elastic-beanstalk-environment.md b/content/terraform-modules/platform/terraform-aws-elastic-beanstalk-environment.md similarity index 100% rename from content/terraform-modules/terraform-platform-modules/terraform-aws-elastic-beanstalk-environment.md rename to content/terraform-modules/platform/terraform-aws-elastic-beanstalk-environment.md diff --git a/content/terraform-modules/terraform-modules-quick-start.md b/content/terraform-modules/quickstart.md similarity index 100% rename from content/terraform-modules/terraform-modules-quick-start.md rename to content/terraform-modules/quickstart.md diff --git a/content/terraform-modules/terraform-security-modules/_index.md b/content/terraform-modules/security/_index.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/_index.md rename to content/terraform-modules/security/_index.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-acm-request-certificate.md b/content/terraform-modules/security/terraform-aws-acm-request-certificate.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-acm-request-certificate.md rename to content/terraform-modules/security/terraform-aws-acm-request-certificate.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-cloudtrail-s3-bucket.md b/content/terraform-modules/security/terraform-aws-cloudtrail-s3-bucket.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-cloudtrail-s3-bucket.md rename to content/terraform-modules/security/terraform-aws-cloudtrail-s3-bucket.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-cloudtrail.md b/content/terraform-modules/security/terraform-aws-cloudtrail.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-cloudtrail.md rename to content/terraform-modules/security/terraform-aws-cloudtrail.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-ec2-bastion-server.md b/content/terraform-modules/security/terraform-aws-ec2-bastion-server.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-ec2-bastion-server.md rename to content/terraform-modules/security/terraform-aws-ec2-bastion-server.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-iam-assumed-roles.md b/content/terraform-modules/security/terraform-aws-iam-assumed-roles.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-iam-assumed-roles.md rename to content/terraform-modules/security/terraform-aws-iam-assumed-roles.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-iam-system-user.md b/content/terraform-modules/security/terraform-aws-iam-system-user.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-iam-system-user.md rename to content/terraform-modules/security/terraform-aws-iam-system-user.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-key-pair.md b/content/terraform-modules/security/terraform-aws-key-pair.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-key-pair.md rename to content/terraform-modules/security/terraform-aws-key-pair.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-organization-access-group.md b/content/terraform-modules/security/terraform-aws-organization-access-group.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-organization-access-group.md rename to content/terraform-modules/security/terraform-aws-organization-access-group.md diff --git a/content/terraform-modules/terraform-security-modules/terraform-aws-organization-access-role.md b/content/terraform-modules/security/terraform-aws-organization-access-role.md similarity index 100% rename from content/terraform-modules/terraform-security-modules/terraform-aws-organization-access-role.md rename to content/terraform-modules/security/terraform-aws-organization-access-role.md diff --git a/content/terraform-modules/supported/_index.md b/content/terraform-modules/supported/_index.md new file mode 100644 index 000000000..254ff7080 --- /dev/null +++ b/content/terraform-modules/supported/_index.md @@ -0,0 +1,26 @@ +--- +title: "Terraform Supported Modules" +excerpt: "" +--- +![Terraform Modules](/assets/034f19f-terraform.png) + +Cloud Posse is the largest provider of high quality, fully composable open source Terraform Modules (APACHE2). + +Our **60+ modules** make it easy to get up and running quickly. We've literally spent _thousands of hours_ building out infrastructure and bundled that know-how into turnkey modules that you can use to get started quickly. + +All of our modules are battle-tested and encompass our best-practices for how to provision infrastructure. We update our modules regularly and also receive contributions from the community. We practice [Semantic Versioning]({{< relref "development/semver.md" >}}) on all of our modules. This lets you use version pining to ensure your infrastructure will remain stable and let you upgrade to new releases only when you're ready. + + +| Module Category | Module Purpose | +|:----------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [**Backups**](/terraform-modules/backups) | Use terraform to perform routine backups. Easily [backup EFS filesystems]({{< relref "terraform-modules/backups/terraform-aws-efs-backup.md" >}}) filesystems or automatically create [AMI snapshots]({{< relref "terraform-modules/backups/terraform-aws-ec2-ami-backup.md" >}}) of running instances. | +| [**Security**](/terraform-modules/security) | Use terraform to provision resources to provide better security and audit trails. | +| [**User Data**](/terraform-modules/user-data) | Use terraform to provision "user data" stubs for EC2 instances which can be passed as "Cloud Init" data. | +| [**CDN**](/terraform-modules/cdn) | Use terraform to provision CloudFront CDNs backed by S3 websites. | +| [**CI/CD**](/terraform-modules/cicd) | Use terraform to provision e2e build-pipelines. | +| [**Databases**](/terraform-modules/databases) | Use terraform to provision databases like [redis]({{< relref "terraform-modules/databases/terraform-aws-elasticache-redis.md" >}}) or [dynamodb]({{< relref "terraform-modules/databases/terraform-aws-dynamodb.md" >}}). | +| [**Kubernetes (Kops)**](/terraform-modules/kops-kubernetes) | Use terraform to provision essential backing services for [Kops]({{< relref "tools/kops.md" >}}) resources and [Helm Charts](/helm-charts) | +| [**Logging**](/terraform-modules/logging) | Use terraform to provision [terraform-aws-cloudtrail]({{< relref "terraform-modules/security/terraform-aws-cloudtrail.md" >}}) and encrypted logging buckets with lifecycle rules. | +| [**Monitoring**](/terraform-modules/monitoring) | Use terraform to provision standard types of monitors. | +| [**Networking**](/terraform-modules/networking) | Use terraform to provision VPCs, subnets, EFS filesystems and more. | +| [**Platform**](/terraform-modules/platform) | Use terraform to provision platform services like Elastic Beanstalk or EC2 instances. | diff --git a/content/terraform-modules/terraform-supported-modules/terraform-aws-tfstate-backend.md b/content/terraform-modules/supported/terraform-aws-tfstate-backend.md similarity index 98% rename from content/terraform-modules/terraform-supported-modules/terraform-aws-tfstate-backend.md rename to content/terraform-modules/supported/terraform-aws-tfstate-backend.md index 5f4e5f4ea..3b4693fa6 100644 --- a/content/terraform-modules/terraform-supported-modules/terraform-aws-tfstate-backend.md +++ b/content/terraform-modules/supported/terraform-aws-tfstate-backend.md @@ -64,7 +64,7 @@ Initialize the backend with `terraform init`. After `terraform apply`, `terraform.tfstate` file will be stored in the bucket, and the DynamoDB table will be used to lock the state to prevent concurrent modifications. -![](/assets/f5a8966-s3-bucket-with-terraform-state.png) +![Terraform Apply Output](/assets/f5a8966-s3-bucket-with-terraform-state.png) # Variables diff --git a/content/terraform-modules/terraform-supported-modules/terraform-null-ansible.md b/content/terraform-modules/supported/terraform-null-ansible.md similarity index 100% rename from content/terraform-modules/terraform-supported-modules/terraform-null-ansible.md rename to content/terraform-modules/supported/terraform-null-ansible.md diff --git a/content/terraform-modules/terraform-supported-modules/terraform-null-label.md b/content/terraform-modules/supported/terraform-null-label.md similarity index 100% rename from content/terraform-modules/terraform-supported-modules/terraform-null-label.md rename to content/terraform-modules/supported/terraform-null-label.md diff --git a/content/terraform-modules/terraform-supported-modules/_index.md b/content/terraform-modules/terraform-supported-modules/_index.md deleted file mode 100644 index a88a11c98..000000000 --- a/content/terraform-modules/terraform-supported-modules/_index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Terraform Supported Modules" -excerpt: "" ---- -![](/assets/034f19f-terraform.png) - -Cloud Posse is the largest provider of high quality, fully composable open source Terraform Modules (APACHE2). - -Our **60+ modules** make it easy to get up and running quickly. We've literally spent _thousands of hours_ building out infrastructure and bundled that know-how into turnkey modules that you can use to get started quickly. - -All of our modules are battle-tested and encompass our best-practices for how to provision infrastructure. We update our modules regularly and also receive contributions from the community. We practice [Semantic Versioning](doc:semantic-versioning) on all of our modules. This lets you use version pining to ensure your infrastructure will remain stable and let you upgrade to new releases only when you're ready. - - -| Module Category | Module Purpose | -|:---------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [**Backups**](doc:terraform-backup-modules) | Use terraform to perform routine backups. Easily [backup EFS filesystems](doc:terraform-aws-efs-backup) filesystems or automatically create [AMI snapshots](doc:terraform-aws-ec2-ami-backup) of running instances. | -| [**Security**](doc:terraform-security-modules) | Use terraform to provision resources to provide better security and audit trails. | -| [**User Data**](doc:terraform-user-data-modules) | Use terraform to provision "user data" stubs for EC2 instances which can be passed as "Cloud Init" data. | -| [**CDN**](doc:terraform-cdn-modules) | Use terraform to provision CloudFront CDNs backed by S3 websites. | -| [**CI/CD**](doc:terraform-cicd-modules) | Use terraform to provision e2e build-pipelines. | -| [**Databases**](doc:terraform-database-modules) | Use terraform to provision databases like [redis](doc:terraform-aws-elasticache-redis) or [dynamodb](doc:terraform-aws-dynamodb). | -| [**Kubernetes (Kops)**](doc:terraform-kubernetes-kops-modules) | Use terraform to provision essential backing services for [Kops](doc:kops) resources and [Helm Charts](doc:helm-charts) | -| [**Logging**](doc:terraform-logging-modules) | Use terraform to provision [terraform-aws-cloudtrail](doc:terraform-aws-cloudtrail) and encrypted logging buckets with lifecycle rules. | -| [**Monitoring**](doc:terraform-monitoring-modules) | Use terraform to provision standard types of monitors. | -| [**Networking**](doc:terraform-networking-modules) | Use terraform to provision VPCs, subnets, EFS filesystems and more. | -| [**Platform**](doc:terraform-platform-modules) | Use terraform to provision platform services like Elastic Beanstalk or EC2 instances. | diff --git a/content/terraform-modules/terraform-user-data-modules/_index.md b/content/terraform-modules/user-data/_index.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/_index.md rename to content/terraform-modules/user-data/_index.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-assets.md b/content/terraform-modules/user-data/terraform-aws-user-data-assets.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-assets.md rename to content/terraform-modules/user-data/terraform-aws-user-data-assets.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-cloud.md b/content/terraform-modules/user-data/terraform-aws-user-data-cloud.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-cloud.md rename to content/terraform-modules/user-data/terraform-aws-user-data-cloud.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-dns-proxy.md b/content/terraform-modules/user-data/terraform-aws-user-data-dns-proxy.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-dns-proxy.md rename to content/terraform-modules/user-data/terraform-aws-user-data-dns-proxy.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-resolv-conf.md b/content/terraform-modules/user-data/terraform-aws-user-data-resolv-conf.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-resolv-conf.md rename to content/terraform-modules/user-data/terraform-aws-user-data-resolv-conf.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-s3-backend.md b/content/terraform-modules/user-data/terraform-aws-user-data-s3-backend.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-aws-user-data-s3-backend.md rename to content/terraform-modules/user-data/terraform-aws-user-data-s3-backend.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-dba.md b/content/terraform-modules/user-data/terraform-template-user-data-dba.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-dba.md rename to content/terraform-modules/user-data/terraform-template-user-data-dba.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-github-authorized-keys.md b/content/terraform-modules/user-data/terraform-template-user-data-github-authorized-keys.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-github-authorized-keys.md rename to content/terraform-modules/user-data/terraform-template-user-data-github-authorized-keys.md diff --git a/content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-nfs.md b/content/terraform-modules/user-data/terraform-template-user-data-nfs.md similarity index 100% rename from content/terraform-modules/terraform-user-data-modules/terraform-template-user-data-nfs.md rename to content/terraform-modules/user-data/terraform-template-user-data-nfs.md diff --git a/content/terraform/terraform-best-practices.md b/content/terraform/best-practices.md similarity index 98% rename from content/terraform/terraform-best-practices.md rename to content/terraform/best-practices.md index a650c818a..da75096d7 100644 --- a/content/terraform/terraform-best-practices.md +++ b/content/terraform/best-practices.md @@ -6,7 +6,7 @@ tags: - "Best Practices" - "Terraform" --- -![](/assets/08bcd99-terraform.png) +![Terraform](/assets/08bcd99-terraform.png) # Use Git Workflow @@ -45,7 +45,7 @@ Using `atlantis` it’s possible to introduce the standard CI/CD process to mana Linting helps to ensure a consistent code formatting, improves code quality and catches common errors with syntax. -Run `terraform fmt` before committing all code. Use a `pre-commit` hook to do this automatically. See [Terraform Tips & Tricks](doc:terraform-tips-tricks) +Run `terraform fmt` before committing all code. Use a `pre-commit` hook to do this automatically. See [Terraform Tips & Tricks]({{< relref "terraform/tips-tricks.md" >}}) ## Use strings for all booleans and boolean comparisons @@ -117,7 +117,7 @@ terraform { } ``` -**Pro Tip:** Use [`init-terraform`](https://github.com/cloudposse/geodesic/blob/master/rootfs/usr/local/bin/init-terraform) in [Geodesic](doc:geodesic) +**Pro Tip:** Use [`init-terraform`](https://github.com/cloudposse/geodesic/blob/master/rootfs/usr/local/bin/init-terraform) in [Geodesic](/geodesic) ## Use one bucket per environment or stage diff --git a/content/terraform/terraform-tips-tricks.md b/content/terraform/tips-tricks.md similarity index 89% rename from content/terraform/terraform-tips-tricks.md rename to content/terraform/tips-tricks.md index 7f4f4ec4d..aa2901b15 100644 --- a/content/terraform/terraform-tips-tricks.md +++ b/content/terraform/tips-tricks.md @@ -2,7 +2,7 @@ title: "Terraform Tips & Tricks" excerpt: "" --- -![](/assets/a1f105a-terraform.png) +![Terraform](/assets/a1f105a-terraform.png) # Use Pre Commit Hooks for Linting @@ -29,4 +29,4 @@ Then run `pre-commit install` in a given terraform repo to configure the hooks. After setting this up, every time you commit, the `terraform fmt` command will be run to canonicalize your files and a basic smoke test to validate all configurations without requiring required variables to be set. Any time your commit affects any `*.tf` files, the validator will ensure well-formed terraform code. -![](/assets/dd6447a-Screen_Shot_2018-04-02_at_2.46.35_PM.png) +![Precommit Hook Output](/assets/dd6447a-Screen_Shot_2018-04-02_at_2.46.35_PM.png) diff --git a/content/tools/aws-vault.md b/content/tools/aws-vault.md index 1f41723f9..5c9ffa92f 100644 --- a/content/tools/aws-vault.md +++ b/content/tools/aws-vault.md @@ -59,7 +59,7 @@ source_profile=cloudposse > Do not define the source profile in `~/.aws/credentials`; we're going to use `aws-vault add` for that. -We recommend using the `file` type backend for `aws-vault` because this is compatible with Linux, which is needed for [Geodesic](doc:geodesic) sessions. +We recommend using the `file` type backend for `aws-vault` because this is compatible with Linux, which is needed for [Geodesic](/geodesic) sessions. Add the following to your `~/.bashrc`: diff --git a/content/tools/docker/docker-tips-tricks.md b/content/tools/docker/tips-tricks.md similarity index 100% rename from content/tools/docker/docker-tips-tricks.md rename to content/tools/docker/tips-tricks.md diff --git a/content/tools/helmfile.md b/content/tools/helmfile.md index 4f748c5ed..5b678f3c4 100644 --- a/content/tools/helmfile.md +++ b/content/tools/helmfile.md @@ -1,5 +1,4 @@ --- title: Helmfile excerpt: '' -draft: true --- diff --git a/content/tools/kops.md b/content/tools/kops.md index 5a9ed833f..9ce7f2899 100644 --- a/content/tools/kops.md +++ b/content/tools/kops.md @@ -5,11 +5,11 @@ excerpt: '' # Quick Start -These instructions are based on [Geodesic](doc:geodesic), which is a cluster shell that contains a mashup of tools like `kops`, `terraform`, `kubectl`. +These instructions are based on [Geodesic](/geodesic), which is a cluster shell that contains a mashup of tools like `kops`, `terraform`, `kubectl`. ## Building Cluster -Start a [Geodesic](doc:geodesic) cluster shell. +Start a [Geodesic](/geodesic) cluster shell. ``` assume-role @@ -22,8 +22,8 @@ kops create -f /conf/kops/manifest.yml # Helpful Terraform Modules -- [terraform-aws-kops-route53](doc:terraform-aws-kops-route53) -- [terraform-aws-kops-external-dns](doc:terraform-aws-kops-external-dns) +- [terraform-aws-kops-route53]({{< relref "terraform-modules/kops-kubernetes/terraform-aws-kops-route53.md" >}}) +- [terraform-aws-kops-external-dns]({{< relref "terraform-modules/kops-kubernetes/terraform-aws-kops-external-dns.md" >}}) ## init.sh diff --git a/content/local-development-environments/makefile/_index.md b/content/tools/make/_index.md similarity index 99% rename from content/local-development-environments/makefile/_index.md rename to content/tools/make/_index.md index 6e0f9dba6..65fda5720 100644 --- a/content/local-development-environments/makefile/_index.md +++ b/content/tools/make/_index.md @@ -1,13 +1,18 @@ --- title: "Makefile" excerpt: "" +tags: +- Makefile +- GNUMakefile +- make +- task runner --- # Background The `make` command has been around for decades. Predominantly, it was used to build complex projects in C & C++, but it's seen a resurgence in the ops world for automating routine tasks and orchestration of infrastructure-as-code. In the 12-factor pattern, these are your “admin tasks”. - ![](/assets/4132caf-image_3.png) + # Understanding Makefiles Because `make` is a very simple language, there's not very much you need to learn to get started. Some things, however, might seem unintuitive when approaching it from the perspective of other languages. Namely, `make` is really a template engine that renders “stubs” and then executes those stubs in a shell. Environment variables can be considered as the arguments to those targets. diff --git a/content/local-development-environments/makefile/makefile-best-practices.md b/content/tools/make/best-practices.md similarity index 100% rename from content/local-development-environments/makefile/makefile-best-practices.md rename to content/tools/make/best-practices.md diff --git a/content/local-development-environments/makefile/makefile-examples.md b/content/tools/make/makefile-examples.md similarity index 100% rename from content/local-development-environments/makefile/makefile-examples.md rename to content/tools/make/makefile-examples.md diff --git a/static/assets/40ee68a-cloudposse-64x64.png b/static/assets/40ee68a-cloudposse-64x64.png new file mode 100644 index 000000000..7359b5abd Binary files /dev/null and b/static/assets/40ee68a-cloudposse-64x64.png differ diff --git a/static/css/custom.css b/static/css/custom.css index c7db96338..3e65920d6 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -24,6 +24,10 @@ body > header a { color: rgba(255,255,255,0.8); } +body > header a:hover { + text-decoration: none; +} + body > header:after { display: none; } @@ -34,11 +38,16 @@ body > header nav.shortcuts li a { } a, section a { - color: #364548; + color: #364548; } a:hover { - color: #0a0d0e; + color: #0a0d0e; + text-decoration: underline; +} + +strong { + font-weight: 600; } @@ -437,6 +446,7 @@ div.landing-description { } .breadcrumbs a:hover { + text-decoration: none; background-color: #fff; -webkit-box-shadow: 0 0 0 1px #c9d4d9, 0 2px 2px rgba(0,0,0,0.1); box-shadow: 0 0 0 1px #c9d4d9, 0 2px 2px rgba(0,0,0,0.1);