Output: ==> Linting YAML... ==> Linting shell scripts... ==> Checking Terraform for JSON errors... - Checking ./terraform/policies/iam-read.json... Passed - Checking ./terraform/policies/s3-rw-with-versioning.json... Passed - Checking ./terraform/policies/codestar-connection-use.json... Passed - Checking ./terraform/policies/iam-create-access-key.json... Passed - Checking ./terraform/policies/codebuild.json... Passed - Checking ./terraform/policies/kms-encrypt-decrypt.json... Passed - Checking ./terraform/policies/iam-change-password.json... Passed - Checking ./terraform/policies/administrator-access.json... Passed - Checking ./terraform/policies/assume_roles/aws-backup.json... Passed - Checking ./terraform/policies/assume_roles/autoscaling.json... Passed - Checking ./terraform/policies/assume_roles/events.json... Passed - Checking ./terraform/policies/assume_roles/ecs.json... Passed - Checking ./terraform/policies/assume_roles/codepipeline.json... Passed - Checking ./terraform/policies/iam-mfa.json... Passed - Checking ./terraform/policies/route53-read.json... Passed - Checking ./terraform/policies/s3-full-access.json... Passed - Checking ./terraform/policies/parameter-store-read-decrypt.json... Passed - Checking ./terraform/policies/s3-read.json... Passed - Checking ./terraform/policies/parameter-store-RW-encrypt-decrypt.json... Passed - Checking ./terraform/policies/all-read-with-billing.json... Passed - Checking ./terraform/policies/codebuild-start-build.json... Passed - Checking ./terraform/policies/all-read.json... Passed ==> Linting Terraform... ==> Running Ruby tests... /Users/bob/.rbenv/versions/2.7.1/bin/ruby -I/Users/bob/.bundles/ruby/2.7.0/gems/rspec-core-3.12.2/lib:/Users/bob/.bundles/ruby/2.7.0/gems/rspec-support-3.12.1/lib /Users/bob/.bundles/ruby/2.7.0/gems/rspec-core-3.12.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb tests local configuration use of "terraform apply" passes the hosted zone config to "terraform apply" passes the s3 config to "terraform apply" passes the vpn customer gateway config to "terraform apply" passes the base config to "terraform apply" passes the waf config to "terraform apply" passes the rds config to "terraform apply" passes the elasticache config to "terraform apply" passes the opensearch config to "terraform apply" passes the service config to "terraform apply" passes the loadbalancer config to "terraform apply" passes the cluster 2 config to "terraform apply" passes the cluster 3 config to "terraform apply" passes the cluster 4 config to "terraform apply" tests remote configuration retrieves the remotely held full configuration proceeds with deploying the infrastructure as per the cached full configuration tests local configuration invokes "terraform validate" with the expected cluster options invokes "terraform validate" with the expected source options use of "terraform plan" passes the hosted zone config to "terraform plan" passes the s3 config to "terraform plan" passes the vpn customer gateway config to "terraform plan" passes the base config to "terraform plan" passes the waf config to "terraform plan" passes the rds config to "terraform plan" passes the elasticache config to "terraform plan" passes the opensearch config to "terraform plan" passes the services config to "terraform plan" passes the loadbalancer config to "terraform plan" passes the cluster 2 config to "terraform plan" passes the cluster 3 config to "terraform plan" passes the cluster 4 config to "terraform plan" Dalmatian::Account initialisation gathering user input asks the user for AWS credentials asks the user for the AWS account id to use asks the user for an account alias #call changes to the bootstrapping directory runs terraform init with upgrade option creates the new workspace using the given aws account id and alias runs terraform apply with the user-supplied vars Dalmatian::AuroraDeployment #call changes to aurora infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::Aurora #identifier uses aurora identifier #in_use_by uses aurora in_use_by list #clusters_in_use uses aurora clusters_in_use list #minimum_size uses aurora minimum_size #maximum_size uses aurora maximum_size #engine uses aurora engine #engine_version uses the aurora engine_version #db_name uses the aurora db_name #port uses the aurora port #maintenance_window uses the aurora maintenance_window #backup_window uses the aurora backup_window #backup_retention_period uses the aurora backup_retention_period #force_ssl uses the aurora force_ssl bool #parameter_store_path_db_url_name uses the aurora parameter_store_path_db_url_name #sql_backup_scheduled_task_environment_variables uses the aurora sql_backup_scheduled_task_environment_variables #sync_sql_backup_to_azure will have offsite backups disabled by default #replication_bucket_destination_arn uses the aurora replication_bucket_destination_arn #replication_kms_key_id uses the aurora replication_kms_key_id #to_params provides a hash of attributes for use in deployment Dalmatian::AuroraTest #call changes to the aurora infrastructure directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::CacheHandlerSelector ::new_for(remote_reference) when the remote reference is for a git repo asks for an instance of GitCacheHandler when the remote reference is for an S3 bucket asks for an instance of S3CacheHandler when the remote reference is for a URL asks for an instance of UrlCacheHandler when the type is unknown raises an error CacheHandler when a subclass class does not implement #cache_remote_configuration raises a helpful error Dalmatian::CI CI::PATH is a constant #deploy changes to the ci directory runs terraform init with upgrade option creates the new workspace using the given aws account id and alias runs terraform apply with the user-supplied vars #test runs terraform plan with the user-supplied vars Dalmatian::ClusterDeployment #call changes to the ecs directory asks Terraform to ensure that the workspace is in place when the environment includes a git reference as "track_revision" does NOT attempt to check out that commit when in _plan_ mode invokes Terraform.plan using the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply using the _dalmatian-admin_ when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::Cluster on initialisation makes Hosted zones, S3, Sources, Services, Loadbalancers, WAF and Rds #target_directory is a standard _ecs_ path #id is the primary key of the cluster definition is used #name when the cluster has an explicitly provided _name_ property that property is used when the cluster does not have an explicitly provided _name_ property the primary key of the cluster definition is used #account_id is the aws account key for deployment #sources represents any links to remote sources #environments represents the attributes of each environment's cluster section #fetch when the source is remotely held logs the plan to clone the source into the infrastructure pth deletes any existing source at the infrastructure location clones each source into the infrastructure location changes to the infrastructure directory for each source runs rake terrafile changes back to the APP_ROOT when the source is a local file path does not re-clone the source does not run terrafile when the specified local directory exists logs the fact that the local source is in place when the specificed local directory does not exist logs an error that the local source is missing #deploy deploys source infrastructure for each source and each service in each environment when a cluster should be created deploys cluster infrastructure for each environment when the _plan_ option IS invoked creates Cluster Deployments with plan settings when the _auto_approve_ option IS invoked creates Cluster Deployments with auto_approve settings handling of tests when the _test_ option is NOT invoked does not run cluster tests does not run cluster tests does not run cluster tests does not run source tests does not run waf tests does not run rds tests does not run service tests does not run service tests when the test option IS invoked runs tests when a cluster should NOT be created does not deploy cluster infrastructure when test option is invoked tests sources and services for each environment Dalmatian::ClusterTest #call changes to the ecs directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory when the environment includes a git reference as "track_revision" does NOT attempt to check out that commit Dalmatian::ConfigurationReader when a full configuration is provided in a local file #call has no need to use a cache handler returns the loaded configuration when a reference to a remote configuration is provided and the reference is provided in a local file uses the CacheHandlerSelector to provide the appropriate retrieval mechanism calls on the selected cache handler returns the configuration returned by the cache_handler and the reference is provided using environment variables passes the provided remote reference to the CacheHandlerSelector and references are provided in both environment variables and config file prefers the environment variable references over the config file and no references are provided raises an error and the remote reference is missing its _type_ raises an error #ci when a parameter path prefix is given overwrites the ci:variables config with those retrieved from the param store leaves other ci:variables in place when a parameter path prefix is NOT given does NOT overwrite any ci:variables from the param store Dalmatian::ElasticacheCluster #identifier uses elasticache identifier #in_use_by uses elasticache_cluster in_use_by list #node_type uses elasticache_cluster node_type #node_count uses elasticache_cluster node_count #engine uses elasticache_cluster engine #engine_version uses the elasticache_cluster engine_version #parameters uses the elasticache_cluster parameters list #port uses the elasticache_cluster port #maintenance_window uses the elasticache_cluster maintenance_window #snapshot_window uses the elasticache_cluster snapshot_window #parameter_store_path_elasticache_cluster_url_name uses the elasticache_cluster parameter_store_path_elasticache_cluster_url_name #to_params provides a hash of attributes for use in deployment Dalmatian::ElasticacheClusterTest #call changes to the elasticache-cluster directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::GitCacheHandler #call deletes any old cache uses git clone to save the remote config to a local cache logs the cloning action logs the path to the cached configuration returns the cached full configuration to the caller (configuration reader) reads the cached full configuration from the disk in order to return to caller when no special cache path is given uses the default cache path of ./.dalmatian_cache/remote_config Dalmatian::Helper ::git_clone(source, destination) when source and destination args are not provided raises an error with usage info when given source and destination args passes the request to the git CLI ::git_checkout(revision) checks out the given revision using run! ::get(source, destination) when source and destination args are not provided raises an error with usage info when given source and destination args opens the source url opens a new file at the destination writes the source resource into that file reads the information from the fetched resource ::run! passes given cmd to Kernel.system when the call to Kernel.system returns _false_ raise a helpful error ::run_with_output!(cmd) passes given cmd to Open3.capture3 when the system call returns a zero exit status returns the systems output to STDOUT when the system call returns a non-zero exit status also returns STDOUT ignoring the exit code and STDERR when the system call raises an ENOENT error catches this and raises a helpful Error ::change_to(path) passes the given path to Dir.chdir ::to_bool(str) when given nil returns false when given an empty string returns false when given lower case string _true_ returns true when given mixed case string _True_ returns true when given the object true returns true when given the object false returns false ::tflint runs the tflint cmd ::terrafile runs rake terrafile ::ask delegates to HighLine#ask ::ask_in_confidence delegates to HighLine#ask passes a block to mask the answer Dalmatian::HostedZoneDeployment #call changes to hosted-zone infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::HostedZone #domain uses hosted_zone domain #ns_records uses hosted_zone ns_records #a_records uses hosted_zone a_records #alias_records uses hosted_zone alias_records #cname_records uses hosted_zone cname_records #mx_records uses hosted_zone mx_records #txt_records uses hosted_zone txt_records #srv_records uses hosted_zone srv_records #to_params provides a hash of attributes for use in deployment Dalmatian::HostedZoneTest #call changes to the hosted-zone directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::Infrastructure Infrastructure::PATH is a constant Infrastructure::APP_ROOT is a constant initialisation when configuration is not provided builds one using the defaults #clusters creates one cluster for each cluster description provided key operations on clusters #fetch asks all clusters to #fetch #test asks all clusters to #deploy with _plan_ and _test_ options #deploy when no parameters given asks all clusters to #deploy with _plan_, _test_ and _auto-approve_ disabled when parameters are given asks all clusters to #deploy with the given options when a particular infrastructure is named for deployment asks only the named cluster to #deploy with the given options Dalmatian::Logger ::error(msg) raises an error with a red message ::info(msg) puts the given given message in white ::success(msg) puts the given given message in green ::warn(msg) puts the given given message in yellow Dalmatian::OpensearchCluster #identifier uses opensearch identifier #in_use_by uses opensearch_cluster in_use_by list #version uses opensearch_cluster version #master_enabled uses opensearch_cluster master_enabled bool #master_count uses opensearch_cluster master_count #master_type uses opensearch_cluster master_type #instance_count uses opensearch_cluster instance_count #instance_type uses opensearch_cluster instance_type #warm_enabled uses opensearch_cluster warm_enabled bool #warm_count uses opensearch_cluster warm_count #warm_type uses opensearch_cluster warm_type #parameter_store_path_opensearch_cluster_url_name uses opensearch_cluster parameter_store_path_opensearch_cluster_url_name #volume_size uses opensearch_cluster volume_size #to_params provides a hash of attributes for use in deployment Dalmatian::OpensearchClusterTest #call changes to the opensearch-cluster directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::ParameterStore ::get_parameter(name: "", with_decryption: true) when getting a single parameter from Parameter Store runs aws ssm get-parameter ::get_parameters_by_path(path: "", with_decryption: true) when getting parameters by path from Parameter Store runs aws ssm get-parameter Dalmatian::RdsDeployment #call changes to rds infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::Rds #identifier uses rds identifier #in_use_by uses rds in_use_by list #clusters_in_use uses rds clusters_in_use list #instance_class uses rds instance_class #engine uses rds engine #engine_version uses the rds engine_version #allocated_storage uses the rds allocated_storage #storage_encrypted uses the rds storage_encrypted bool #storage_type uses the rds storage_type gp3 #db_name uses the rds db_name #port uses the rds port #maintenance_window uses the rds maintenance_window #backup_window uses the rds backup_window #backup_retention_period uses the rds backup_retention_period #force_ssl uses the rds force_ssl bool #parameter_store_path_db_url_name uses the rds parameter_store_path_db_url_name #sql_backup_scheduled_task_environment_variables uses the rds sql_backup_scheduled_task_environment_variables #check_sql_backup_scheduled_task_environment_variables uses the rds check_sql_backup_scheduled_task_environment_variables #sync_sql_backup_to_azure will have offsite backups disabled by default #replication_bucket_destination_arn uses the rds replication_bucket_destination_arn #replication_kms_key_id uses the rds replication_kms_key_id #codebuild_access uses the rds codebuild_access #to_params provides a hash of attributes for use in deployment Dalmatian::RdsTest #call changes to the ecs-services directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::RemoteReferenceValues when the reference is for a git repo returns a git shaped configuration if _filename_ is not present supplies the default of _dalmatian.yml_ when the reference is for an S3 bucket returns an S3 shaped configuration if _key_ is not present supplies the default of _dalmatian.yml_ when the reference is for a URL returns a git shaped configuration Dalmatian::S3CacheHandler #call deletes any old cache uses the AWS S3 cmd to save the remote config to a local cache logs the cloning action logs the path to the cached configuration returns the cached full configuration to the caller (configuration reader) reads the cached full configuration from the disk in order to return to caller Dalmatian::S3Deployment #call changes to s3 infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::S3 #name uses s3 name #enable_s3_versioning uses enable_s3_versioning bool #encrypted uses s3 encrypted bool #acl uses s3 acl #policy uses s3 policy #service_cloudfront_read_access uses s3 service_cloudfront_read_access #cloudfront uses s3 cloudfront #to_params provides a hash of attributes for use in deployment Dalmatian::S3Test #call changes to the s3 directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::ServiceDeployment #call changes to ecs-services infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::Service #name uses service name #blue_green uses the service blue_green map #parameter_store_path uses service parameter_store_path #parameter_store_key uses service parameter_store_key #daemon uses the service daemon bool #monitoring uses the service monitoring hash #cloudfront recasts the service config in environment groups includes the appropriate "custom_origins" values in each environment Uses an AWS cloudfront managed cache policy Uses an AWS cloudfront managed origin policy Uses an AWS cloudfront managed response headers policy mirroring of elements into each environment group includes the "create" value includes the "tls_protocol_version" value includes the "origin_keepalive_timeout" value includes the "origin_read_timeout" value includes the "basic_auth" value includes the "basic_auth_users_extra" value includes the "viewer_request_functions" values includes the "offline_page_http_status" value bypass_protection uses the "bypass_protection" configuration custom_behaviors converts list of "path_patterns" to a single "path_pattern" #shared_loadbalancer_name returns shared loadbalancer name if the service is in use by a shared loadbalancer returns empty string if the service is not in use by a shared loadbalancer #s3_policy uses the service s3_policy map #lb_ip_whitelistt uses the service lb_ip_whitelist list #lb_idle_timeout uses the service lb_idle_timeout #global_accelerator uses service global_accelerator value #health_check_path uses the service health_check_path #health_check_grace_period uses the service health_check_grace_period #deregistration_delay uses the service deregistration_delay #serve_from_subdirectory uses the service serve_from_subdirectory #domain_names groups the domain names from the service domain_list into environments #proxy_configuration groups the proxy configurations from the service proxy_configuration list into environments #home_directory uses the service home_directory #lb_ssl_certificate groups the certificate arns from the service lb_ssl_certificate list into environments #lb_ssl_policy sets the default ssl policy for each environment #cloudfront_ssl_certificate groups the certificate arns from the service cloudfront_ssl_certificate list into environments #image_source uses the service image source #launch_on uses the service 'launch_on' specification #launch_on_cluster uses the service 'launch_on_cluster' string #cluster_min_servers uses the service 'cluster_min_servers' string #image_location uses the service image location #track_revision uses the service track_revision string #custom_codestar_connection_arn uses the service custom_codestar_connection_arn #codepipeline_use_github_v1 uses the service codepipeline_use_github_v1 #codepipeline_codebuild_run_in_vpc uses the service codepipeline_codebuild_run_in_vpc #codepipeline_codebuild_use_service_env uses the service codepipeline_codebuild_use_service_env #buildspec uses the service buildspec #container_port uses the service container port #container_command uses the service container command #container_volumes uses the service container volumes #container_extra_hosts uses the service container extra hosts #container_count uses the service container_count #enable_max_one_container_per_instance uses the service enable_max_one_container_per_instance #scheduled_tasks uses the service scheduled tasks #workers uses the service workers #cluster_name delegates to the cluster #cluster_id delegates to the cluster #account_id delegates to the cluster #to_params provides a hash of attributes for use in deployment Dalmatian::ServiceTest #call changes to the ecs-services directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::SharedLoadbalancerDeployment #call changes to shared-loadbalancer infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::SharedLoadbalancer #name uses shared_loadbalancer name #in_use_by uses shared_loadbalancer in_use_by list #clusters_in_use uses shared_loadbalancer clusters_in_use list #subnets_name uses shared_loadbalancer subnets_name value #domain_names uses shared_loadbalancer domain_names list provided by Services #internal uses shared_loadbalancer internal value #ip_whitelist uses shared_loadbalancer ip_whitelist list #idle_timeout uses shared_loadbalancer idle_timeout value #global_accelerator uses shared_loadbalancer global_accelerator value #ssl_policy has the default ssl policy defined #to_params provides a hash of attributes for use in deployment Dalmatian::SharedLoadbalancerTest #call changes to the shared-loadbalancer directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::SourceDeployment #call changes to infrastructure config directory asks Terraform to ensure that the workspace is in place when the environment includes a git reference as "track_revision" checks out that commit passes the "track_revision" reference along to Terraform when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::Source #name uses the cluster name and its own position in the cluster's list of sources #cluster_name delegates to the cluster #cluster_id delegates to the cluster #account_id delegates to the cluster Dalmatian::SourceTest #call changes to the ecs directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory when the environment includes a git reference as "track_revision" checks out that commit passes the "track_revision" reference along to Terraform.validate Dalmatian::Terraform ::init(upgrade: false) when asked to upgrade passes terraform init the upgrade flag when not asked to upgrade does not pass terraform init the upgrade flag ::fmt(args = nil) when passed some additional arguments passes terraform fmt the upgrade flag when passed NO additional arguments invokes terraform fmt with no arguments ::validate(tfvars) passes the given _var-file_ to terraform reformats the given tfvars and passes them to terraform as args ::ensure_presence_of_workspace(workspace_name) logs our intention to create the workspace asks Terraform to create the workspace when the workspace already exists (and an error is rescued) logs our intention to _select_ rather than _create_ the workspace asks Terraform to select the existing workspace ::plan(tfvars) passes the given _var-file_ to terraform reformats the given tfvars and passes them to terraform as args ::apply(tfvars, auto_approve=false) passes the given _var-file_ to terraform reformats the given tfvars and passes them to terraform as args when auto-approve is set to true passes the _auto-approve_ flag to terraform apply ::destroy(tfvars) passes the given _var-file_ to terraform reformats the given tfvars and passes them to terraform as args ::list_workspaces changes to the bootstrapping directory runs the terraform cmd to list workspaces Dalmatian::UrlCacheHandler #call deletes any old cache uses the helper to GET a URI logs the cloning action logs the path to the cached configuration returns the cached full configuration to the caller (configuration reader) reads the cached full configuration from the disk in order to return to caller Dalmatian::VpnCustomerGatewayDeployment #call changes to vpn-customer-gateway infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::VpnCustomerGateway #name uses vpn_customer_gateway name #bgp_asn uses vpn_customer_gateway bgp_asn #ip_address uses vpn_customer_gateway ip_address #to_params provides a hash of attributes for use in deployment Dalmatian::VpnCustomerGatewayTest #call changes to the vpn-customer-gateway directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Dalmatian::WAFDeployment #call changes to waf infrastructure directory asks Terraform to ensure that the workspace is in place when in _plan_ mode invokes Terraform.plan with the _dalmatian-read_ role when NOT in _plan_ mode invokes Terraform.apply with the _dalmatian-admin_ role when in _auto_approve_ mode asks Terraform to use auto_approve mode Dalmatian::WAF #name uses waf name #action uses waf action #ip_deny_list has a list of IP addresses to block #aws_managed_rules uses waf aws_managed_rules list #associations uses waf associations list #to_params provides a hash of attributes for use in deployment Dalmatian::WAFTest #call changes to the ecs-services directory logs our intention to run Terraform init runs Terraform init, with upgrade option ensures presence of workspace logs our intention to run Terraform fmt runs Terraform fmt with check and diff options logs our intention to run Terraform validate runs Terraform validate, with upgrade option changes back to the app root directory Finished in 3.45 seconds (files took 0.80514 seconds to load) 511 examples, 0 failures Coverage report generated for RSpec to /Users/bob/git/dxw/dalmatian/coverage. 4517 / 4533 LOC (99.65%) covered. ==> Linting markdown... Process Group PGID: 79718