Releases: cloudamatic/mu
The Musical Six^H^H^H Seven
CentOS 6 no longer supported for Mu Master installations
Maintenance updates of CentOS 6 ceased November 30th, 2020. Update repositories and EPEL have been shut down. As such, this platform is effectively not installable.
CentOS 7 is now the preferred platform for Mu Master installations. Standard official machine images of CentOS 7 should work on all cloud providers.
Chef updates
Mu Masters now run Chef Server 14.0.65-1. This release appears to eliminate Chef's internal use of rabbitmq, which was the culprit in many stability issues. https://github.com/chef/chef-server/blob/master/CHANGELOG.md#14065-2020-10-26
The default Chef Client version is now 16.9.29. https://docs.chef.io/release_notes_client/
Master Master enhancements
New installations will now attempt to provision a separate /opt disk for Mu, Chef, Ruby, Python, and other assorted support packages. The install process now delays installation of alternative cloud provider SDKs until this is available,, to relieve disk pressure on small machine images. This functionality is tested on AWS and GCP-hosted masters.
Apache 2.4 configuration for locally-generated documentation should be significantly more reliable.
NVME disks are now properly handled by mu_tools_disk, which will embed requested device names in disk metadata on creation and dynamically map between those and the real, kernel-generated device paths.
We now package our own Python 3.8.3, used by bundled SDKs for Azure, AWS, and Google. Available under /opt/pythons/Python-3.8.3.
Also shipping Git 2.30.0 in /opt/git/git-2.30.0, so that Bundler won't complain.
Packaged Ruby version is now 2.7.2, available in /opt/rubies/ruby-2.7.2.
The mu-tools cookbook now uses the AWS Ruby SDK v3 (from v2).
mu-configure should do a better job of detecting public IP addresses assigned by the cloud provider.
Google::Function
Regrooms will now update Cloud Functions with altered function code.
The code block now supports the path method, in addition to zip_file or gs_url.
Azure
Use KeyVault to store deploy secrets so that Windows instances can use them to configure WinRM in the future.
Improve detection of non-functional regions returned by the list_locations API call, and excise them from our own internal list.
Transient API errors should be less noisy.
Bugfixes
Google::VPC: Covered all cases of intra-subnet naming for lookupAWS::VPC: properly initialize@region,@credentials, etc; tag EIPs used for NAT gateways so we can properly deallocate them later- Use
URI.opento quiet deprecation warnings AWS::Server: Guard some rare transient API responsesmu-configure: Callgethostbyaddrcorrectly, which we apparently haven't been for a long time- Each major provider seems to have an edge case where invalid beta regions can appear in API call results, while breaking others. There are now filters to catch many of these cases.
AWS SDK v3
AWS SDK now on version 3
In compliance with: https://aws.amazon.com/blogs/developer/deprecation-schedule-for-aws-sdk-for-ruby-v2/
Quality of Life Enhancements
mu_tools_diskChef resource can now map between requested device names and auto-assigned NVME devicesAWS::Jobautomatically inject triggers into sibling Lambda functions when applicable- Enhancements around messaging and locking for deployment metadata
- Refresh base images for CentOS 6/7, RHEL7, and Windows
Many Microservices, Handle It
Adoption coverage
The AWS layer now supports adoption of endpoints (API Gateway), nosqldbs (DynamoDB), search_domains (ElasticSearch), notifiers (SNS).
mu-adopt now supports a --pattern flag which can be used to filter against a resource's resolved name, discarding any that do not match.
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions
<...>
Sep 02 01:34:59 - mu-adopt - Writing to muservices.yaml
Sep 02 01:35:01 - mu-adopt - 7 notifiers
Sep 02 01:35:01 - mu-adopt - 57 functions
Sep 02 01:35:01 - mu-adopt - 4 endpoints
Sep 02 01:35:01 - mu-adopt - 2 search_domains
Sep 02 01:35:01 - mu-adopt - 5 nosqldbs
Sep 02 01:35:01 - mu-adopt - 9 jobs
Sep 02 01:35:01 - mu-adopt - 6 cdns
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions --pattern 'myapp'
<...>
Sep 02 01:37:42 - mu-adopt - 2 notifiers
Sep 02 01:37:42 - mu-adopt - 10 functions
Sep 02 01:37:42 - mu-adopt - 1 endpoints
Sep 02 01:37:42 - mu-adopt - 1 search_domains
Sep 02 01:37:42 - mu-adopt - 4 nosqldbs
Sep 02 01:37:42 - mu-adopt - 6 jobs
Sep 02 01:37:42 - mu-adopt - 2 cdns
New resource types Job and CDN
We've added a type to support AWS CloudWatch Events, called Job in deference to future implementations for other providers, and CDN, for AWS CloudFront.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/jobs.html
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/cdns.html
---
appname: jobtest
jobs:
- name: a-job-for-a-thing
schedule:
minute: '0'
hour: '1'
day_of_month: '1'
month: "*"
day_of_week: "?"
year: "*"
targets:
- type: functions
name: do-thing
functions:
- name: do-thing
<...>
---
appname: cloudfront
cdns:
- name: test
origins:
- name: default
bucket:
name: bucket
certificate:
name: "*.example.com" # a certificate we already have in ACM
dns_records:
- zone:
name: example.com # a domain we already have in Route53
behaviors:
- origin: default
forwarded_values:
headers:
- Origin
- Access-Control-Request-Headers
- Access-Control-Request-Method
- Access-Control-Allow-Origin
buckets:
- name: bucket
<...>
AWS::Function
Added a path option to the code stanza, which can be set to a directory on disk. This will be transparently zipped into a deployment package a la the existing zip_file option.
Commonly-used attributes of sibling resources, such as URLs, IP addresses, and ARNs, are now automatically exposed to Lambda functions as environment variables.
API Gateway integration should now behave correctly when specified either as one of an AWS Lambda Function's triggers, or from the endpoint side under methods => integrate_with.
Updates to code on disk should behave as expected when regrooming AWS Lambda resources.
The new invoke_on_completion stanza can be used to run an AWS Lambda function once its groom phase is complete.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/functions.html
AWS::Endpoint
API Gateways are now taggable.
Method integrations are now more robust and support more functionality, including request parameters, timeouts (timeout_in_millis), . Asynchronous requests have a special async shortcut keyword to enable this behavior, as do AWS_PROXY integrations with the proxy keyword.
The cors keyword, instead of being a boolean, is now a string so you can specify the domain names that should match, e.g. * or foo.example.com.
Logging to CloudWatch now exposed to Basket of Kittens for configuration, via the log_requests keyword and access_logs stanza.
Alias endpoints are now supported with the domain_names stanza, and automatically integrate with Route53 when possible.
endpoints:
- name: api
deploy_to: production
log_requests: true
methods:
- path: "/"
type: POST
cors: "*"
responses:
- code: 200
body:
- is_error: false
content_type: application/json
integrate_with:
name: some-lambda
type: functions
integration_http_method: POST
async: true
backend_http_method: POST
passthrough_behavior: WHEN_NO_MATCH
domain_names:
- dns_record:
zone:
name: example.com
certificate:
name: "*.example.com"
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/endpoints.html
AWS::Bucket
The upload stanza is now available for populating an S3 bucket during the groom phase, and we have exposed S3's CORS (Cross-origin resource sharing) controls.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/buckets.html
---
appname: s3test
buckets:
- name: mybucket
web: true
cors:
- allowed_methods:
- GET
- POST
allowed_origins:
- "*"
upload:
- source: "code/build"
destination: "/"
AWS::NoSQLDB
Added the populate stanza, which allows batch-insertion of records at creation time.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/nosqldbs.html
---
appname: dynamotest
nosqldbs:
- name: mytable
read_capacity: 100
write_capacity: 1
attributes:
- name: business_owner
type: S
primary_sort: true
- name: domain
type: S
primary_partition: true
populate:
- business_owner: foo
staff_division: bar
operational_division: baz
domain: example.gov
- business_owner: bing
staff_division: None
operational_division: bong
domain: example.com
Quality of Life Improvements
AWS::SearchDomainnow exposes access policies via our standard language with thepoliciesstanza, available in addition to the existing rawaccess_policies. See https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/search_domains/policies.htmlAWS::ContainerCluster- Blind cleanups and lookups of EKS images should be significantly faster- New CentOS 6 and CentOS 7 base images for AWS
- Even better Slack and console messaging from
mu-deploy AWS::ServerPool: Modernize lookup of ALB target groups
Bugfixes
AWS::NoSQLDBwill actually apply tags to Dynamo tablesAWS: pagination of large API result sets should be closer to universalMommaCatdaemon startup should be somewhat better guardedAWS::MsgQueueandAWS::Notifier: improved resilience in their.findmethodsAWS::ContainerClustermyriad bitrot issues with ECS fixedAWS::Databasebitrot in tests (t2.smallinstances seem deprecated) fixed by moving tot2.smallGoogle::Roleadoption bugfix for folders with nil bindingsAWS::Role: Be sure we're binding custom inline policies properly on groomAWS::FunctionAdopt tags correctly
Many Microservices, Handle It
Adoption coverage
The AWS layer now supports adoption of endpoints (API Gateway), nosqldbs (DynamoDB), search_domains (ElasticSearch), notifiers (SNS).
mu-adopt now supports a --pattern flag which can be used to filter against a resource's resolved name, discarding any that do not match.
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions
<...>
Sep 02 01:34:59 - mu-adopt - Writing to muservices.yaml
Sep 02 01:35:01 - mu-adopt - 7 notifiers
Sep 02 01:35:01 - mu-adopt - 57 functions
Sep 02 01:35:01 - mu-adopt - 4 endpoints
Sep 02 01:35:01 - mu-adopt - 2 search_domains
Sep 02 01:35:01 - mu-adopt - 5 nosqldbs
Sep 02 01:35:01 - mu-adopt - 9 jobs
Sep 02 01:35:01 - mu-adopt - 6 cdns
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions --pattern 'myapp'
<...>
Sep 02 01:37:42 - mu-adopt - 2 notifiers
Sep 02 01:37:42 - mu-adopt - 10 functions
Sep 02 01:37:42 - mu-adopt - 1 endpoints
Sep 02 01:37:42 - mu-adopt - 1 search_domains
Sep 02 01:37:42 - mu-adopt - 4 nosqldbs
Sep 02 01:37:42 - mu-adopt - 6 jobs
Sep 02 01:37:42 - mu-adopt - 2 cdns
New resource types Job and CDN
We've added a type to support AWS CloudWatch Events, called Job in deference to future implementations for other providers, and CDN, for AWS CloudFront.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/jobs.html
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/cdns.html
---
appname: jobtest
jobs:
- name: a-job-for-a-thing
schedule:
minute: '0'
hour: '1'
day_of_month: '1'
month: "*"
day_of_week: "?"
year: "*"
targets:
- type: functions
name: do-thing
functions:
- name: do-thing
<...>
---
appname: cloudfront
cdns:
- name: test
origins:
- name: default
bucket:
name: bucket
certificate:
name: "*.example.com" # a certificate we already have in ACM
dns_records:
- zone:
name: example.com # a domain we already have in Route53
behaviors:
- origin: default
forwarded_values:
headers:
- Origin
- Access-Control-Request-Headers
- Access-Control-Request-Method
- Access-Control-Allow-Origin
buckets:
- name: bucket
<...>
AWS::Function
Added a path option to the code stanza, which can be set to a directory on disk. This will be transparently zipped into a deployment package a la the existing zip_file option.
Commonly-used attributes of sibling resources, such as URLs, IP addresses, and ARNs, are now automatically exposed to Lambda functions as environment variables.
API Gateway integration should now behave correctly when specified either as one of an AWS Lambda Function's triggers, or from the endpoint side under methods => integrate_with.
Updates to code on disk should behave as expected when regrooming AWS Lambda resources.
The new invoke_on_completion stanza can be used to run an AWS Lambda function once its groom phase is complete.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/functions.html
AWS::Endpoint
API Gateways are now taggable.
Method integrations are now more robust and support more functionality, including request parameters, timeouts (timeout_in_millis), . Asynchronous requests have a special async shortcut keyword to enable this behavior, as do AWS_PROXY integrations with the proxy keyword.
The cors keyword, instead of being a boolean, is now a string so you can specify the domain names that should match, e.g. * or foo.example.com.
Logging to CloudWatch now exposed to Basket of Kittens for configuration, via the log_requests keyword and access_logs stanza.
Alias endpoints are now supported with the domain_names stanza, and automatically integrate with Route53 when possible.
endpoints:
- name: api
deploy_to: production
log_requests: true
methods:
- path: "/"
type: POST
cors: "*"
responses:
- code: 200
body:
- is_error: false
content_type: application/json
integrate_with:
name: some-lambda
type: functions
integration_http_method: POST
async: true
backend_http_method: POST
passthrough_behavior: WHEN_NO_MATCH
domain_names:
- dns_record:
zone:
name: example.com
certificate:
name: "*.example.com"
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/endpoints.html
AWS::Bucket
The upload stanza is now available for populating an S3 bucket during the groom phase, and we have exposed S3's CORS (Cross-origin resource sharing) controls.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/buckets.html
---
appname: s3test
buckets:
- name: mybucket
web: true
cors:
- allowed_methods:
- GET
- POST
allowed_origins:
- "*"
upload:
- source: "code/build"
destination: "/"
AWS::NoSQLDB
Added the populate stanza, which allows batch-insertion of records at creation time.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/nosqldbs.html
---
appname: dynamotest
nosqldbs:
- name: mytable
read_capacity: 100
write_capacity: 1
attributes:
- name: business_owner
type: S
primary_sort: true
- name: domain
type: S
primary_partition: true
populate:
- business_owner: foo
staff_division: bar
operational_division: baz
domain: example.gov
- business_owner: bing
staff_division: None
operational_division: bong
domain: example.com
Quality of Life Improvements
AWS::SearchDomainnow exposes access policies via our standard language with thepoliciesstanza, available in addition to the existing rawaccess_policies. See https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/search_domains/policies.htmlAWS::ContainerCluster- Blind cleanups and lookups of EKS images should be significantly faster- New CentOS 6 and CentOS 7 base images for AWS
- Slightly better Slack and console messaging from
mu-deploy
Bugfixes
AWS::NoSQLDBwill actually apply tags to Dynamo tablesAWS: pagination of large API result sets should be closer to universalMommaCatdaemon startup should be somewhat better guardedAWS::MsgQueueandAWS::Notifier: improved resilience in their.findmethodsAWS::ContainerClustermyriad bitrot issues with ECS fixedAWS::Databasebitrot in tests (t2.smallinstances seem deprecated) fixed by moving tot2.smallGoogle::Roleadoption bugfix for folders with nil bindingsAWS::Role: Be sure we're binding custom inline policies properly on groomAWS::FunctionAdopt tags correctly
Many Microservices, Handle It
Adoption coverage
The AWS layer now supports adoption of endpoints (API Gateway), nosqldbs (DynamoDB), search_domains (ElasticSearch), notifiers (SNS).
mu-adopt now supports a --pattern flag which can be used to filter against a resource's resolved name, discarding any that do not match.
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions
<...>
Sep 02 01:34:59 - mu-adopt - Writing to muservices.yaml
Sep 02 01:35:01 - mu-adopt - 7 notifiers
Sep 02 01:35:01 - mu-adopt - 57 functions
Sep 02 01:35:01 - mu-adopt - 4 endpoints
Sep 02 01:35:01 - mu-adopt - 2 search_domains
Sep 02 01:35:01 - mu-adopt - 5 nosqldbs
Sep 02 01:35:01 - mu-adopt - 9 jobs
Sep 02 01:35:01 - mu-adopt - 6 cdns
$ mu-adopt -t endpoints nosqldbs search_domains notifiers jobs cdns buckets functions --pattern 'myapp'
<...>
Sep 02 01:37:42 - mu-adopt - 2 notifiers
Sep 02 01:37:42 - mu-adopt - 10 functions
Sep 02 01:37:42 - mu-adopt - 1 endpoints
Sep 02 01:37:42 - mu-adopt - 1 search_domains
Sep 02 01:37:42 - mu-adopt - 4 nosqldbs
Sep 02 01:37:42 - mu-adopt - 6 jobs
Sep 02 01:37:42 - mu-adopt - 2 cdns
New resource types Job and CDN
We've added a type to support AWS CloudWatch Events, called Job in deference to future implementations for other providers, and CDN, for AWS CloudFront.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/jobs.html
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/cdns.html
---
appname: jobtest
jobs:
- name: a-job-for-a-thing
schedule:
minute: '0'
hour: '1'
day_of_month: '1'
month: "*"
day_of_week: "?"
year: "*"
targets:
- type: functions
name: do-thing
functions:
- name: do-thing
<...>
---
appname: cloudfront
cdns:
- name: test
origins:
- name: default
bucket:
name: bucket
certificate:
name: "*.example.com" # a certificate we already have in ACM
dns_records:
- zone:
name: example.com # a domain we already have in Route53
behaviors:
- origin: default
forwarded_values:
headers:
- Origin
- Access-Control-Request-Headers
- Access-Control-Request-Method
- Access-Control-Allow-Origin
buckets:
- name: bucket
<...>
AWS::Function
Added a path option to the code stanza, which can be set to a directory on disk. This will be transparently zipped into a deployment package a la the existing zip_file option.
Commonly-used attributes of sibling resources, such as URLs, IP addresses, and ARNs, are now automatically exposed to Lambda functions as environment variables.
API Gateway integration should now behave correctly when specified either as one of an AWS Lambda Function's triggers, or from the endpoint side under methods => integrate_with.
Updates to code on disk should behave as expected when regrooming AWS Lambda resources.
The new invoke_on_completion stanza can be used to run an AWS Lambda function once its groom phase is complete.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/functions.html
AWS::Endpoint
API Gateways are now taggable.
Method integrations are now more robust and support more functionality, including request parameters, timeouts (timeout_in_millis), . Asynchronous requests have a special async shortcut keyword to enable this behavior, as do AWS_PROXY integrations with the proxy keyword.
The cors keyword, instead of being a boolean, is now a string so you can specify the domain names that should match, e.g. * or foo.example.com.
Logging to CloudWatch now exposed to Basket of Kittens for configuration, via the log_requests keyword and access_logs stanza.
Alias endpoints are now supported with the domain_names stanza, and automatically integrate with Route53 when possible.
endpoints:
- name: api
deploy_to: production
log_requests: true
methods:
- path: "/"
type: POST
cors: "*"
responses:
- code: 200
body:
- is_error: false
content_type: application/json
integrate_with:
name: some-lambda
type: functions
integration_http_method: POST
async: true
backend_http_method: POST
passthrough_behavior: WHEN_NO_MATCH
domain_names:
- dns_record:
zone:
name: example.com
certificate:
name: "*.example.com"
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/endpoints.html
AWS::Bucket
The upload stanza is now available for populating an S3 bucket during the groom phase, and we have exposed S3's CORS (Cross-origin resource sharing) controls.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/buckets.html
---
appname: s3test
buckets:
- name: mybucket
web: true
cors:
- allowed_methods:
- GET
- POST
allowed_origins:
- "*"
upload:
- source: "code/build"
destination: "/"
AWS::NoSQLDB
Added the populate stanza, which allows batch-insertion of records at creation time.
https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/nosqldbs.html
---
appname: dynamotest
nosqldbs:
- name: mytable
read_capacity: 100
write_capacity: 1
attributes:
- name: business_owner
type: S
primary_sort: true
- name: domain
type: S
primary_partition: true
populate:
- business_owner: foo
staff_division: bar
operational_division: baz
domain: example.gov
- business_owner: bing
staff_division: None
operational_division: bong
domain: example.com
Quality of Life Improvements
AWS::SearchDomainnow exposes access policies via our standard language with thepoliciesstanza, available in addition to the existing rawaccess_policies. See https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/search_domains/policies.htmlAWS::ContainerCluster- Blind cleanups and lookups of EKS images should be significantly faster- New CentOS 6 and CentOS 7 base images for AWS
Bugfixes
AWS::NoSQLDBwill actually apply tags to Dynamo tablesAWS: pagination of large API result sets should be closer to universalMommaCatdaemon startup should be somewhat better guardedAWS::MsgQueueandAWS::Notifier: improved resilience in their.findmethodsAWS::ContainerClustermyriad bitrot issues with ECS fixedAWS::Databasebitrot in tests (t2.smallinstances seem deprecated) fixed by moving tot2.smallGoogle::Roleadoption bugfix for folders with nil bindings
Spring Cleanse
Quality-of-Life Improvements
- Massive housecleaning in
MommaCatandCleanupmodules mu-adoptnow takes a--scrubflag, which will setscrub_mu_ismsin all generated BoKs. There is an equivalentadopt_scrub_mu_ismsformu.yamlwhich sets default behavior.- Two new keywords available for credentials sections of
mu.yamlto control scope of activities:restrict_to_habitatsandignore_habitats. Currently only relevant for multi-project Google Cloud organizations. - We now resolve
~when searching forkubectlexecutables inPATH ContainerClusterresources will check/warn/fail as appropriate at parse time if nokubectlexecutable is available.Serverresources will check/warn/fail as appropriate at parse time if Ansible groomer is set and no Ansible executables are availablemu-node-manage: replacechefrunmode withgroomeronlymode, and let it invoke any groomer instead of just Chef. Oldchefrunflag will invoke this behavior.- Docker image: Now ships with Ansible and kubectl
Bugfixes
mu-tools::windows-clientChef recipe should now run successfully on hosts with non-standard admin usernames- Windows AWS base images should now generate a random password on first boot as expected
Technical Debt February, Part 2
Windows
WinRM bootstraps are once again working. WinRM certificate authentication ceased working on recent official Microsoft base images at some point. Our workaround for now is to use password authentication over SSL.
Ansible now works correctly as a Groomer for Windows nodes, as does password retrieval for Windows hosts on Google Cloud.
Mu-flavored AWS base images are now available for the platforms win2k12, win2k16, and win2k19. Setting windows as the target platform will resolve to win2k16.
Quality-of-Life Improvements
- Massive refactoring in AWS resource implementations for improved maintainability.
MU::Config: Cough up a filename and line number when someone references a bad ERB variable, or on ERB problems generally- Improved test coverage
Known Issues
- Azure Windows VMs hang indefinitely, even using the official release images.
- GCP password retrieval for Windows nodes does not work consistently on 2016 or 2019
- NTLM passwords over unverified SSL, which we are currently forced to use for all WinRM connectivity, is barely secure. We have open backlog issues for figuring out why certificate auth ceased working, and why verification against our internal CA doesn't behave as expected.
Shelter Kitties
Bugfixes
- Avoid potential infinite recursion in MU::Config::Ref when loading existing resources that don't really exist
- Clean out old installs of gcloud utility when updating
- Google: minor adoption fixes
- AWS EFS: Proper VPC reference lookup
Shelter Kitties
Adoption Enhancements
AWS is now supported. Resource types implemented: VPC, FirewallRule, User, Group, Role, Log, Server. Partial progress has been made on other AWS resource types.
The --stubdeploy option now defaults to false.
Minimization of generated Baskets of Kittens is now more complete. BoKs generated by adoption should be significantly more terse.
Deploy-specific log files
Logger and Chef output pertaining to specific deploys is now duplicated into a file named log in each deployment directory.
Fargate with EKS
AWS EKS is now supported with Fargate, in lieu of using managed worker nodes. This is now the default behavior when building when flavor is set to Fargate and no ECS containers are declared.
AWS IAM Improvements
Directly-attached and inline IAM policies now exposed to users and groups, and roles now support conditions in their can_assume blocks.
Quality-of-Life Enhancements
- There is now a
monitoringflag that can be set onserversandserver_poolsto explicitly enable/disable Chef/Nagios based monitoring of a host. - AWS NAT Gateways should now be tagged
mu-cleanupwill behave more gracefully when an underlying resource implementation throws an error- AWS Security Groups can now use our standardized reference schema to reference one another; references in general should be behave more reliably.
Automated testing
Added mu-run-tests utility, which runs through the Basket of Kittens library in modules/tests for improved API test coverage, currently at 25 tests. Invoked without arguments, it will conduct a simple parse test of each; with the --full argument it will deploy and clean up each in turn.
Bugfixes
- Correctly handle cross-region AWS peering
- Google VPCs should no longer generate conflicting subnet names
- Cleanup of nonexistent Chef Vaults specified in deploy metadata should no longer cause failures
Foster Family
Mu Masters in Docker
We now ship a Docker image with a gem-based Mu environment pre-installed. See https://github.com/cloudamatic/mu/wiki/Install#do-it-with-docker
Quality of Life Enhancements
- Basket of Kittens resource type docs now include examples where available, e.g. https://cloudamatic.gitlab.io/mu/MU/Config/BasketofKittens/server_pools.html
- We now attempt to clean up extraneous
~/.ssh/known_hostsentries when removing our nodes - Attempting to deploy against a cloud provider that has no credentials configured should error more clearly
- Defunct host entries should be removed from Chef Vault client lists automatically along with the rest of the node's Chef artifacts
Bugfixes
- Fixed an issue with MommaCat not always cleansing metadata of terminated SerfverPool nodes
- AWS LoadBalancers with target groups will always have invalid characters removed from their declared names
- Standard Linux userdata will attempt to fix images that ship with their initial ssh user accounts expired