asg.tf 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /***************************************************
  2. * AUTO SCALING GROUP FOR NUXEO INSTANCE
  3. ****************************************************/
  4. resource "aws_launch_configuration" "main" {
  5. name = "${var.stack_name}-${var.instance_role}"
  6. image_id = "${var.ami}"
  7. instance_type = "${var.ami_type}"
  8. key_name = "${var.keyname}"
  9. security_groups = ["${var.alb_secgroups}"]
  10. enable_monitoring = false
  11. ebs_optimized = false
  12. iam_instance_profile = "${aws_iam_instance_profile.main.id}"
  13. user_data = "${file("userdata.sh")}"
  14. root_block_device {
  15. volume_type = "gp2"
  16. volume_size = 20
  17. delete_on_termination = true
  18. }
  19. lifecycle {
  20. create_before_destroy = true
  21. }
  22. }
  23. resource "aws_autoscaling_group" "main" {
  24. name = "${var.stack_name}-${var.instance_role}"
  25. health_check_grace_period = 60
  26. health_check_type = "EC2"
  27. launch_configuration = "${aws_launch_configuration.main.id}"
  28. max_size = "${var.asg_max}"
  29. min_size = "${var.asg_min}"
  30. desired_capacity = "${var.asg_desired}"
  31. vpc_zone_identifier = ["${var.app_subnets}"]
  32. target_group_arns = ["${aws_alb_target_group.main.arn}"]
  33. tag {
  34. key = "role"
  35. value = "${var.instance_role}"
  36. propagate_at_launch = true
  37. }
  38. }
  39. # Create an IAM role for the Servers.
  40. resource "aws_iam_role" "main" {
  41. name = "${var.stack_name}-${var.instance_role}"
  42. assume_role_policy = <<EOF
  43. {
  44. "Version": "2012-10-17",
  45. "Statement": [
  46. {
  47. "Action": "sts:AssumeRole",
  48. "Principal": {
  49. "Service": "ec2.amazonaws.com"
  50. },
  51. "Effect": "Allow",
  52. "Sid": ""
  53. }
  54. ]
  55. }
  56. EOF
  57. }
  58. resource "aws_iam_instance_profile" "main" {
  59. name = "${var.stack_name}"
  60. roles = ["${var.stack_name}-${var.instance_role}"]
  61. }
  62. resource "aws_iam_role_policy" "main" {
  63. name = "${var.stack_name}-${var.instance_role}"
  64. role = "${aws_iam_role.main.id}"
  65. policy = <<EOF
  66. {
  67. "Version": "2012-10-17",
  68. "Statement": [
  69. {
  70. "Effect": "Allow",
  71. "Action": ["s3:ListBucket"],
  72. "Resource": ["arn:aws:s3:::bucket-name"]
  73. },
  74. {
  75. "Effect": "Allow",
  76. "Action": [
  77. "s3:PutObject",
  78. "s3:GetObject",
  79. "s3:DeleteObject"
  80. ],
  81. "Resource": [
  82. "arn:aws:s3:::nuxeo-${sha1("${var.stack_name}")}/*",
  83. "arn:aws:s3:::nuxeo-backup-${sha1("${var.stack_name}")}/*"
  84. ]
  85. }
  86. ]
  87. }
  88. EOF
  89. }