Releases: cloudposse/atmos
v1.65.0
Add `providers` section to Atmos manifests. Update docs @aknysh (#555)
what
- Add
providers
section to Atmos manifests - Auto-generate the
prefix
attribute for Atmos components for Terraform backend gcs for GCP - Update docs (https://atmos.tools/core-concepts/components/terraform-providers/)
why
Terraform utilizes plugins known as providers for communication with cloud providers, SaaS providers, and various APIs.
In order for Terraform to install these providers, the corresponding Terraform configurations need to explicitly state what providers are required. Furthermore, certain providers require additional configuration, such as specifying endpoint URLs or cloud regions, before they can be used.
Provider Configuration in Terraform
When working with Terraform, you specify provider configurations in your Terraform code. This involves declaring which providers your infrastructure requires and providing any necessary configuration parameters. These parameters may include endpoint URLs, cloud regions, access credentials, or any other provider-specific configuration parameters.
To declare a provider in Terraform, use a provider
block within your Terraform configuration files, usually in a providers.tf
file in the component (a.k.a. root module) directory. The provider
block specifies the provider type and all the necessary configuration parameters.
Here's an AWS provider configuration example for a vpc
component. The provider config is defined in the components/terraform/vpc/providers.tf
file:
provider "aws" {
region = "us-east-2"
assume_role = "IAM Role ARN"
}
In this example, the aws
provider block includes the region and IAM role required for Terraform to communicate with the AWS services.
By correctly defining provider configurations in your Terraform code, you ensure that Terraform can seamlessly install, configure, and use the necessary plugins to manage your infrastructure across various cloud and services.
Provider Configuration and Overrides in Atmos Manifests
Atmos allows you to define and override provider configurations using the providers
section in Atmos stack manifests.
The section can be defined globally for the entire organization, OU/tenant, account, region, or per component.
For example, the providers
section at the global scope can look like this:
terraform:
providers:
aws:
region: "us-east-2"
assume_role: "IAM Role ARN"
Similarly, it can be defined (or overridden) at the OU/tenant, account and region scopes in the corresponding _defaults.yaml
stack manifests.
If you want to override a provider configuration for a specific component, use the component.terraform.<component>.providers
section. For example, the following config can be used to override the assume_role
parameter just for the vpc
component:
components:
terraform:
vpc:
providers:
aws:
assume_role: "IAM Role ARN for VPC"
You can include the providers
sections in any Atmos stack manifest at any level of inheritance. Atmos will process, deep-merge and override all the providers
configurations for a component in the following order:
- Global scopes (
terraform.providers
sections for the Org, OUs, accounts and regions) - Base component scope (
component.terraform.<base_component>.providers
section) - Current component scope (
component.terraform.<component>.providers
section)
Refer to Atmos Component Inheritance for more information on all types of component inheritance supported by Atmos.
When you define the providers
sections, Atmos processes the inheritance chain for a component and generates a
file providers_override.tf.json
in the component's folder with the final values for all the defined providers.
For example:
> atmos terraform plan vpc -s plat-ue2-prod --logs-level=Trace
Variables for the component 'vpc' in the stack 'plat-ue2-prod':
environment: ue2
max_subnet_count: 3
name: common
namespace: cp
region: us-east-2
stage: prod
tenant: plat
Writing the variables to file:
components/terraform/vpc/plat-ue2-prod.terraform.tfvars.json
Writing the provider overrides to file:
components/terraform/vpc/providers_override.tf.json
The generated providers_override.tf.json
file would look like this:
{
"provider": {
"aws": {
"assume_role": "IAM Role ARN for VPC"
}
}
}
Terraform then uses the values in the generated providers_override.tf.json
to override the parameters for all the providers in the file.
References
v1.64.3
🚀 Enhancements
include some protection on the azurerm backend when global does not exist @aochsner (#548)
what
When using the azurerm
backend, the logic assumes a global key
is set and prepends that to the component key
. However, when it doesn't exist it causes atmos to crash. This checks if a global key
is set and if not, then don't prepend anything.
why
- don't require a global
key
v1.64.2
Add Atmos CLI command aliases @aknysh (#547)
what
- Add Atmos CLI command aliases
- Update docs https://atmos.tools/cli/configuration/#aliases
why
An alias lets you create a shortcut name for an existing CLI command. Any CLI command can be aliased, including the Atmos native commands like terraform apply
or describe stacks
, as well as Atmos Custom Commands.
CLI command aliases are configured in the aliases
section in the atmos.yaml
file.
For example:
aliases:
# Aliases for Atmos native commands
tf: terraform
tp: terraform plan
up: terraform apply
down: terraform destroy
ds: describe stacks
dc: describe component
# Aliases for Atmos custom commands
ls: list stacks
lc: list components
Execute an alias as you would any Atmos native or custom command:
> atmos ls
plat-ue2-dev
plat-ue2-prod
plat-ue2-staging
plat-uw2-dev
plat-uw2-prod
plat-uw2-staging
The aliases configured in the aliases
section automatically appear in Atmos help, and are shown as
alias for '<command>'
.
For example:
An alias automatically supports all command line arguments and flags that the aliased command accepts.
For example:
atmos up <component> -s <stack>
supports all the parameters from the aliased commandatmos terraform apply <component> -s <stack>
atmos dc <component> -s <stack>
supports all the parameters from the aliased commandatmos describe component <component> -s <stack>
references
- closes #506
Bump the website group in /website with 1 update @dependabot (#545)
Bumps the website group in /website with 1 update: @mdx-js/react.
Updates @mdx-js/react
from 3.0.0 to 3.0.1
Release notes
Sourced from @mdx-js/react
's releases.
3.0.1
Fix
- 49fd094a Fix generated JSX pragmas for new babel by
@remcohaszing
in mdx-js/mdx#2438- d1fface1 Refactor to handle uncaught webpack errors by
@remcohaszing
in mdx-js/mdx#2398Types
- c03e16c6 Add declaration maps
- 85c5dd05 Fix webpack loader types by
@remcohaszing
in mdx-js/mdx#2386Site
- 38f7a5c9 Fix reset of playground render errors by
@ManasMakde
in mdx-js/mdx#2392- 680445df Add note on broken react runtime types by
@ky1ejs
in mdx-js/mdx#2383Full Changelog: mdx-js/mdx@3.0.0...3.0.1
Commits
78aee48
3.0.1c03e16c
Add declaration maps0e6dd7a
Update dev-dependencies038bb68
Refactor some version numbers in docs- See full diff in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major version
will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor version
will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>
will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>
will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>
will remove the ignore condition of the specified dependency and ignore conditions
🚀 Enhancements
v1.64.1
🚀 Enhancements
Fix responsiveness of css @osterman (#543)
what
- Use % instead of vw, since the outter container is capped at a certain px size.
- Set a minimum height of the header in px, otherwise if based on vh it can be impossibly small and gets eaten by the nav bar
- Move the footer outside of main, so it's consistent with the header.
why
- New landing page introduced in #540 wasn't tested on all screensizes
v1.64.0
v1.63.0
Add `integrations.github` to `atmos.yaml` @aknysh (#538)
what
- Add
integrations.github
toatmos.yaml
- Don't search and process stacks when executing
atmos describe config
command
why
integrations.github
is a free-form map section that can be used to define any configuration for GitHub (e.g. GitHub Actions). It's returned by the commandatmos describe config
(https://atmos.tools/cli/commands/describe/config)
v1.62.0
Add `atmos docs` CLI command @aknysh (#537)
what
- Add
atmos docs
CLI command
why
- Use this command to open the Atmos docs
v1.61.0
v1.60.0
what
- Fix an issue with the
skip_if_missing
attribute in Atmos imports with context - Update docs titles and fix typos
- Update
atmos version
CLI command
why
-
The
skip_if_missing
attribute was introduced in Atmos release v1.58.0 and had some issues with checking Atmos imports if the imported manifests don't exist -
Docs had some typos
-
When executing the
atmos version
command, Atmos automatically checks for the latest release from the Atmos releases page on GitHub and compares the current version with the latest release. If the installed Atmos version is out of date, the following information is presented to the user:
atmos version
v1.59.0
what
- Update intro of Atmos (https://atmos.tools/)
- Add page on Terraform limitations (https://atmos.tools/reference/terraform-limitations/)
- Add
backend.tf.json
to.gitignore
for QuickStart - Default to dark mode
- Stylize atmos brand
why
- Make it more compelling
- Add missing context developers might lack without extensive terraform experience