Skip to content

Commit b809467

Browse files
helvaliusactions-botmaximmi
authored
Settings changes fix (#114)
* sort lists to avoid diffs in terraform plan * add resource to prevent unwarranted terraform diff hashicorp/terraform#22563 (comment) * split classic ELB & ALB settings ELB settings are always shown as changes if one is using an ALB. Changed the specific classic ELB & ALB settings to be only used for the specific ELB type. * Executed 'terraform fmt' Co-authored-by: actions-bot <[email protected]> Co-authored-by: Maxim Mironenko <[email protected]>
1 parent a9bda0e commit b809467

File tree

1 file changed

+63
-12
lines changed

1 file changed

+63
-12
lines changed

main.tf

+63-12
Original file line numberDiff line numberDiff line change
@@ -329,27 +329,23 @@ locals {
329329
// https://github.com/terraform-providers/terraform-provider-aws/issues/3963
330330
tags = { for t in keys(module.label.tags) : t => module.label.tags[t] if t != "Name" && t != "Namespace" }
331331

332-
elb_settings = [
332+
classic_elb_settings = [
333333
{
334334
namespace = "aws:elb:loadbalancer"
335335
name = "CrossZone"
336336
value = "true"
337337
},
338-
{
339-
namespace = "aws:ec2:vpc"
340-
name = "ELBSubnets"
341-
value = join(",", var.loadbalancer_subnets)
342-
},
343338
{
344339
namespace = "aws:elb:loadbalancer"
345340
name = "SecurityGroups"
346-
value = join(",", var.loadbalancer_security_groups)
341+
value = join(",", sort(var.loadbalancer_security_groups))
347342
},
348343
{
349344
namespace = "aws:elb:loadbalancer"
350345
name = "ManagedSecurityGroup"
351346
value = var.loadbalancer_managed_security_group
352347
},
348+
353349
{
354350
namespace = "aws:elb:listener"
355351
name = "ListenerProtocol"
@@ -410,10 +406,12 @@ locals {
410406
name = "ConnectionDrainingEnabled"
411407
value = "true"
412408
},
409+
]
410+
alb_settings = [
413411
{
414412
namespace = "aws:elbv2:loadbalancer"
415413
name = "AccessLogsS3Bucket"
416-
value = join("", aws_s3_bucket.elb_logs.*.id)
414+
value = join("", sort(aws_s3_bucket.elb_logs.*.id))
417415
},
418416
{
419417
namespace = "aws:elbv2:loadbalancer"
@@ -423,7 +421,7 @@ locals {
423421
{
424422
namespace = "aws:elbv2:loadbalancer"
425423
name = "SecurityGroups"
426-
value = join(",", var.loadbalancer_security_groups)
424+
value = join(",", sort(var.loadbalancer_security_groups))
427425
},
428426
{
429427
namespace = "aws:elbv2:loadbalancer"
@@ -454,7 +452,16 @@ locals {
454452
namespace = "aws:elbv2:listener:443"
455453
name = "SSLPolicy"
456454
value = var.loadbalancer_type == "application" ? var.loadbalancer_ssl_policy : ""
455+
}
456+
]
457+
458+
generic_elb_settings = [
459+
{
460+
namespace = "aws:ec2:vpc"
461+
name = "ELBSubnets"
462+
value = join(",", sort(var.loadbalancer_subnets))
457463
},
464+
458465
{
459466
namespace = "aws:ec2:vpc"
460467
name = "ELBScheme"
@@ -488,7 +495,7 @@ locals {
488495
]
489496

490497
# If the tier is "WebServer" add the elb_settings, otherwise exclude them
491-
elb_settings_final = var.tier == "WebServer" ? local.elb_settings : []
498+
elb_settings_final = var.tier == "WebServer" ? var.loadbalancer_type == "application" ? concat(local.alb_settings, local.generic_elb_settings) : concat(local.classic_elb_settings, local.generic_elb_settings) : []
492499
}
493500

494501
#
@@ -511,121 +518,141 @@ resource "aws_elastic_beanstalk_environment" "default" {
511518
namespace = setting.value["namespace"]
512519
name = setting.value["name"]
513520
value = setting.value["value"]
521+
resource = ""
514522
}
515523
}
516524

517525
setting {
518526
namespace = "aws:ec2:vpc"
519527
name = "VPCId"
520528
value = var.vpc_id
529+
resource = ""
521530
}
522531

523532
setting {
524533
namespace = "aws:ec2:vpc"
525534
name = "AssociatePublicIpAddress"
526535
value = var.associate_public_ip_address
536+
resource = ""
527537
}
528538

529539
setting {
530540
namespace = "aws:ec2:vpc"
531541
name = "Subnets"
532-
value = join(",", var.application_subnets)
542+
value = join(",", sort(var.application_subnets))
543+
resource = ""
533544
}
534545

535546
setting {
536547
namespace = "aws:autoscaling:launchconfiguration"
537548
name = "SecurityGroups"
538-
value = join(",", compact(concat([aws_security_group.default.id], var.additional_security_groups)))
549+
value = join(",", compact(concat([aws_security_group.default.id], sort(var.additional_security_groups))))
550+
resource = ""
539551
}
540552

541553
setting {
542554
namespace = "aws:autoscaling:launchconfiguration"
543555
name = "IamInstanceProfile"
544556
value = aws_iam_instance_profile.ec2.name
557+
resource = ""
545558
}
546559

547560
setting {
548561
namespace = "aws:autoscaling:asg"
549562
name = "Availability Zones"
550563
value = var.availability_zone_selector
564+
resource = ""
551565
}
552566

553567
setting {
554568
namespace = "aws:elasticbeanstalk:environment"
555569
name = "EnvironmentType"
556570
value = var.environment_type
571+
resource = ""
557572
}
558573

559574
setting {
560575
namespace = "aws:elasticbeanstalk:environment"
561576
name = "ServiceRole"
562577
value = aws_iam_role.service.name
578+
resource = ""
563579
}
564580

565581
setting {
566582
namespace = "aws:elasticbeanstalk:application:environment"
567583
name = "BASE_HOST"
568584
value = var.name
585+
resource = ""
569586
}
570587

571588
setting {
572589
namespace = "aws:elasticbeanstalk:healthreporting:system"
573590
name = "SystemType"
574591
value = var.enhanced_reporting_enabled ? "enhanced" : "basic"
592+
resource = ""
575593
}
576594

577595
setting {
578596
namespace = "aws:elasticbeanstalk:managedactions"
579597
name = "ManagedActionsEnabled"
580598
value = var.managed_actions_enabled ? "true" : "false"
599+
resource = ""
581600
}
582601

583602
setting {
584603
namespace = "aws:autoscaling:asg"
585604
name = "MinSize"
586605
value = var.autoscale_min
606+
resource = ""
587607
}
588608

589609
setting {
590610
namespace = "aws:autoscaling:asg"
591611
name = "MaxSize"
592612
value = var.autoscale_max
613+
resource = ""
593614
}
594615

595616
setting {
596617
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
597618
name = "RollingUpdateEnabled"
598619
value = var.rolling_update_enabled
620+
resource = ""
599621
}
600622

601623
setting {
602624
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
603625
name = "RollingUpdateType"
604626
value = var.rolling_update_type
627+
resource = ""
605628
}
606629

607630
setting {
608631
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
609632
name = "MinInstancesInService"
610633
value = var.updating_min_in_service
634+
resource = ""
611635
}
612636

613637
setting {
614638
namespace = "aws:elasticbeanstalk:command"
615639
name = "DeploymentPolicy"
616640
value = var.rolling_update_type == "Immutable" ? "Immutable" : "Rolling"
641+
resource = ""
617642
}
618643

619644
setting {
620645
namespace = "aws:autoscaling:updatepolicy:rollingupdate"
621646
name = "MaxBatchSize"
622647
value = var.updating_max_batch
648+
resource = ""
623649
}
624650

625651
setting {
626652
namespace = "aws:ec2:instances"
627653
name = "InstanceTypes"
628654
value = var.instance_type
655+
resource = ""
629656
}
630657

631658
setting {
@@ -656,48 +683,56 @@ resource "aws_elastic_beanstalk_environment" "default" {
656683
namespace = "aws:autoscaling:launchconfiguration"
657684
name = "EC2KeyName"
658685
value = var.keypair
686+
resource = ""
659687
}
660688

661689
setting {
662690
namespace = "aws:autoscaling:launchconfiguration"
663691
name = "RootVolumeSize"
664692
value = var.root_volume_size
693+
resource = ""
665694
}
666695

667696
setting {
668697
namespace = "aws:autoscaling:launchconfiguration"
669698
name = "RootVolumeType"
670699
value = var.root_volume_type
700+
resource = ""
671701
}
672702

673703
setting {
674704
namespace = "aws:elasticbeanstalk:command"
675705
name = "BatchSizeType"
676706
value = "Fixed"
707+
resource = ""
677708
}
678709

679710
setting {
680711
namespace = "aws:elasticbeanstalk:command"
681712
name = "BatchSize"
682713
value = "1"
714+
resource = ""
683715
}
684716

685717
setting {
686718
namespace = "aws:elasticbeanstalk:managedactions"
687719
name = "PreferredStartTime"
688720
value = var.preferred_start_time
721+
resource = ""
689722
}
690723

691724
setting {
692725
namespace = "aws:elasticbeanstalk:managedactions:platformupdate"
693726
name = "UpdateLevel"
694727
value = var.update_level
728+
resource = ""
695729
}
696730

697731
setting {
698732
namespace = "aws:elasticbeanstalk:managedactions:platformupdate"
699733
name = "InstanceRefreshEnabled"
700734
value = var.instance_refresh_enabled
735+
resource = ""
701736
}
702737

703738
###=========================== Autoscale trigger ========================== ###
@@ -706,42 +741,49 @@ resource "aws_elastic_beanstalk_environment" "default" {
706741
namespace = "aws:autoscaling:trigger"
707742
name = "MeasureName"
708743
value = var.autoscale_measure_name
744+
resource = ""
709745
}
710746

711747
setting {
712748
namespace = "aws:autoscaling:trigger"
713749
name = "Statistic"
714750
value = var.autoscale_statistic
751+
resource = ""
715752
}
716753

717754
setting {
718755
namespace = "aws:autoscaling:trigger"
719756
name = "Unit"
720757
value = var.autoscale_unit
758+
resource = ""
721759
}
722760

723761
setting {
724762
namespace = "aws:autoscaling:trigger"
725763
name = "LowerThreshold"
726764
value = var.autoscale_lower_bound
765+
resource = ""
727766
}
728767

729768
setting {
730769
namespace = "aws:autoscaling:trigger"
731770
name = "LowerBreachScaleIncrement"
732771
value = var.autoscale_lower_increment
772+
resource = ""
733773
}
734774

735775
setting {
736776
namespace = "aws:autoscaling:trigger"
737777
name = "UpperThreshold"
738778
value = var.autoscale_upper_bound
779+
resource = ""
739780
}
740781

741782
setting {
742783
namespace = "aws:autoscaling:trigger"
743784
name = "UpperBreachScaleIncrement"
744785
value = var.autoscale_upper_increment
786+
resource = ""
745787
}
746788

747789
###=========================== Logging ========================== ###
@@ -750,42 +792,49 @@ resource "aws_elastic_beanstalk_environment" "default" {
750792
namespace = "aws:elasticbeanstalk:hostmanager"
751793
name = "LogPublicationControl"
752794
value = var.enable_log_publication_control ? "true" : "false"
795+
resource = ""
753796
}
754797

755798
setting {
756799
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
757800
name = "StreamLogs"
758801
value = var.enable_stream_logs ? "true" : "false"
802+
resource = ""
759803
}
760804

761805
setting {
762806
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
763807
name = "DeleteOnTerminate"
764808
value = var.logs_delete_on_terminate ? "true" : "false"
809+
resource = ""
765810
}
766811

767812
setting {
768813
namespace = "aws:elasticbeanstalk:cloudwatch:logs"
769814
name = "RetentionInDays"
770815
value = var.logs_retention_in_days
816+
resource = ""
771817
}
772818

773819
setting {
774820
namespace = "aws:elasticbeanstalk:cloudwatch:logs:health"
775821
name = "HealthStreamingEnabled"
776822
value = var.health_streaming_enabled ? "true" : "false"
823+
resource = ""
777824
}
778825

779826
setting {
780827
namespace = "aws:elasticbeanstalk:cloudwatch:logs:health"
781828
name = "DeleteOnTerminate"
782829
value = var.health_streaming_delete_on_terminate ? "true" : "false"
830+
resource = ""
783831
}
784832

785833
setting {
786834
namespace = "aws:elasticbeanstalk:cloudwatch:logs:health"
787835
name = "RetentionInDays"
788836
value = var.health_streaming_retention_in_days
837+
resource = ""
789838
}
790839

791840
// Add additional Elastic Beanstalk settings
@@ -796,6 +845,7 @@ resource "aws_elastic_beanstalk_environment" "default" {
796845
namespace = setting.value.namespace
797846
name = setting.value.name
798847
value = setting.value.value
848+
resource = ""
799849
}
800850
}
801851

@@ -806,6 +856,7 @@ resource "aws_elastic_beanstalk_environment" "default" {
806856
namespace = "aws:elasticbeanstalk:application:environment"
807857
name = setting.key
808858
value = setting.value
859+
resource = ""
809860
}
810861
}
811862
}

0 commit comments

Comments
 (0)