@@ -329,27 +329,23 @@ locals {
329
329
// https://github.com/terraform-providers/terraform-provider-aws/issues/3963
330
330
tags = { for t in keys (module. label . tags ) : t => module . label . tags [t ] if t != " Name" && t != " Namespace" }
331
331
332
- elb_settings = [
332
+ classic_elb_settings = [
333
333
{
334
334
namespace = " aws:elb:loadbalancer"
335
335
name = " CrossZone"
336
336
value = " true"
337
337
},
338
- {
339
- namespace = " aws:ec2:vpc"
340
- name = " ELBSubnets"
341
- value = join (" ," , var. loadbalancer_subnets )
342
- },
343
338
{
344
339
namespace = " aws:elb:loadbalancer"
345
340
name = " SecurityGroups"
346
- value = join (" ," , var. loadbalancer_security_groups )
341
+ value = join (" ," , sort ( var. loadbalancer_security_groups ) )
347
342
},
348
343
{
349
344
namespace = " aws:elb:loadbalancer"
350
345
name = " ManagedSecurityGroup"
351
346
value = var.loadbalancer_managed_security_group
352
347
},
348
+
353
349
{
354
350
namespace = " aws:elb:listener"
355
351
name = " ListenerProtocol"
@@ -410,10 +406,12 @@ locals {
410
406
name = " ConnectionDrainingEnabled"
411
407
value = " true"
412
408
},
409
+ ]
410
+ alb_settings = [
413
411
{
414
412
namespace = " aws:elbv2:loadbalancer"
415
413
name = " AccessLogsS3Bucket"
416
- value = join (" " , aws_s3_bucket. elb_logs . * . id )
414
+ value = join (" " , sort ( aws_s3_bucket. elb_logs . * . id ) )
417
415
},
418
416
{
419
417
namespace = " aws:elbv2:loadbalancer"
@@ -423,7 +421,7 @@ locals {
423
421
{
424
422
namespace = " aws:elbv2:loadbalancer"
425
423
name = " SecurityGroups"
426
- value = join (" ," , var. loadbalancer_security_groups )
424
+ value = join (" ," , sort ( var. loadbalancer_security_groups ) )
427
425
},
428
426
{
429
427
namespace = " aws:elbv2:loadbalancer"
@@ -454,7 +452,16 @@ locals {
454
452
namespace = " aws:elbv2:listener:443"
455
453
name = " SSLPolicy"
456
454
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 ))
457
463
},
464
+
458
465
{
459
466
namespace = " aws:ec2:vpc"
460
467
name = " ELBScheme"
@@ -488,7 +495,7 @@ locals {
488
495
]
489
496
490
497
# 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 ) : []
492
499
}
493
500
494
501
#
@@ -511,121 +518,141 @@ resource "aws_elastic_beanstalk_environment" "default" {
511
518
namespace = setting. value [" namespace" ]
512
519
name = setting. value [" name" ]
513
520
value = setting. value [" value" ]
521
+ resource = " "
514
522
}
515
523
}
516
524
517
525
setting {
518
526
namespace = " aws:ec2:vpc"
519
527
name = " VPCId"
520
528
value = var. vpc_id
529
+ resource = " "
521
530
}
522
531
523
532
setting {
524
533
namespace = " aws:ec2:vpc"
525
534
name = " AssociatePublicIpAddress"
526
535
value = var. associate_public_ip_address
536
+ resource = " "
527
537
}
528
538
529
539
setting {
530
540
namespace = " aws:ec2:vpc"
531
541
name = " Subnets"
532
- value = join (" ," , var. application_subnets )
542
+ value = join (" ," , sort (var. application_subnets ))
543
+ resource = " "
533
544
}
534
545
535
546
setting {
536
547
namespace = " aws:autoscaling:launchconfiguration"
537
548
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 = " "
539
551
}
540
552
541
553
setting {
542
554
namespace = " aws:autoscaling:launchconfiguration"
543
555
name = " IamInstanceProfile"
544
556
value = aws_iam_instance_profile. ec2 . name
557
+ resource = " "
545
558
}
546
559
547
560
setting {
548
561
namespace = " aws:autoscaling:asg"
549
562
name = " Availability Zones"
550
563
value = var. availability_zone_selector
564
+ resource = " "
551
565
}
552
566
553
567
setting {
554
568
namespace = " aws:elasticbeanstalk:environment"
555
569
name = " EnvironmentType"
556
570
value = var. environment_type
571
+ resource = " "
557
572
}
558
573
559
574
setting {
560
575
namespace = " aws:elasticbeanstalk:environment"
561
576
name = " ServiceRole"
562
577
value = aws_iam_role. service . name
578
+ resource = " "
563
579
}
564
580
565
581
setting {
566
582
namespace = " aws:elasticbeanstalk:application:environment"
567
583
name = " BASE_HOST"
568
584
value = var. name
585
+ resource = " "
569
586
}
570
587
571
588
setting {
572
589
namespace = " aws:elasticbeanstalk:healthreporting:system"
573
590
name = " SystemType"
574
591
value = var. enhanced_reporting_enabled ? " enhanced" : " basic"
592
+ resource = " "
575
593
}
576
594
577
595
setting {
578
596
namespace = " aws:elasticbeanstalk:managedactions"
579
597
name = " ManagedActionsEnabled"
580
598
value = var. managed_actions_enabled ? " true" : " false"
599
+ resource = " "
581
600
}
582
601
583
602
setting {
584
603
namespace = " aws:autoscaling:asg"
585
604
name = " MinSize"
586
605
value = var. autoscale_min
606
+ resource = " "
587
607
}
588
608
589
609
setting {
590
610
namespace = " aws:autoscaling:asg"
591
611
name = " MaxSize"
592
612
value = var. autoscale_max
613
+ resource = " "
593
614
}
594
615
595
616
setting {
596
617
namespace = " aws:autoscaling:updatepolicy:rollingupdate"
597
618
name = " RollingUpdateEnabled"
598
619
value = var. rolling_update_enabled
620
+ resource = " "
599
621
}
600
622
601
623
setting {
602
624
namespace = " aws:autoscaling:updatepolicy:rollingupdate"
603
625
name = " RollingUpdateType"
604
626
value = var. rolling_update_type
627
+ resource = " "
605
628
}
606
629
607
630
setting {
608
631
namespace = " aws:autoscaling:updatepolicy:rollingupdate"
609
632
name = " MinInstancesInService"
610
633
value = var. updating_min_in_service
634
+ resource = " "
611
635
}
612
636
613
637
setting {
614
638
namespace = " aws:elasticbeanstalk:command"
615
639
name = " DeploymentPolicy"
616
640
value = var. rolling_update_type == " Immutable" ? " Immutable" : " Rolling"
641
+ resource = " "
617
642
}
618
643
619
644
setting {
620
645
namespace = " aws:autoscaling:updatepolicy:rollingupdate"
621
646
name = " MaxBatchSize"
622
647
value = var. updating_max_batch
648
+ resource = " "
623
649
}
624
650
625
651
setting {
626
652
namespace = " aws:ec2:instances"
627
653
name = " InstanceTypes"
628
654
value = var. instance_type
655
+ resource = " "
629
656
}
630
657
631
658
setting {
@@ -656,48 +683,56 @@ resource "aws_elastic_beanstalk_environment" "default" {
656
683
namespace = " aws:autoscaling:launchconfiguration"
657
684
name = " EC2KeyName"
658
685
value = var. keypair
686
+ resource = " "
659
687
}
660
688
661
689
setting {
662
690
namespace = " aws:autoscaling:launchconfiguration"
663
691
name = " RootVolumeSize"
664
692
value = var. root_volume_size
693
+ resource = " "
665
694
}
666
695
667
696
setting {
668
697
namespace = " aws:autoscaling:launchconfiguration"
669
698
name = " RootVolumeType"
670
699
value = var. root_volume_type
700
+ resource = " "
671
701
}
672
702
673
703
setting {
674
704
namespace = " aws:elasticbeanstalk:command"
675
705
name = " BatchSizeType"
676
706
value = " Fixed"
707
+ resource = " "
677
708
}
678
709
679
710
setting {
680
711
namespace = " aws:elasticbeanstalk:command"
681
712
name = " BatchSize"
682
713
value = " 1"
714
+ resource = " "
683
715
}
684
716
685
717
setting {
686
718
namespace = " aws:elasticbeanstalk:managedactions"
687
719
name = " PreferredStartTime"
688
720
value = var. preferred_start_time
721
+ resource = " "
689
722
}
690
723
691
724
setting {
692
725
namespace = " aws:elasticbeanstalk:managedactions:platformupdate"
693
726
name = " UpdateLevel"
694
727
value = var. update_level
728
+ resource = " "
695
729
}
696
730
697
731
setting {
698
732
namespace = " aws:elasticbeanstalk:managedactions:platformupdate"
699
733
name = " InstanceRefreshEnabled"
700
734
value = var. instance_refresh_enabled
735
+ resource = " "
701
736
}
702
737
703
738
# ##=========================== Autoscale trigger ========================== ###
@@ -706,42 +741,49 @@ resource "aws_elastic_beanstalk_environment" "default" {
706
741
namespace = " aws:autoscaling:trigger"
707
742
name = " MeasureName"
708
743
value = var. autoscale_measure_name
744
+ resource = " "
709
745
}
710
746
711
747
setting {
712
748
namespace = " aws:autoscaling:trigger"
713
749
name = " Statistic"
714
750
value = var. autoscale_statistic
751
+ resource = " "
715
752
}
716
753
717
754
setting {
718
755
namespace = " aws:autoscaling:trigger"
719
756
name = " Unit"
720
757
value = var. autoscale_unit
758
+ resource = " "
721
759
}
722
760
723
761
setting {
724
762
namespace = " aws:autoscaling:trigger"
725
763
name = " LowerThreshold"
726
764
value = var. autoscale_lower_bound
765
+ resource = " "
727
766
}
728
767
729
768
setting {
730
769
namespace = " aws:autoscaling:trigger"
731
770
name = " LowerBreachScaleIncrement"
732
771
value = var. autoscale_lower_increment
772
+ resource = " "
733
773
}
734
774
735
775
setting {
736
776
namespace = " aws:autoscaling:trigger"
737
777
name = " UpperThreshold"
738
778
value = var. autoscale_upper_bound
779
+ resource = " "
739
780
}
740
781
741
782
setting {
742
783
namespace = " aws:autoscaling:trigger"
743
784
name = " UpperBreachScaleIncrement"
744
785
value = var. autoscale_upper_increment
786
+ resource = " "
745
787
}
746
788
747
789
# ##=========================== Logging ========================== ###
@@ -750,42 +792,49 @@ resource "aws_elastic_beanstalk_environment" "default" {
750
792
namespace = " aws:elasticbeanstalk:hostmanager"
751
793
name = " LogPublicationControl"
752
794
value = var. enable_log_publication_control ? " true" : " false"
795
+ resource = " "
753
796
}
754
797
755
798
setting {
756
799
namespace = " aws:elasticbeanstalk:cloudwatch:logs"
757
800
name = " StreamLogs"
758
801
value = var. enable_stream_logs ? " true" : " false"
802
+ resource = " "
759
803
}
760
804
761
805
setting {
762
806
namespace = " aws:elasticbeanstalk:cloudwatch:logs"
763
807
name = " DeleteOnTerminate"
764
808
value = var. logs_delete_on_terminate ? " true" : " false"
809
+ resource = " "
765
810
}
766
811
767
812
setting {
768
813
namespace = " aws:elasticbeanstalk:cloudwatch:logs"
769
814
name = " RetentionInDays"
770
815
value = var. logs_retention_in_days
816
+ resource = " "
771
817
}
772
818
773
819
setting {
774
820
namespace = " aws:elasticbeanstalk:cloudwatch:logs:health"
775
821
name = " HealthStreamingEnabled"
776
822
value = var. health_streaming_enabled ? " true" : " false"
823
+ resource = " "
777
824
}
778
825
779
826
setting {
780
827
namespace = " aws:elasticbeanstalk:cloudwatch:logs:health"
781
828
name = " DeleteOnTerminate"
782
829
value = var. health_streaming_delete_on_terminate ? " true" : " false"
830
+ resource = " "
783
831
}
784
832
785
833
setting {
786
834
namespace = " aws:elasticbeanstalk:cloudwatch:logs:health"
787
835
name = " RetentionInDays"
788
836
value = var. health_streaming_retention_in_days
837
+ resource = " "
789
838
}
790
839
791
840
// Add additional Elastic Beanstalk settings
@@ -796,6 +845,7 @@ resource "aws_elastic_beanstalk_environment" "default" {
796
845
namespace = setting. value . namespace
797
846
name = setting. value . name
798
847
value = setting. value . value
848
+ resource = " "
799
849
}
800
850
}
801
851
@@ -806,6 +856,7 @@ resource "aws_elastic_beanstalk_environment" "default" {
806
856
namespace = " aws:elasticbeanstalk:application:environment"
807
857
name = setting. key
808
858
value = setting. value
859
+ resource = " "
809
860
}
810
861
}
811
862
}
0 commit comments