Terraform AWS Operations

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Ready-Made AWS Modules

https://registry.terraform.io/modules/terraform-aws-modules

Create an EC2 Instance

Create an EC2 Instance with Terraform

IAM Operations

Create a Role, Permission Policy and Instance Profile

resource "aws_iam_role" "kubernetes-master" {

  name = "infra-${var.environment_name}-kubernetes-master"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      }
      }
  ]
}
EOF
}

resource "aws_iam_role_policy" "kubernetes-master" {

  name = "infra-${var.environment_name}-kubernetes-master"
  role = aws_iam_role.kubernetes-master.id

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["ec2:*"],
      "Resource": ["*"]
    },
    {
      "Effect": "Allow",
      "Action": ["elasticloadbalancing:*"],
      "Resource": ["*"]
    },
    {
      "Effect": "Allow",
      "Action": ["route53:*"],
      "Resource": ["*"]
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::kubernetes-*"
      ]
    }
  ]
}
EOF
}

resource "aws_iam_instance_profile" "kubernetes-master" {

  name = "infra-${var.environment_name}-kubernetes-master-profile"
  role = "${aws_iam_role.kubernetes-master.name}"
}