123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- data "aws_ami" "ubuntu_pro" {
- # Ubuntu Pro 18.04 Product ID: fc15dd7b-2aa0-47e5-bb05-94c75950b5de
- most_recent = true
- owners = [ var.aws_marketplace_ubuntu_owner_id ]
- # sadly, it looks like the image isn't named correctly in govcloud. I've given
- # canonical feedback on this, but for now we'll use the ami id directly.
- #filter {
- # name = "name"
- # values = ["ubuntu-pro/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*", ]
- #}
- filter {
- name = "image-id"
- values = [ "ami-0a4050943619c0460" ]
- }
- filter {
- name = "root-device-type"
- values = ["ebs"]
- }
- filter {
- name = "virtualization-type"
- values = ["hvm"]
- }
- }
- module "vmray-server" {
- source = "terraform-aws-modules/ec2-instance/aws"
- version = "~> 2.0"
- name = "vmray-server"
- instance_count = 1
- disable_api_termination = var.instance_termination_protection
- ami = data.aws_ami.ubuntu_pro.image_id
- instance_type = var.vmray_server_instance_type
- key_name = var.vmray_key_name
- vpc_security_group_ids = [ aws_security_group.vmray_sg.id ]
- subnet_id = data.terraform_remote_state.standard_vpc.outputs.public_subnets[0]
- tags = merge(var.standard_tags, var.tags)
- ebs_optimized = true
- monitoring = false # Do we use this?
- user_data_base64 = data.template_cloudinit_config.cloud-init-vmray-server.rendered
- }
- #
- module "vmray-worker" {
- source = "terraform-aws-modules/ec2-instance/aws"
- version = "~> 2.0"
- name = "vmray-worker"
- instance_count = var.vmray_worker_instance_count
- disable_api_termination = var.instance_termination_protection
- ami = data.aws_ami.ubuntu_pro.image_id
- instance_type = var.vmray_worker_instance_type
- key_name = var.vmray_key_name
- vpc_security_group_ids = [ aws_security_group.vmray_sg.id ]
- subnet_ids = data.terraform_remote_state.standard_vpc.outputs.public_subnets
- tags = merge(var.standard_tags, var.tags)
- ebs_optimized = true
- monitoring = false
- #user_data_base64 = data.template_cloudinit_config.vmray-worker.*.rendered
- }
- data "template_file" "cloud-init-vmray-server" {
- # Should these be in a common directory? I suspect they'd be reusable
- template = file("${path.module}/cloud-init/cloud-init.tpl")
- vars = {
- hostname = "vmray_server"
- fqdn = "vmrayserver.TODO.makemeavariable"
- environment = var.environment
- }
- }
- # Render a multi-part cloud-init config making use of the part
- # above, and other source files
- data "template_cloudinit_config" "cloud-init-vmray-server" {
- gzip = true
- base64_encode = true
- # Main cloud-config configuration file.
- part {
- filename = "init.cfg"
- content_type = "text/cloud-config"
- content = data.template_file.cloud-init-vmray-server.rendered
- }
- # Additional parts as needed
- #part {
- # content_type = "text/x-shellscript"
- # content = "ffbaz"
- #}
- }
|