Last active
December 5, 2018 15:30
-
-
Save mvasilenko/ae911577d2e1df05b7220fae51547aad to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
resource "opentelekomcloud_dns_zone_v2" "dnszone" { | |
name = "${var.dnszone}" | |
email = "info@${var.dnszone}" | |
ttl = 6000 | |
} | |
resource "opentelekomcloud_dns_recordset_v2" "test_a" { | |
zone_id = "${opentelekomcloud_dns_zone_v2.dnszone.id}" | |
name = "${var.dnszone}" | |
ttl = 300 | |
type = "A" | |
records = ["${opentelekomcloud_networking_floatingip_v2.floatip_test_addr.address}"] | |
} | |
data "opentelekomcloud_images_image_v2" "sd_image" { | |
name = "${var.image_name}" | |
} | |
resource "opentelekomcloud_compute_instance_v2" "sd_test_instance" { | |
count = "1" | |
name = "${var.dnszone}" | |
image_name = "${var.image_name}" | |
flavor_name = "s1.medium" | |
key_pair = "${opentelekomcloud_compute_keypair_v2.keypair.name}" | |
security_groups = [ | |
"${opentelekomcloud_compute_secgroup_v2.secgrp_web.name}" | |
] | |
availability_zone = "${var.availability_zone}" | |
user_data = "${data.template_cloudinit_config.cloud-init-data.rendered}" | |
network { | |
uuid = "${opentelekomcloud_networking_network_v2.otc_test_network.id}" | |
} | |
} | |
# template provisioning - include docker-compose file | |
data "template_file" "docker-compose-file" { | |
template = "${file("files/${var.docker_compose_file}")}" | |
} | |
# template provisioning - include - cloud-init file | |
data "template_file" "cloud-init-cfg" { | |
template = "${file("files/${var.cloud_init_cfg}")}" | |
# set vars for cloud-init | |
vars { | |
fqdn = "${var.dnszone}" | |
# docker compose file names and content | |
docker_compose_file = "${var.docker_compose_file}" | |
docker_compose_content = "${base64gzip(data.template_file.docker-compose-file.rendered)}" | |
} | |
} | |
# cloudinit provisioning - get rendered data from data sources and put it into cloud-init file | |
data "template_cloudinit_config" "cloud-init-data" { | |
gzip = false | |
base64_encode = false | |
# include cloud-init.cfg rendered from template | |
part { | |
filename = "${var.cloud_init_cfg}" | |
content_type = "text/cloud-config" | |
content = "${data.template_file.cloud-init-cfg.rendered}" | |
} | |
} | |
resource "opentelekomcloud_blockstorage_volume_v2" "sd_test_data_disk" { | |
count = "1" | |
name = "${var.dnsname}-data-disk" | |
size = "${var.disk_size_gb}" | |
lifecycle { ignore_changes = [ "instance" ]} | |
availability_zone = "${var.availability_zone}" | |
} | |
resource "opentelekomcloud_compute_volume_attach_v2" "volume_attach" { | |
count = "1" | |
instance_id = "${opentelekomcloud_compute_instance_v2.sd_test_instance.id}" | |
volume_id = "${opentelekomcloud_blockstorage_volume_v2.sd_test_data_disk.id}" | |
} | |
resource "opentelekomcloud_compute_keypair_v2" "keypair" { | |
count = "1" | |
name = "${var.dnsname}-key" | |
public_key = "${file("${var.ssh_pub_key}")}" | |
} | |
resource "opentelekomcloud_networking_network_v2" "otc_test_network" { | |
count = "1" | |
name = "${var.dnsname}-network" | |
admin_state_up = "true" | |
lifecycle { ignore_changes = [ "instance" ]} | |
} | |
resource "opentelekomcloud_networking_subnet_v2" "otc_test_subnet" { | |
name = "${var.dnsname}-subnet" | |
count = "1" | |
network_id = "${opentelekomcloud_networking_network_v2.otc_test_network.id}" | |
cidr = "${var.subnet_cidr}" | |
ip_version = 4 | |
dns_nameservers = ["8.8.8.8", "8.8.4.4"] | |
lifecycle { ignore_changes = [ "instance" ]} | |
} | |
# get external IP | |
resource "opentelekomcloud_networking_floatingip_v2" "floatip_test_addr" { | |
pool = "admin_external_net" | |
} | |
# attach it to SSH server | |
resource "opentelekomcloud_compute_floatingip_associate_v2" "floatip_test_map" { | |
floating_ip = "${opentelekomcloud_networking_floatingip_v2.floatip_test_addr.address}" | |
instance_id = "${opentelekomcloud_compute_instance_v2.sd_test_instance.id}" | |
} | |
resource "opentelekomcloud_networking_router_v2" "otc_test_router" { | |
count = "1" | |
name = "${var.dnsname}-router" | |
admin_state_up = "true" | |
external_gateway = "0a2228f2-7f8a-45f1-8e09-9039e1d09975" | |
} | |
resource "opentelekomcloud_networking_router_interface_v2" "interface" { | |
count = "${var.instance_count}" | |
router_id = "${opentelekomcloud_networking_router_v2.otc_test_router.id}" | |
subnet_id = "${opentelekomcloud_networking_subnet_v2.otc_test_subnet.id}" | |
} | |
resource "opentelekomcloud_compute_secgroup_v2" "secgrp_web" { | |
count = "${var.instance_count}" | |
name = "${var.dnsname}-secgrp" | |
description = "${var.dnsname} Security Group" | |
rule { | |
from_port = 22 | |
to_port = 22 | |
ip_protocol = "tcp" | |
cidr = "0.0.0.0/0" | |
} | |
rule { | |
from_port = 80 | |
to_port = 80 | |
ip_protocol = "tcp" | |
cidr = "0.0.0.0/0" | |
} | |
rule { | |
from_port = 443 | |
to_port = 443 | |
ip_protocol = "tcp" | |
cidr = "0.0.0.0/0" | |
} | |
rule { | |
from_port = -1 | |
to_port = -1 | |
ip_protocol = "icmp" | |
cidr = "0.0.0.0/0" | |
} | |
lifecycle { ignore_changes = [ "instance" ]} | |
} | |
provider "opentelekomcloud" { | |
user_name = "${var.username}" | |
password = "${var.password}" | |
tenant_name = "${var.tenant_name}" | |
domain_name = "${var.domain_name}" | |
auth_url = "${var.endpoint}" | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment