37 messages
👽️
D
Dan Miller (Cloud Posse)over 3 years ago
@Dan Miller (Cloud Posse) has joined the channel
rssover 3 years ago(edited)
v1.11.0
what
Add disabled field to component validation steps
Add verbose field to custom command steps
Expose component config in custom commands
why
Add disabled field to component validation steps to be able to to skip the validation step. disabled is set to false by default and the validation step is allowed if disabled attribute is not specified. This is useful when we add component validation in settings.validation at environment/tenant/stage/base component level, but we want to disable...
what
Add disabled field to component validation steps
Add verbose field to custom command steps
Expose component config in custom commands
why
Add disabled field to component validation steps to be able to to skip the validation step. disabled is set to false by default and the validation step is allowed if disabled attribute is not specified. This is useful when we add component validation in settings.validation at environment/tenant/stage/base component level, but we want to disable...
rssover 3 years ago
v1.11.0
what
Add disabled field to component validation steps
Add verbose field to custom command steps
Expose component config in custom commands
why
Add disabled field to component validation steps to be able to to skip the validation step. disabled is set to false by default and the validation step is allowed if disabled attribute is not specified. This is useful when we add component validation in settings.validation at environment/tenant/stage/base component level, but we want to disable...
what
Add disabled field to component validation steps
Add verbose field to custom command steps
Expose component config in custom commands
why
Add disabled field to component validation steps to be able to to skip the validation step. disabled is set to false by default and the validation step is allowed if disabled attribute is not specified. This is useful when we add component validation in settings.validation at environment/tenant/stage/base component level, but we want to disable...
rssover 3 years ago(edited)
v1.11.1
what
Update custom commands
Refactor custom commands code
why
When parsing and executing CLI custom commands, clone the command struct into a local variable because of the automatic closure in the Run function of the Cobra command (the last processed command config affects all the previous ones). Cloning will make a closure over the local variable which is different in each iteration (we cloned just Go slices before, but we need to clone Go maps as well, so we clone the whole struct instead)
what
Update custom commands
Refactor custom commands code
why
When parsing and executing CLI custom commands, clone the command struct into a local variable because of the automatic closure in the Run function of the Cobra command (the last processed command config affects all the previous ones). Cloning will make a closure over the local variable which is different in each iteration (we cloned just Go slices before, but we need to clone Go maps as well, so we clone the whole struct instead)
rssover 3 years ago
v1.11.1
what
Update custom commands
Refactor custom commands code
why
When parsing and executing CLI custom commands, clone the command struct into a local variable because of the automatic closure in the Run function of the Cobra command (the last processed command config affects all the previous ones). Cloning will make a closure over the local variable which is different in each iteration (we cloned just Go slices before, but we need to clone Go maps as well, so we clone the whole struct instead)
what
Update custom commands
Refactor custom commands code
why
When parsing and executing CLI custom commands, clone the command struct into a local variable because of the automatic closure in the Run function of the Cobra command (the last processed command config affects all the previous ones). Cloning will make a closure over the local variable which is different in each iteration (we cloned just Go slices before, but we need to clone Go maps as well, so we clone the whole struct instead)
rssover 3 years ago(edited)
v1.11.2
what
Update parsing command-line arguments
why
After refactoring in atmos v1.10.x, the command-line arguments were parsed incorrectly. For example, in the following command
atmos terraform plan -s --auto-generate-backend-file=true
the argument --auto-generate-backend-file=true was lost and never applied.
what
Update parsing command-line arguments
why
After refactoring in atmos v1.10.x, the command-line arguments were parsed incorrectly. For example, in the following command
atmos terraform plan -s --auto-generate-backend-file=true
the argument --auto-generate-backend-file=true was lost and never applied.
rssover 3 years ago
v1.11.2
what
Update parsing command-line arguments
why
After refactoring in atmos v1.10.x, the command-line arguments were parsed incorrectly. For example, in the following command
atmos terraform plan -s --auto-generate-backend-file=true
the argument --auto-generate-backend-file=true was lost and never applied.
what
Update parsing command-line arguments
why
After refactoring in atmos v1.10.x, the command-line arguments were parsed incorrectly. For example, in the following command
atmos terraform plan -s --auto-generate-backend-file=true
the argument --auto-generate-backend-file=true was lost and never applied.
rssover 3 years ago(edited)
v1.11.3
what
Fix atmos vendor pull command
why
The function os.IsNotExist has probably changed in some latest Go versions
After calling os.Stat, don't check for "path does not exist" errors using os.IsNotExist, instead check for all errors
This fixes the error:
atmos vendor pull -c acm
Pulling sources for the component 'acm' from
'/localhost/infra/components/terraform/acm/github.com/cloudposse/terraform-aws-components.git/modules/acm?ref=1.86.0'
and writing to...
what
Fix atmos vendor pull command
why
The function os.IsNotExist has probably changed in some latest Go versions
After calling os.Stat, don't check for "path does not exist" errors using os.IsNotExist, instead check for all errors
This fixes the error:
atmos vendor pull -c acm
Pulling sources for the component 'acm' from
'/localhost/infra/components/terraform/acm/github.com/cloudposse/terraform-aws-components.git/modules/acm?ref=1.86.0'
and writing to...
rssover 3 years ago
v1.11.3
what
Fix atmos vendor pull command
why
The function os.IsNotExist has probably changed in some latest Go versions
After calling os.Stat, don't check for "path does not exist" errors using os.IsNotExist, instead check for all errors
This fixes the error:
atmos vendor pull -c acm
Pulling sources for the component 'acm' from
'/localhost/infra/components/terraform/acm/github.com/cloudposse/terraform-aws-components.git/modules/acm?ref=1.86.0'
and writing to...
what
Fix atmos vendor pull command
why
The function os.IsNotExist has probably changed in some latest Go versions
After calling os.Stat, don't check for "path does not exist" errors using os.IsNotExist, instead check for all errors
This fixes the error:
atmos vendor pull -c acm
Pulling sources for the component 'acm' from
'/localhost/infra/components/terraform/acm/github.com/cloudposse/terraform-aws-components.git/modules/acm?ref=1.86.0'
and writing to...
rssover 3 years ago(edited)
v1.12.0
what
Update atmos custom commands
Update atmos terraform generate backends command
why
Update atmos custom commands to allow the command's ENV var values to have access to {{ .ComponentConfig.xxx.yyy.zzz }} Go template variables. If a custom command defines component_config section with component and stack, atmos generates the config for the component in the stack and makes it available in {{ .ComponentConfig.xxx.yyy.zzz }} Go template variables, exposing all the component sections. This is...
what
Update atmos custom commands
Update atmos terraform generate backends command
why
Update atmos custom commands to allow the command's ENV var values to have access to {{ .ComponentConfig.xxx.yyy.zzz }} Go template variables. If a custom command defines component_config section with component and stack, atmos generates the config for the component in the stack and makes it available in {{ .ComponentConfig.xxx.yyy.zzz }} Go template variables, exposing all the component sections. This is...
rssover 3 years ago(edited)
v1.12.1
what
Update atmos atlantis generate repo-config command
why
If an atmos component is derived from a base component, terraform workspace is calculated differently:
for a regular atmos component, terraform workspace is the stack name (e.g. tenant1-ue2-prod)
for a derived atmos component, terraform workspace is stack name + component name (e.g. tenant1-ue2-prod-)
For example, for the following vpc-2 atmos component
vpc-2:
metadata:
component: infra/vpc
terraform workspace in the...
what
Update atmos atlantis generate repo-config command
why
If an atmos component is derived from a base component, terraform workspace is calculated differently:
for a regular atmos component, terraform workspace is the stack name (e.g. tenant1-ue2-prod)
for a derived atmos component, terraform workspace is stack name + component name (e.g. tenant1-ue2-prod-)
For example, for the following vpc-2 atmos component
vpc-2:
metadata:
component: infra/vpc
terraform workspace in the...
rssover 3 years ago
v1.12.1
what
Update atmos atlantis generate repo-config command
why
If an atmos component is derived from a base component, terraform workspace is calculated differently:
for a regular atmos component, terraform workspace is the stack name (e.g. tenant1-ue2-prod)
for a derived atmos component, terraform workspace is stack name + component name (e.g. tenant1-ue2-prod-)
For example, for the following vpc-2 atmos component
vpc-2:
metadata:
component: infra/vpc
terraform workspace in the...
what
Update atmos atlantis generate repo-config command
why
If an atmos component is derived from a base component, terraform workspace is calculated differently:
for a regular atmos component, terraform workspace is the stack name (e.g. tenant1-ue2-prod)
for a derived atmos component, terraform workspace is stack name + component name (e.g. tenant1-ue2-prod-)
For example, for the following vpc-2 atmos component
vpc-2:
metadata:
component: infra/vpc
terraform workspace in the...
rssover 3 years ago(edited)
v1.12.2
what
Add --format=backend-config to atmos terraform generate backends command
why
Terraform supports -backend-config argument, which required the backend config files to have just the backend attributes without terraform.backend header
references
https://developer.hashicorp.com/terraform/language/settings/backends/configuration#file
test
atmos terraform generate backends...
what
Add --format=backend-config to atmos terraform generate backends command
why
Terraform supports -backend-config argument, which required the backend config files to have just the backend attributes without terraform.backend header
references
https://developer.hashicorp.com/terraform/language/settings/backends/configuration#file
test
atmos terraform generate backends...
rssover 3 years ago
v1.12.2
what
Add --format=backend-config to atmos terraform generate backends command
why
Terraform supports -backend-config argument, which required the backend config files to have just the backend attributes without terraform.backend header
references
https://developer.hashicorp.com/terraform/language/settings/backends/configuration#file
test
atmos terraform generate backends...
what
Add --format=backend-config to atmos terraform generate backends command
why
Terraform supports -backend-config argument, which required the backend config files to have just the backend attributes without terraform.backend header
references
https://developer.hashicorp.com/terraform/language/settings/backends/configuration#file
test
atmos terraform generate backends...
Erik Osterman (Cloud Posse)over 3 years ago
@Andriy Knysh (Cloud Posse), in office hours today, @Joe Caulfield brought up an edge case that prevents atlantis from detecting any changes. When there's a backend-only change, there's no
• take the deep-merged output from
• Write the checksum as a comment at the top of the
• This way, any time any configuration that affects this component is changed, the checksum will change triggering a changed file.
.tf or .tfvar file that changes, and it's non-trivial to know which yaml files should be added as dependencies for the atlantis project. After some ideation, we came up with a solution to address this situation and any other similar one. The root issue, is if we change anything about the configration as it relates to that component instance, (e.g. changed atmos args in the atmos.yaml), we should be triggering a plan. I think the solution is very easy:• take the deep-merged output from
atmos describe component and take an MD5 checksum of it. • Write the checksum as a comment at the top of the
.tfvar file that is generated.• This way, any time any configuration that affects this component is changed, the checksum will change triggering a changed file.
PePe Amengualover 3 years ago
If anyone is trying to run Atmos with Atlantis hit me up , in todays OfficeHours there were a few questions about it and I have answers for all!! and the cool think Atmos already supports all those cases
Gabe Maentzover 3 years ago(edited)
As the Cloud Posse team is updating their documentation and tutorials for using SweetOps, I thought it might be useful to develop a sandbox/lab environment for folks to learn some of the fundamentals. We internally use the Instruqt e-learning platform which is convenient for building out demos/labs/training environments.
https://play.instruqt.com/riverpointtechnology/invite/9hknxtho0prk
Feel free to check out the invitation above and walk through the labs that mirror the Cloud Posse tutorials. Like most of you I learn by doing so being able to spin up an on demand environment is very helpful (AWS Account, Code Editor & Lab Guides included). There is a cost associated with us hosting these labs, which I am happy to currently cover, but may need to rate limit. Let me know if they are helpful.
As you can see we have a number of labs that I would like to continue to build out including integrations with Spacelift, Atlantis and TFC.
https://play.instruqt.com/riverpointtechnology/invite/9hknxtho0prk
Feel free to check out the invitation above and walk through the labs that mirror the Cloud Posse tutorials. Like most of you I learn by doing so being able to spin up an on demand environment is very helpful (AWS Account, Code Editor & Lab Guides included). There is a cost associated with us hosting these labs, which I am happy to currently cover, but may need to rate limit. Let me know if they are helpful.
As you can see we have a number of labs that I would like to continue to build out including integrations with Spacelift, Atlantis and TFC.
rssover 3 years ago(edited)
v1.13.1
what
Allow Helmfile component without using EKS.
why
Because atmos could be used without using EKS.
what
Allow Helmfile component without using EKS.
why
Because atmos could be used without using EKS.
rssover 3 years ago
v1.13.1
what
Allow Helmfile component without using EKS.
why
Because atmos could be used without using EKS.
what
Allow Helmfile component without using EKS.
why
Because atmos could be used without using EKS.
rssover 3 years ago(edited)
v1.13.2
what
Update docs website and atmos help commands
why
Better looking website
Improve the website color theme
Update/improve CLI/Configuration and CLI/Commands sections (https://atmos.tools/category/commands)
what
Update docs website and atmos help commands
why
Better looking website
Improve the website color theme
Update/improve CLI/Configuration and CLI/Commands sections (https://atmos.tools/category/commands)
rssover 3 years ago
v1.13.2
what
Update docs website and atmos help commands
why
Better looking website
Improve the website color theme
Update/improve CLI/Configuration and CLI/Commands sections (https://atmos.tools/category/commands)
what
Update docs website and atmos help commands
why
Better looking website
Improve the website color theme
Update/improve CLI/Configuration and CLI/Commands sections (https://atmos.tools/category/commands)
rssover 3 years ago(edited)
v1.13.3
what
Documentation website sections:
tutorials
glossary
component library
mixins
imports
why
Consolidate atmos documentation under the new docs site
what
Documentation website sections:
tutorials
glossary
component library
mixins
imports
why
Consolidate atmos documentation under the new docs site
Erik Osterman (Cloud Posse)over 3 years ago
🧵 @here we're actively working on documentation and have pushed a whole new site to https://atmos.tools
Please let us know what you want to see...
Please let us know what you want to see...
rssover 3 years ago(edited)
Documentation Updates
Reorganize CLI commands & subcommands
Improve the introduction
Describe the AWS integrations
Reorganize CLI commands & subcommands
Improve the introduction
Describe the AWS integrations
rssover 3 years ago
rssover 3 years ago(edited)
v1.13.5
what
Standardize CLI commands formatting
Provide a general command usage page that embeds the auto-generated index
Add "Component Inheritance" section to the docs
why
It was not clear what each command should be used for without reading further down the page
Having one separate index page and an index page of subcommand led to information being sprawled across two pages, rather than having a single usage page that shows general command usage and all available subcommands
"Component...
what
Standardize CLI commands formatting
Provide a general command usage page that embeds the auto-generated index
Add "Component Inheritance" section to the docs
why
It was not clear what each command should be used for without reading further down the page
Having one separate index page and an index page of subcommand led to information being sprawled across two pages, rather than having a single usage page that shows general command usage and all available subcommands
"Component...
rssover 3 years ago
v1.13.5
what
Standardize CLI commands formatting
Provide a general command usage page that embeds the auto-generated index
Add "Component Inheritance" section to the docs
why
It was not clear what each command should be used for without reading further down the page
Having one separate index page and an index page of subcommand led to information being sprawled across two pages, rather than having a single usage page that shows general command usage and all available subcommands
"Component...
what
Standardize CLI commands formatting
Provide a general command usage page that embeds the auto-generated index
Add "Component Inheritance" section to the docs
why
It was not clear what each command should be used for without reading further down the page
Having one separate index page and an index page of subcommand led to information being sprawled across two pages, rather than having a single usage page that shows general command usage and all available subcommands
"Component...
rssover 3 years ago(edited)
v1.14.0
what
add shell completion script generation for bash, zsh, fish and powershell
users can now run atmos completion [bash|zsh|fish|powershell] and atmos will output the shell completion script for that shell
why
so users can run atmos [tab][tab] and get command auto-completion
what
add shell completion script generation for bash, zsh, fish and powershell
users can now run atmos completion [bash|zsh|fish|powershell] and atmos will output the shell completion script for that shell
why
so users can run atmos [tab][tab] and get command auto-completion
rssover 3 years ago
v1.14.0
what
add shell completion script generation for bash, zsh, fish and powershell
users can now run atmos completion [bash|zsh|fish|powershell] and atmos will output the shell completion script for that shell
why
so users can run atmos [tab][tab] and get command auto-completion
what
add shell completion script generation for bash, zsh, fish and powershell
users can now run atmos completion [bash|zsh|fish|powershell] and atmos will output the shell completion script for that shell
why
so users can run atmos [tab][tab] and get command auto-completion
Matt Gowieover 3 years ago
Love seeing all the work on Atmos docs. Feel like it has the chance to get some serious legs under it now that there is a strong starting point that is in one place! Well done to ya’ll 👏 Gonna spin through the new docs at some point over the coming week or so and I’ll provide feedback when I do!
rssabout 3 years ago(edited)
v1.15.0
what & why
Update atmos "deps" calculation. In some cases, when more than one different YAML stack config files imported the same import (b/c some components in both derived from the same base component), then all of those stack config files were added to the component's "deps" list (resulting in Spacelift stacks having unrelated dependency labels which would cause unnecessary stack triggering)
Document atmos completion CLI command
Add "Component-Oriented Programming" page to document...
what & why
Update atmos "deps" calculation. In some cases, when more than one different YAML stack config files imported the same import (b/c some components in both derived from the same base component), then all of those stack config files were added to the component's "deps" list (resulting in Spacelift stacks having unrelated dependency labels which would cause unnecessary stack triggering)
Document atmos completion CLI command
Add "Component-Oriented Programming" page to document...
Susieabout 3 years ago
Can atmos workflows be used to deploy multiple terraform configurations? For example, I have broken down my deployment into services: vpc, eks, rds, etc. Currently, this requires cd'ing to each directory and running
plan then apply to bring up each service. Could atmos workflows be leveraged to string these together?