From f76f08ad44e54b5bb78974c11465715deb479bf6 Mon Sep 17 00:00:00 2001 From: diodonfrost Date: Tue, 20 Feb 2018 11:57:02 +0100 Subject: [PATCH] refactoring code and add img in documentation --- 01-sample-instance/00-params.tf | 15 ++-- 01-sample-instance/020-network.tf | 22 +++--- 01-sample-instance/030-security_group.tf | 4 +- 01-sample-instance/060-instance_http.tf | 24 +++---- 01-sample-instance/README.md | 9 +-- 01-sample-instance/provider.tf | 7 ++ .../00-params.tf | 32 +++------ .../010-ssh-key.tf | 0 02-instance-with-volume/020-network.tf | 28 ++++++++ .../030-security_group.tf | 6 +- 02-instance-with-volume/060-instance_http.tf | 51 +++++++++++++ 02-instance-with-volume/061-instance_db.tf | 51 +++++++++++++ 02-instance-with-volume/README.md | 21 ++++++ 02-instance-with-volume/provider.tf | 7 ++ .../scripts/first-boot.sh | 0 02-server-with-volume/020-network.tf | 28 -------- 02-server-with-volume/060-instance_http.tf | 51 ------------- 02-server-with-volume/061-instance_db.tf | 51 ------------- 02-server-with-volume/README.md | 20 ------ .../00-params.tf | 24 +++---- .../020-network.tf | 43 +++++------ .../030-security_group.tf | 6 +- .../060-instance_http.tf | 22 +++--- .../061-instance_db.tf | 22 +++--- 03-instance-with-multiple-network/README.md | 20 +++--- 03-instance-with-multiple-network/provider.tf | 7 ++ 04-instance-with-loadbalancer/00-params.tf | 20 ++---- 04-instance-with-loadbalancer/020-network.tf | 41 +++++------ .../030-security_group.tf | 6 +- .../060-instance_http.tf | 14 ++-- .../061-instance_db.tf | 14 ++-- .../070-loadbalancer.tf | 68 +++++++++--------- 04-instance-with-loadbalancer/README.md | 11 +-- 04-instance-with-loadbalancer/provider.tf | 7 ++ img/01-sample-instance.png | Bin 0 -> 25989 bytes img/02-instance-with-volume.png | Bin 0 -> 30584 bytes img/03-multiple-network.png | Bin 0 -> 35177 bytes img/04-load-balancer.png | Bin 0 -> 38759 bytes 38 files changed, 369 insertions(+), 383 deletions(-) create mode 100644 01-sample-instance/provider.tf rename {02-server-with-volume => 02-instance-with-volume}/00-params.tf (51%) rename {02-server-with-volume => 02-instance-with-volume}/010-ssh-key.tf (100%) create mode 100644 02-instance-with-volume/020-network.tf rename {02-server-with-volume => 02-instance-with-volume}/030-security_group.tf (76%) create mode 100644 02-instance-with-volume/060-instance_http.tf create mode 100644 02-instance-with-volume/061-instance_db.tf create mode 100644 02-instance-with-volume/README.md create mode 100644 02-instance-with-volume/provider.tf rename {02-server-with-volume => 02-instance-with-volume}/scripts/first-boot.sh (100%) delete mode 100644 02-server-with-volume/020-network.tf delete mode 100644 02-server-with-volume/060-instance_http.tf delete mode 100644 02-server-with-volume/061-instance_db.tf delete mode 100644 02-server-with-volume/README.md create mode 100644 03-instance-with-multiple-network/provider.tf create mode 100644 04-instance-with-loadbalancer/provider.tf create mode 100644 img/01-sample-instance.png create mode 100644 img/02-instance-with-volume.png create mode 100644 img/03-multiple-network.png create mode 100644 img/04-load-balancer.png diff --git a/01-sample-instance/00-params.tf b/01-sample-instance/00-params.tf index e00d5a7..40ee306 100644 --- a/01-sample-instance/00-params.tf +++ b/01-sample-instance/00-params.tf @@ -1,14 +1,8 @@ -# Configure credential OpenStack Provider -provider "openstack" { - user_name = "my-litle-user" - tenant_name = "my-little-tenant" - password = "secret" - auth_url = "http://your-cloud-prodivder.com" -} +# Params file for variables #### GLANCE variable "image" { - default = "centos-7" + default = "Centos 7" } #### NEUTRON @@ -32,8 +26,7 @@ variable "flavor_http" { variable "network_http" { default = { - network_name = "network-http" - subnet_name = "subnet-http" - cidr = "192.168.1.0/24" + subnet_name = "subnet-http" + cidr = "192.168.1.0/24" } } diff --git a/01-sample-instance/020-network.tf b/01-sample-instance/020-network.tf index 90a8690..5aeab98 100644 --- a/01-sample-instance/020-network.tf +++ b/01-sample-instance/020-network.tf @@ -1,26 +1,28 @@ #### NETWORK CONFIGURATION #### # Router creation -resource "openstack_networking_router_v2" "router_http" { - name = "router-http" +resource "openstack_networking_router_v2" "generic" { + name = "router-generic" external_network_id = "${var.external_gateway}" } # Network creation -resource "openstack_networking_network_v2" "network_http" { - name = "${var.network_http["network_name"]}" +resource "openstack_networking_network_v2" "generic" { + name = "network-generic" } -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_http" { +#### HTTP SUBNET #### + +# Subnet http configuration +resource "openstack_networking_subnet_v2" "http" { name = "${var.network_http["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" cidr = "${var.network_http["cidr"]}" dns_nameservers = "${var.dns_ip}" } # Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_http" { - router_id = "${openstack_networking_router_v2.router_http.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" +resource "openstack_networking_router_interface_v2" "http" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } diff --git a/01-sample-instance/030-security_group.tf b/01-sample-instance/030-security_group.tf index ddf75d0..c106dc9 100644 --- a/01-sample-instance/030-security_group.tf +++ b/01-sample-instance/030-security_group.tf @@ -1,5 +1,5 @@ # Acces group, open input port 80 and ssh port -resource "openstack_compute_secgroup_v2" "security_group_http" { +resource "openstack_compute_secgroup_v2" "http" { name = "http" description = "Open input http port" rule { @@ -10,7 +10,7 @@ resource "openstack_compute_secgroup_v2" "security_group_http" { } } -resource "openstack_compute_secgroup_v2" "security_group_ssh" { +resource "openstack_compute_secgroup_v2" "ssh" { name = "ssh" description = "Open input ssh port" rule { diff --git a/01-sample-instance/060-instance_http.tf b/01-sample-instance/060-instance_http.tf index c8a18fa..13a5ef3 100644 --- a/01-sample-instance/060-instance_http.tf +++ b/01-sample-instance/060-instance_http.tf @@ -2,36 +2,36 @@ # # Create instance # -resource "openstack_compute_instance_v2" "instance_http" { - name = "front01" +resource "openstack_compute_instance_v2" "http" { + name = "http" image_name = "${var.image}" flavor_name = "${var.flavor_http}" key_pair = "${openstack_compute_keypair_v2.user_key.name}" user_data = "${file("scripts/first-boot.sh")}" network { - port = "${openstack_networking_port_v2.port_instance_http.id}" + port = "${openstack_networking_port_v2.http.id}" } } # Create network port -resource "openstack_networking_port_v2" "port_instance_http" { +resource "openstack_networking_port_v2" "http" { name = "port-instance-http" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_http.id}"] + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.http.id}"] fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } } # Create floating ip -resource "openstack_networking_floatingip_v2" "floating_http" { +resource "openstack_networking_floatingip_v2" "http" { pool = "${var.external_network}" } # Attach floating ip to instance -resource "openstack_compute_floatingip_associate_v2" "floating_http" { - floating_ip = "${openstack_networking_floatingip_v2.floating_http.address}" - instance_id = "${openstack_compute_instance_v2.instance_http.id}" +resource "openstack_compute_floatingip_associate_v2" "http" { + floating_ip = "${openstack_networking_floatingip_v2.http.address}" + instance_id = "${openstack_compute_instance_v2.http.id}" } diff --git a/01-sample-instance/README.md b/01-sample-instance/README.md index 3219ab8..971c301 100644 --- a/01-sample-instance/README.md +++ b/01-sample-instance/README.md @@ -1,5 +1,6 @@ -# Utilisation +# How to +![infra sample-server](../img/01-sample-instance.png "infra sample-server") ### Create stack @@ -8,9 +9,9 @@ terraform apply ``` This script will create: - - 1 router - - 1 network - - 2 instances +- 1 router +- 1 network +- 1 instance ### delete stack diff --git a/01-sample-instance/provider.tf b/01-sample-instance/provider.tf new file mode 100644 index 0000000..380f8c6 --- /dev/null +++ b/01-sample-instance/provider.tf @@ -0,0 +1,7 @@ +# Configure credential OpenStack Provider +provider "openstack" { + user_name = "my-litle-user" + tenant_name = "my-little-tenant" + password = "secret" + auth_url = "http://your-cloud-prodivder.com" +} diff --git a/02-server-with-volume/00-params.tf b/02-instance-with-volume/00-params.tf similarity index 51% rename from 02-server-with-volume/00-params.tf rename to 02-instance-with-volume/00-params.tf index 98488d6..5efd9dc 100644 --- a/02-server-with-volume/00-params.tf +++ b/02-instance-with-volume/00-params.tf @@ -1,14 +1,8 @@ -# Configure credential OpenStack Provider -provider "openstack" { - user_name = "my-litle-user" - tenant_name = "my-little-tenant" - password = "secret" - auth_url = "http://your-cloud-prodivder.com" -} +# Params file for variables #### GLANCE variable "image" { - default = "centos-7" + default = "Centos 7" } #### NEUTRON @@ -32,15 +26,13 @@ variable "flavor_http" { variable "network_http" { default = { - network_name = "network-http" - subnet_name = "subnet-http" - cidr = "192.168.1.0/24" + subnet_name = "subnet-http" + cidr = "192.168.1.0/24" } } - -#### ATTACHED VOLUME PARAMS +#### MAIN DISK SIZE FOR HTTP variable "volume_http" { - default = 50 + default = 10 } #### VM DB parameters #### @@ -48,15 +40,7 @@ variable "flavor_db" { default = "t2.medium" } -variable "network_db" { - default = { - network_name = "network-db" - subnet_name = "subnet-db" - cidr = "192.168.2.0/24" - } -} - -#### MAIN DISK SIZE FOR DB +#### ATTACHED VOLUME PARAMS variable "volume_db" { - default = 40 + default = 15 } diff --git a/02-server-with-volume/010-ssh-key.tf b/02-instance-with-volume/010-ssh-key.tf similarity index 100% rename from 02-server-with-volume/010-ssh-key.tf rename to 02-instance-with-volume/010-ssh-key.tf diff --git a/02-instance-with-volume/020-network.tf b/02-instance-with-volume/020-network.tf new file mode 100644 index 0000000..79d1102 --- /dev/null +++ b/02-instance-with-volume/020-network.tf @@ -0,0 +1,28 @@ +#### NETWORK CONFIGURATION #### + +# Router creation +resource "openstack_networking_router_v2" "generic" { + name = "router" + external_network_id = "${var.external_gateway}" +} + +# Network creation +resource "openstack_networking_network_v2" "generic" { + name = "network-generic" +} + +#### HTTP SUBNET #### + +# Subnet http configuration +resource "openstack_networking_subnet_v2" "http" { + name = "${var.network_http["subnet_name"]}" + network_id = "${openstack_networking_network_v2.generic.id}" + cidr = "${var.network_http["cidr"]}" + dns_nameservers = "${var.dns_ip}" +} + +# Router interface configuration +resource "openstack_networking_router_interface_v2" "http" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" +} diff --git a/02-server-with-volume/030-security_group.tf b/02-instance-with-volume/030-security_group.tf similarity index 76% rename from 02-server-with-volume/030-security_group.tf rename to 02-instance-with-volume/030-security_group.tf index e85706e..30700b1 100644 --- a/02-server-with-volume/030-security_group.tf +++ b/02-instance-with-volume/030-security_group.tf @@ -1,5 +1,5 @@ # Acces group, open input port 80 and ssh port -resource "openstack_compute_secgroup_v2" "security_group_http" { +resource "openstack_compute_secgroup_v2" "http" { name = "http" description = "Open input http port" rule { @@ -11,7 +11,7 @@ resource "openstack_compute_secgroup_v2" "security_group_http" { } # Open mariadb port -resource "openstack_compute_secgroup_v2" "security_group_db" { +resource "openstack_compute_secgroup_v2" "db" { name = "db" description = "Open input db port" rule { @@ -23,7 +23,7 @@ resource "openstack_compute_secgroup_v2" "security_group_db" { } # Open Apache2 port -resource "openstack_compute_secgroup_v2" "security_group_ssh" { +resource "openstack_compute_secgroup_v2" "ssh" { name = "ssh" description = "Open input ssh port" rule { diff --git a/02-instance-with-volume/060-instance_http.tf b/02-instance-with-volume/060-instance_http.tf new file mode 100644 index 0000000..c40e732 --- /dev/null +++ b/02-instance-with-volume/060-instance_http.tf @@ -0,0 +1,51 @@ +#### INSTANCE HTTP #### + +# Get the uiid of image +data "openstack_images_image_v2" "centos_current" { + name = "${var.image}" + most_recent = true +} + +# Create instance +# +resource "openstack_compute_instance_v2" "http" { + name = "http-instance" + image_name = "${var.image}" + flavor_name = "${var.flavor_http}" + key_pair = "${openstack_compute_keypair_v2.user_key.name}" + user_data = "${file("scripts/first-boot.sh")}" + network { + port = "${openstack_networking_port_v2.http.id}" + } + # Install system in volume + block_device { + volume_size = "${var.volume_http}" + destination_type = "volume" + delete_on_termination = true + source_type = "image" + uuid = "${data.openstack_images_image_v2.centos_current.id}" + } +} + +# Create network port +resource "openstack_networking_port_v2" "http" { + name = "port-instance-http" + network_id = "${openstack_networking_network_v2.generic.id}" + admin_state_up = true + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.http.id}"] + fixed_ip = { + subnet_id = "${openstack_networking_subnet_v2.http.id}" + } +} + +# Create floating ip +resource "openstack_networking_floatingip_v2" "http" { + pool = "${var.external_network}" +} + +# Attach floating ip to instance +resource "openstack_compute_floatingip_associate_v2" "http" { + floating_ip = "${openstack_networking_floatingip_v2.http.address}" + instance_id = "${openstack_compute_instance_v2.http.id}" +} diff --git a/02-instance-with-volume/061-instance_db.tf b/02-instance-with-volume/061-instance_db.tf new file mode 100644 index 0000000..16c0c23 --- /dev/null +++ b/02-instance-with-volume/061-instance_db.tf @@ -0,0 +1,51 @@ +#### INSTANCE DB #### + +# Create instance +# +resource "openstack_compute_instance_v2" "db" { + name = "front01" + image_name = "${var.image}" + flavor_name = "${var.flavor_db}" + key_pair = "${openstack_compute_keypair_v2.user_key.name}" + user_data = "${file("scripts/first-boot.sh")}" + network { + port = "${openstack_networking_port_v2.db.id}" + } +} + +# Create network port +resource "openstack_networking_port_v2" "db" { + name = "port-instance-db" + network_id = "${openstack_networking_network_v2.generic.id}" + admin_state_up = true + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.db.id}"] + fixed_ip = { + subnet_id = "${openstack_networking_subnet_v2.http.id}" + } +} + +# Create floating ip +resource "openstack_networking_floatingip_v2" "db" { + pool = "${var.external_network}" +} + +# Attach floating ip to instance +resource "openstack_compute_floatingip_associate_v2" "db" { + floating_ip = "${openstack_networking_floatingip_v2.db.address}" + instance_id = "${openstack_compute_instance_v2.db.id}" +} + +#### VOLUME MANAGEMENT #### + +# Create volume +resource "openstack_blockstorage_volume_v2" "db" { + name = "volume-db" + size = "${var.volume_db}" +} + +# Attach volume to instance instance db +resource "openstack_compute_volume_attach_v2" "db" { + instance_id = "${openstack_compute_instance_v2.db.id}" + volume_id = "${openstack_blockstorage_volume_v2.db.id}" +} diff --git a/02-instance-with-volume/README.md b/02-instance-with-volume/README.md new file mode 100644 index 0000000..e901663 --- /dev/null +++ b/02-instance-with-volume/README.md @@ -0,0 +1,21 @@ +# How to + +![infra instance with volume](../img/02-instance-with-volume.png "infra instance with volume") + +### Create stack + +``` +terraform apply +``` + +This script will create: +- 1 router +- 1 network +- 1 instance with attached volume +- 1 instance with extended size main disk + +### delete stack + +``` +terraform destroy +``` diff --git a/02-instance-with-volume/provider.tf b/02-instance-with-volume/provider.tf new file mode 100644 index 0000000..380f8c6 --- /dev/null +++ b/02-instance-with-volume/provider.tf @@ -0,0 +1,7 @@ +# Configure credential OpenStack Provider +provider "openstack" { + user_name = "my-litle-user" + tenant_name = "my-little-tenant" + password = "secret" + auth_url = "http://your-cloud-prodivder.com" +} diff --git a/02-server-with-volume/scripts/first-boot.sh b/02-instance-with-volume/scripts/first-boot.sh similarity index 100% rename from 02-server-with-volume/scripts/first-boot.sh rename to 02-instance-with-volume/scripts/first-boot.sh diff --git a/02-server-with-volume/020-network.tf b/02-server-with-volume/020-network.tf deleted file mode 100644 index 0095b7b..0000000 --- a/02-server-with-volume/020-network.tf +++ /dev/null @@ -1,28 +0,0 @@ -#### NETWORK CONFIGURATION #### - -# Router creation -resource "openstack_networking_router_v2" "router" { - name = "router" - external_network_id = "${var.external_gateway}" -} - -#### HTTP NETWORK #### - -# Network creation -resource "openstack_networking_network_v2" "network_http" { - name = "${var.network_http["network_name"]}" -} - -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_http" { - name = "${var.network_http["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_http.id}" - cidr = "${var.network_http["cidr"]}" - dns_nameservers = "${var.dns_ip}" -} - -# Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_http" { - router_id = "${openstack_networking_router_v2.router.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" -} diff --git a/02-server-with-volume/060-instance_http.tf b/02-server-with-volume/060-instance_http.tf deleted file mode 100644 index 3ad9e05..0000000 --- a/02-server-with-volume/060-instance_http.tf +++ /dev/null @@ -1,51 +0,0 @@ -#### INSTANCE HTTP #### - -# Create instance -# -resource "openstack_compute_instance_v2" "instance_http" { - name = "front01" - image_name = "${var.image}" - flavor_name = "${var.flavor_http}" - key_pair = "${openstack_compute_keypair_v2.user_key.name}" - user_data = "${file("scripts/first-boot.sh")}" - network { - port = "${openstack_networking_port_v2.port_instance_http.id}" - } -} - -# Create network port -resource "openstack_networking_port_v2" "port_instance_http" { - name = "port-instance-http" - network_id = "${openstack_networking_network_v2.network_http.id}" - admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_http.id}"] - fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" - } -} - -# Create floating ip -resource "openstack_networking_floatingip_v2" "floating_http" { - pool = "${var.external_network}" -} - -# Attach floating ip to instance -resource "openstack_compute_floatingip_associate_v2" "floating_http" { - floating_ip = "${openstack_networking_floatingip_v2.floating_http.address}" - instance_id = "${openstack_compute_instance_v2.instance_http.id}" -} - -#### VOLUME MANAGEMENT #### - -# Create volume -resource "openstack_blockstorage_volume_v2" "volume_http" { - name = "volume-http" - size = "${var.volume_http}" -} - -# Attach volume to instance server_db_two -resource "openstack_compute_volume_attach_v2" "volume_attachment" { - instance_id = "${openstack_compute_instance_v2.instance_http.id}" - volume_id = "${openstack_blockstorage_volume_v2.volume_http.id}" -} diff --git a/02-server-with-volume/061-instance_db.tf b/02-server-with-volume/061-instance_db.tf deleted file mode 100644 index cd351a8..0000000 --- a/02-server-with-volume/061-instance_db.tf +++ /dev/null @@ -1,51 +0,0 @@ -#### INSTANCE DB #### - -# Get the uiid of image -data "openstack_images_image_v2" "centos_current" { - name = "${var.image}" - most_recent = true -} - -# Create instance -# -resource "openstack_compute_instance_v2" "instance_db" { - name = "front01" - image_name = "${var.image}" - flavor_name = "${var.flavor_db}" - key_pair = "${openstack_compute_keypair_v2.user_key.name}" - user_data = "${file("scripts/first-boot.sh")}" - network { - port = "${openstack_networking_port_v2.port_instance_db.id}" - } - # Install system in volume - block_device { - volume_size = "${var.volume_db}" - destination_type = "volume" - delete_on_termination = true - source_type = "image" - uuid = "${data.openstack_images_image_v2.centos_current.id}" - } -} - -# Create network port -resource "openstack_networking_port_v2" "port_instance_db" { - name = "port-instance-db" - network_id = "${openstack_networking_network_v2.network_http.id}" - admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_db.id}"] - fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" - } -} - -# Create floating ip -resource "openstack_networking_floatingip_v2" "floating_db" { - pool = "${var.external_network}" -} - -# Attach floating ip to instance -resource "openstack_compute_floatingip_associate_v2" "floating_db" { - floating_ip = "${openstack_networking_floatingip_v2.floating_db.address}" - instance_id = "${openstack_compute_instance_v2.instance_db.id}" -} diff --git a/02-server-with-volume/README.md b/02-server-with-volume/README.md deleted file mode 100644 index da8d819..0000000 --- a/02-server-with-volume/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Utilisation - - -### Create stack - -``` -terraform apply -``` - -This script will create: - - 1 router - - 2 network - - 1 instance with attached volume - - 1 instance with extended size main disk - -### delete stack - -``` -terraform destroy -``` diff --git a/03-instance-with-multiple-network/00-params.tf b/03-instance-with-multiple-network/00-params.tf index 9476652..de0cf3c 100644 --- a/03-instance-with-multiple-network/00-params.tf +++ b/03-instance-with-multiple-network/00-params.tf @@ -1,14 +1,8 @@ -# Configure credential OpenStack Provider -provider "openstack" { - user_name = "my-litle-user" - tenant_name = "my-little-tenant" - password = "secret" - auth_url = "http://your-cloud-prodivder.com" -} +# Params file for variables #### GLANCE variable "image" { - default = "centos-7" + default = "Centos 7" } #### NEUTRON @@ -32,12 +26,12 @@ variable "flavor_http" { variable "network_http" { default = { - network_name = "network-http" - subnet_name = "subnet-http" - cidr = "192.168.1.0/24" + subnet_name = "subnet-http" + cidr = "192.168.1.0/24" } } +# Set how many http instance you will deploy variable "desired_capacity_http" { default = 2 } @@ -49,12 +43,12 @@ variable "flavor_db" { variable "network_db" { default = { - network_name = "network-db" - subnet_name = "subnet-db" - cidr = "192.168.2.0/24" + subnet_name = "subnet-db" + cidr = "192.168.2.0/24" } } +# Set how many db instance you will deploy variable "desired_capacity_db" { - default = 1 + default = 3 } diff --git a/03-instance-with-multiple-network/020-network.tf b/03-instance-with-multiple-network/020-network.tf index d9eb1cf..876866a 100644 --- a/03-instance-with-multiple-network/020-network.tf +++ b/03-instance-with-multiple-network/020-network.tf @@ -3,49 +3,44 @@ # Router creation -resource "openstack_networking_router_v2" "router" { - name = "router" +resource "openstack_networking_router_v2" "generic" { + name = "router-generic" external_network_id = "${var.external_gateway}" } -#### HTTP NETWORK #### - # Network creation -resource "openstack_networking_network_v2" "network_http" { - name = "${var.network_http["network_name"]}" +resource "openstack_networking_network_v2" "generic" { + name = "network-generic" } -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_http" { +#### HTTP SUBNET #### + +# Subnet http configuration +resource "openstack_networking_subnet_v2" "http" { name = "${var.network_http["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" cidr = "${var.network_http["cidr"]}" dns_nameservers = "${var.dns_ip}" } # Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_http" { - router_id = "${openstack_networking_router_v2.router.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" +resource "openstack_networking_router_interface_v2" "http" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } -#### DB NETWORK #### - -# Network creation -resource "openstack_networking_network_v2" "network_db" { - name = "${var.network_db["network_name"]}" -} +#### DB SUBNET #### -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_db" { +# Subnet db configuration +resource "openstack_networking_subnet_v2" "db" { name = "${var.network_db["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_db.id}" + network_id = "${openstack_networking_network_v2.generic.id}" cidr = "${var.network_db["cidr"]}" dns_nameservers = "${var.dns_ip}" } # Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_db" { - router_id = "${openstack_networking_router_v2.router.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" +resource "openstack_networking_router_interface_v2" "db" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.db.id}" } diff --git a/03-instance-with-multiple-network/030-security_group.tf b/03-instance-with-multiple-network/030-security_group.tf index 44d9d53..d36ec3e 100644 --- a/03-instance-with-multiple-network/030-security_group.tf +++ b/03-instance-with-multiple-network/030-security_group.tf @@ -1,5 +1,5 @@ # Acces group, open input port 80 and ssh port -resource "openstack_compute_secgroup_v2" "security_group_http" { +resource "openstack_compute_secgroup_v2" "http" { name = "http" description = "Open input http port" rule { @@ -11,7 +11,7 @@ resource "openstack_compute_secgroup_v2" "security_group_http" { } # Open mariadb port -resource "openstack_compute_secgroup_v2" "security_group_db" { +resource "openstack_compute_secgroup_v2" "db" { name = "db" description = "Open input db port" rule { @@ -23,7 +23,7 @@ resource "openstack_compute_secgroup_v2" "security_group_db" { } # Open Apache2 port -resource "openstack_compute_secgroup_v2" "security_group_ssh" { +resource "openstack_compute_secgroup_v2" "ssh" { name = "ssh" description = "Open input ssh port" rule { diff --git a/03-instance-with-multiple-network/060-instance_http.tf b/03-instance-with-multiple-network/060-instance_http.tf index e792ab9..819f806 100644 --- a/03-instance-with-multiple-network/060-instance_http.tf +++ b/03-instance-with-multiple-network/060-instance_http.tf @@ -2,7 +2,7 @@ # Create instance # -resource "openstack_compute_instance_v2" "instance_http" { +resource "openstack_compute_instance_v2" "http" { count = "${var.desired_capacity_http}" name = "http-${count.index}" image_name = "${var.image}" @@ -10,32 +10,32 @@ resource "openstack_compute_instance_v2" "instance_http" { key_pair = "${openstack_compute_keypair_v2.user_key.name}" user_data = "${file("scripts/first-boot.sh")}" network { - port = "${element(openstack_networking_port_v2.port_instance_http.*.id, count.index)}" + port = "${element(openstack_networking_port_v2.http.*.id, count.index)}" } } # Create network port -resource "openstack_networking_port_v2" "port_instance_http" { +resource "openstack_networking_port_v2" "http" { count = "${var.desired_capacity_http}" name = "port-http-${count.index}" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_http.id}"] + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.http.id}"] fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } } # Create floating ip -resource "openstack_networking_floatingip_v2" "floating_http" { +resource "openstack_networking_floatingip_v2" "http" { count = "${var.desired_capacity_http}" pool = "${var.external_network}" } # Attach floating ip to instance -resource "openstack_compute_floatingip_associate_v2" "floating_http" { +resource "openstack_compute_floatingip_associate_v2" "http" { count = "${var.desired_capacity_http}" - floating_ip = "${element(openstack_networking_floatingip_v2.floating_http.*.address, count.index)}" - instance_id = "${element(openstack_compute_instance_v2.instance_http.*.id, count.index)}" + floating_ip = "${element(openstack_networking_floatingip_v2.http.*.address, count.index)}" + instance_id = "${element(openstack_compute_instance_v2.http.*.id, count.index)}" } diff --git a/03-instance-with-multiple-network/061-instance_db.tf b/03-instance-with-multiple-network/061-instance_db.tf index 15b79a8..e262d1f 100644 --- a/03-instance-with-multiple-network/061-instance_db.tf +++ b/03-instance-with-multiple-network/061-instance_db.tf @@ -2,7 +2,7 @@ # Create instance # -resource "openstack_compute_instance_v2" "instance_db" { +resource "openstack_compute_instance_v2" "db" { count = "${var.desired_capacity_db}" name = "db-${count.index}" image_name = "${var.image}" @@ -10,32 +10,32 @@ resource "openstack_compute_instance_v2" "instance_db" { key_pair = "${openstack_compute_keypair_v2.user_key.name}" user_data = "${file("scripts/first-boot.sh")}" network { - port = "${element(openstack_networking_port_v2.port_instance_db.*.id, count.index)}" + port = "${element(openstack_networking_port_v2.db.*.id, count.index)}" } } # Create network port -resource "openstack_networking_port_v2" "port_instance_db" { +resource "openstack_networking_port_v2" "db" { count = "${var.desired_capacity_db}" name = "port-db-${count.index}" - network_id = "${openstack_networking_network_v2.network_db.id}" + network_id = "${openstack_networking_network_v2.generic.id}" admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_db.id}"] + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.db.id}"] fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" + subnet_id = "${openstack_networking_subnet_v2.db.id}" } } # Create floating ip -resource "openstack_networking_floatingip_v2" "floating_db" { +resource "openstack_networking_floatingip_v2" "db" { count = "${var.desired_capacity_db}" pool = "${var.external_network}" } # Attach floating ip to instance -resource "openstack_compute_floatingip_associate_v2" "floating_db" { +resource "openstack_compute_floatingip_associate_v2" "db" { count = "${var.desired_capacity_db}" - floating_ip = "${element(openstack_networking_floatingip_v2.floating_db.*.address, count.index)}" - instance_id = "${element(openstack_compute_instance_v2.instance_db.*.id, count.index)}" + floating_ip = "${element(openstack_networking_floatingip_v2.db.*.address, count.index)}" + instance_id = "${element(openstack_compute_instance_v2.db.*.id, count.index)}" } diff --git a/03-instance-with-multiple-network/README.md b/03-instance-with-multiple-network/README.md index 97aa371..cf81aea 100644 --- a/03-instance-with-multiple-network/README.md +++ b/03-instance-with-multiple-network/README.md @@ -1,20 +1,22 @@ -# Utilisation +# How to -![schéma d'infrastructure pool-with-multiple-network](img/pool-with-multiple-network.png "schéma d'infrastructure pool-with-multiple-network") +![infra instance with multiple network](../img/03-multiple-network.png "infra instance with multiple network") -### Création de l'infrastructure +### Create stack ``` terraform apply ``` -Ce script créera: - - 1 routeur - - 2 network - - 2 instances http - - 1 pool avec entre 1 et 3 instances +This script will create: +- 1 router +- 2 networks +- 2 http instances +- 3 db instances -### Suppresion de l'infrastructure +The number of db instance will be define with Terraform "count" parameters + +### Delete stack ``` terraform destroy diff --git a/03-instance-with-multiple-network/provider.tf b/03-instance-with-multiple-network/provider.tf new file mode 100644 index 0000000..380f8c6 --- /dev/null +++ b/03-instance-with-multiple-network/provider.tf @@ -0,0 +1,7 @@ +# Configure credential OpenStack Provider +provider "openstack" { + user_name = "my-litle-user" + tenant_name = "my-little-tenant" + password = "secret" + auth_url = "http://your-cloud-prodivder.com" +} diff --git a/04-instance-with-loadbalancer/00-params.tf b/04-instance-with-loadbalancer/00-params.tf index 38e2f8b..b85f93b 100644 --- a/04-instance-with-loadbalancer/00-params.tf +++ b/04-instance-with-loadbalancer/00-params.tf @@ -1,14 +1,8 @@ -# Configure credential OpenStack Provider -provider "openstack" { - user_name = "my-litle-user" - tenant_name = "my-little-tenant" - password = "secret" - auth_url = "http://your-cloud-prodivder.com" -} +# Params file for variables #### GLANCE variable "image" { - default = "centos-7" + default = "Centos 7" } #### NEUTRON @@ -32,9 +26,8 @@ variable "flavor_http" { variable "network_http" { default = { - network_name = "network-http" - subnet_name = "subnet-http" - cidr = "192.168.1.0/24" + subnet_name = "subnet-http" + cidr = "192.168.1.0/24" } } @@ -49,9 +42,8 @@ variable "flavor_db" { variable "network_db" { default = { - network_name = "network-db" - subnet_name = "subnet-db" - cidr = "192.168.2.0/24" + subnet_name = "subnet-db" + cidr = "192.168.2.0/24" } } diff --git a/04-instance-with-loadbalancer/020-network.tf b/04-instance-with-loadbalancer/020-network.tf index d9eb1cf..468e98c 100644 --- a/04-instance-with-loadbalancer/020-network.tf +++ b/04-instance-with-loadbalancer/020-network.tf @@ -1,51 +1,44 @@ #### NETWORK CONFIGURATION #### - - # Router creation -resource "openstack_networking_router_v2" "router" { +resource "openstack_networking_router_v2" "generic" { name = "router" external_network_id = "${var.external_gateway}" } -#### HTTP NETWORK #### - # Network creation -resource "openstack_networking_network_v2" "network_http" { - name = "${var.network_http["network_name"]}" +resource "openstack_networking_network_v2" "generic" { + name = "network-generic" } -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_http" { +#### HTTP SUBNET #### + +# Subnet http configuration +resource "openstack_networking_subnet_v2" "http" { name = "${var.network_http["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" cidr = "${var.network_http["cidr"]}" dns_nameservers = "${var.dns_ip}" } # Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_http" { - router_id = "${openstack_networking_router_v2.router.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" +resource "openstack_networking_router_interface_v2" "http" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } #### DB NETWORK #### -# Network creation -resource "openstack_networking_network_v2" "network_db" { - name = "${var.network_db["network_name"]}" -} - -# Network configuration -resource "openstack_networking_subnet_v2" "subnet_db" { +# Subnet db configuration +resource "openstack_networking_subnet_v2" "db" { name = "${var.network_db["subnet_name"]}" - network_id = "${openstack_networking_network_v2.network_db.id}" + network_id = "${openstack_networking_network_v2.generic.id}" cidr = "${var.network_db["cidr"]}" dns_nameservers = "${var.dns_ip}" } # Router interface configuration -resource "openstack_networking_router_interface_v2" "router_interface_db" { - router_id = "${openstack_networking_router_v2.router.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" +resource "openstack_networking_router_interface_v2" "db" { + router_id = "${openstack_networking_router_v2.generic.id}" + subnet_id = "${openstack_networking_subnet_v2.db.id}" } diff --git a/04-instance-with-loadbalancer/030-security_group.tf b/04-instance-with-loadbalancer/030-security_group.tf index 44d9d53..d36ec3e 100644 --- a/04-instance-with-loadbalancer/030-security_group.tf +++ b/04-instance-with-loadbalancer/030-security_group.tf @@ -1,5 +1,5 @@ # Acces group, open input port 80 and ssh port -resource "openstack_compute_secgroup_v2" "security_group_http" { +resource "openstack_compute_secgroup_v2" "http" { name = "http" description = "Open input http port" rule { @@ -11,7 +11,7 @@ resource "openstack_compute_secgroup_v2" "security_group_http" { } # Open mariadb port -resource "openstack_compute_secgroup_v2" "security_group_db" { +resource "openstack_compute_secgroup_v2" "db" { name = "db" description = "Open input db port" rule { @@ -23,7 +23,7 @@ resource "openstack_compute_secgroup_v2" "security_group_db" { } # Open Apache2 port -resource "openstack_compute_secgroup_v2" "security_group_ssh" { +resource "openstack_compute_secgroup_v2" "ssh" { name = "ssh" description = "Open input ssh port" rule { diff --git a/04-instance-with-loadbalancer/060-instance_http.tf b/04-instance-with-loadbalancer/060-instance_http.tf index 1aa1817..b08ea84 100644 --- a/04-instance-with-loadbalancer/060-instance_http.tf +++ b/04-instance-with-loadbalancer/060-instance_http.tf @@ -2,7 +2,7 @@ # Create instance # -resource "openstack_compute_instance_v2" "instance_http" { +resource "openstack_compute_instance_v2" "http" { count = "${var.desired_capacity_http}" name = "http-${count.index}" image_name = "${var.image}" @@ -10,19 +10,19 @@ resource "openstack_compute_instance_v2" "instance_http" { key_pair = "${openstack_compute_keypair_v2.user_key.name}" user_data = "${file("scripts/first-boot.sh")}" network { - port = "${element(openstack_networking_port_v2.port_instance_http.*.id, count.index)}" + port = "${element(openstack_networking_port_v2.http.*.id, count.index)}" } } # Create network port -resource "openstack_networking_port_v2" "port_instance_http" { +resource "openstack_networking_port_v2" "http" { count = "${var.desired_capacity_http}" name = "port-http-${count.index}" - network_id = "${openstack_networking_network_v2.network_http.id}" + network_id = "${openstack_networking_network_v2.generic.id}" admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_http.id}"] + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.http.id}"] fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" } } diff --git a/04-instance-with-loadbalancer/061-instance_db.tf b/04-instance-with-loadbalancer/061-instance_db.tf index 1399cd4..5f5c833 100644 --- a/04-instance-with-loadbalancer/061-instance_db.tf +++ b/04-instance-with-loadbalancer/061-instance_db.tf @@ -2,7 +2,7 @@ # Create instance # -resource "openstack_compute_instance_v2" "instance_db" { +resource "openstack_compute_instance_v2" "db" { count = "${var.desired_capacity_db}" name = "db-${count.index}" image_name = "${var.image}" @@ -10,19 +10,19 @@ resource "openstack_compute_instance_v2" "instance_db" { key_pair = "${openstack_compute_keypair_v2.user_key.name}" user_data = "${file("scripts/first-boot.sh")}" network { - port = "${element(openstack_networking_port_v2.port_instance_db.*.id, count.index)}" + port = "${element(openstack_networking_port_v2.db.*.id, count.index)}" } } # Create network port -resource "openstack_networking_port_v2" "port_instance_db" { +resource "openstack_networking_port_v2" "db" { count = "${var.desired_capacity_db}" name = "port-db-${count.index}" - network_id = "${openstack_networking_network_v2.network_db.id}" + network_id = "${openstack_networking_network_v2.generic.id}" admin_state_up = true - security_group_ids = ["${openstack_compute_secgroup_v2.security_group_ssh.id}", - "${openstack_compute_secgroup_v2.security_group_db.id}"] + security_group_ids = ["${openstack_compute_secgroup_v2.ssh.id}", + "${openstack_compute_secgroup_v2.db.id}"] fixed_ip = { - subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" + subnet_id = "${openstack_networking_subnet_v2.db.id}" } } diff --git a/04-instance-with-loadbalancer/070-loadbalancer.tf b/04-instance-with-loadbalancer/070-loadbalancer.tf index be332b0..c0630af 100644 --- a/04-instance-with-loadbalancer/070-loadbalancer.tf +++ b/04-instance-with-loadbalancer/070-loadbalancer.tf @@ -1,115 +1,115 @@ # HTTP LOAD BALANCER CONFIGURATION # # Create loadbalancer -resource "openstack_lb_loadbalancer_v2" "elastic_loadbalancer_http" { +resource "openstack_lb_loadbalancer_v2" "http" { name = "elastic_loadbalancer_http" - vip_subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" + vip_subnet_id = "${openstack_networking_subnet_v2.http.id}" depends_on = [ - "openstack_compute_instance_v2.instance_http" + "openstack_compute_instance_v2.http" ] } # Create listener -resource "openstack_lb_listener_v2" "listener_http" { +resource "openstack_lb_listener_v2" "http" { name = "listener_http" protocol = "TCP" protocol_port = 80 - loadbalancer_id = "${openstack_lb_loadbalancer_v2.elastic_loadbalancer_http.id}" + loadbalancer_id = "${openstack_lb_loadbalancer_v2.http.id}" depends_on = [ - "openstack_lb_loadbalancer_v2.elastic_loadbalancer_http", + "openstack_lb_loadbalancer_v2.http", ] } # Set methode for load balance charge between instance -resource "openstack_lb_pool_v2" "pool_http" { +resource "openstack_lb_pool_v2" "http" { name = "pool_http" protocol = "TCP" lb_method = "ROUND_ROBIN" - listener_id = "${openstack_lb_listener_v2.listener_http.id}" + listener_id = "${openstack_lb_listener_v2.http.id}" depends_on = [ - "openstack_lb_listener_v2.listener_http", + "openstack_lb_listener_v2.http", ] } # Add multip instances to pool -resource "openstack_lb_member_v2" "member_http" { +resource "openstack_lb_member_v2" "http" { count = "${var.desired_capacity_http}" - address = "${element(openstack_compute_instance_v2.instance_http.*.access_ip_v4, count.index)}" + address = "${element(openstack_compute_instance_v2.http.*.access_ip_v4, count.index)}" protocol_port = 80 - pool_id = "${openstack_lb_pool_v2.pool_http.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_http.id}" + pool_id = "${openstack_lb_pool_v2.http.id}" + subnet_id = "${openstack_networking_subnet_v2.http.id}" depends_on = [ - "openstack_lb_pool_v2.pool_http", + "openstack_lb_pool_v2.http", ] } # Create health monitor for check services instances status -resource "openstack_lb_monitor_v2" "monitor_http" { +resource "openstack_lb_monitor_v2" "http" { name = "monitor_http" - pool_id = "${openstack_lb_pool_v2.pool_http.id}" + pool_id = "${openstack_lb_pool_v2.http.id}" type = "TCP" delay = 2 timeout = 2 max_retries = 2 depends_on = [ - "openstack_lb_member_v2.member_http", + "openstack_lb_member_v2.http", ] } # DB LOAD BALANCER CONFIGURATION # # Create loadbalancer -resource "openstack_lb_loadbalancer_v2" "elastic_loadbalancer_db" { +resource "openstack_lb_loadbalancer_v2" "db" { name = "elastic_loadbalancer_db" - vip_subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" + vip_subnet_id = "${openstack_networking_subnet_v2.db.id}" depends_on = [ - "openstack_compute_instance_v2.instance_db" + "openstack_compute_instance_v2.db" ] } # Create listener -resource "openstack_lb_listener_v2" "listener_db" { +resource "openstack_lb_listener_v2" "db" { name = "listener_db" protocol = "TCP" protocol_port = 3306 - loadbalancer_id = "${openstack_lb_loadbalancer_v2.elastic_loadbalancer_db.id}" + loadbalancer_id = "${openstack_lb_loadbalancer_v2.db.id}" depends_on = [ - "openstack_lb_loadbalancer_v2.elastic_loadbalancer_db", + "openstack_lb_loadbalancer_v2.db", ] } # Set methode for load balance charge between instance -resource "openstack_lb_pool_v2" "pool_db" { +resource "openstack_lb_pool_v2" "db" { name = "pool_db" protocol = "TCP" lb_method = "ROUND_ROBIN" - listener_id = "${openstack_lb_listener_v2.listener_db.id}" + listener_id = "${openstack_lb_listener_v2.db.id}" depends_on = [ - "openstack_lb_listener_v2.listener_db", + "openstack_lb_listener_v2.db", ] } # Add multip instances to pool -resource "openstack_lb_member_v2" "member_db" { +resource "openstack_lb_member_v2" "db" { count = "${var.desired_capacity_db}" - address = "${element(openstack_compute_instance_v2.instance_db.*.access_ip_v4, count.index)}" + address = "${element(openstack_compute_instance_v2.db.*.access_ip_v4, count.index)}" protocol_port = 3306 - pool_id = "${openstack_lb_pool_v2.pool_db.id}" - subnet_id = "${openstack_networking_subnet_v2.subnet_db.id}" + pool_id = "${openstack_lb_pool_v2.db.id}" + subnet_id = "${openstack_networking_subnet_v2.db.id}" depends_on = [ - "openstack_lb_pool_v2.pool_db", + "openstack_lb_pool_v2.db", ] } # Create health monitor for check services instances status -resource "openstack_lb_monitor_v2" "monitor_db" { +resource "openstack_lb_monitor_v2" "db" { name = "monitor_db" - pool_id = "${openstack_lb_pool_v2.pool_db.id}" + pool_id = "${openstack_lb_pool_v2.db.id}" type = "TCP" delay = 2 timeout = 2 max_retries = 2 depends_on = [ - "openstack_lb_member_v2.member_db", + "openstack_lb_member_v2.db", ] } diff --git a/04-instance-with-loadbalancer/README.md b/04-instance-with-loadbalancer/README.md index 7e2471b..5fe9fac 100644 --- a/04-instance-with-loadbalancer/README.md +++ b/04-instance-with-loadbalancer/README.md @@ -1,5 +1,6 @@ # Utilisation +![instance with load balancer](../img/04-load-balancer.png "instance with load balancer") ### Create stack @@ -8,12 +9,12 @@ terraform apply ``` This script will create: - - 1 router - - 2 network - - 2 instance http - - 3 instance db +- 1 router +- 2 network +- 2 http instances +- 3 db instances -### Suppresion de l'infrastructure +### Delete stack ``` terraform destroy diff --git a/04-instance-with-loadbalancer/provider.tf b/04-instance-with-loadbalancer/provider.tf new file mode 100644 index 0000000..380f8c6 --- /dev/null +++ b/04-instance-with-loadbalancer/provider.tf @@ -0,0 +1,7 @@ +# Configure credential OpenStack Provider +provider "openstack" { + user_name = "my-litle-user" + tenant_name = "my-little-tenant" + password = "secret" + auth_url = "http://your-cloud-prodivder.com" +} diff --git a/img/01-sample-instance.png b/img/01-sample-instance.png new file mode 100644 index 0000000000000000000000000000000000000000..d300598c22c8e48f3f6f5146e0a88e534b8ef6b3 GIT binary patch literal 25989 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 literal 0 HcmV?d00001 diff --git a/img/02-instance-with-volume.png b/img/02-instance-with-volume.png new file mode 100644 index 0000000000000000000000000000000000000000..aec365b04b644a98c9f82c6506420a4c2ddc0f08 GIT binary patch literal 30584 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 pdvElc>mV2S-!$Q6jY3ghEk0fmUH}02 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 S3Pi@i*`F_*%0F@S_WuKjmCOeK literal 0 HcmV?d00001