VK Cloud logo
Updated atSeptember 25, 2023   06:01 AM

Examples of manifestos

Create resources for the "Virtual Machines" service group

This manifest will create the following Virtual Machines service group objects:

  • Virtual machine;
  • Type of virtual machine;
  • Image of the virtual machine;
  • Key couple.

Manifest listing for creating Virtual Machines service group resources:

1terraform {
2  required_providers {
3    vkcs = {
4      source="vk-cs/vkcs"
5      version=" ~> 0.1.12"
6    }
7  }
8}

Create disk (volume)

1resource "vkcs_blockstorage_volume" "vol" {
2  name="instance1_vol"
3  size = 10
4  image_id = "4d8bc6c0-5623-43bf-9179-1bebcb943b47"
5  volume_type="ceph"
6  availability_zone = "AZ1"
7}
8resource "vkcs_compute_instance" "instance1" {
9  # Instance name within the Platform
10  name="terraform-test"
11  # The flavor ID for the instance. You can find out with the command: openstack flavor list
12  flavor_id = "dc84b839-a97b-4074-83d6-233531ffd8b3"
13  # The name of the key pair for the instance. You can find out with the command: openstack keypair list
14  key_pair = "some_keypair"
15  # SG for instance
16  security_groups = ["default"]
17  block_device {
18  uuid = "${vkcs_blockstorage_volume.vol.id}"
19  source_type="volume"
20  boot_index = 0
21   destination_type = "volume"
22  delete_on_termination = true
23  }
24  # Network for the instance.
25  network {
26  name="net-project001"
27  }
28}

Create block devices without VM

With this manifest, the following objects will be created:

  • Block storage;
  • Snapshot of block storage.

Listing of the manifest for creating block devices without a VM:

1terraform {
2  required_providers {
3   vkcs = {
4    source="vk-cs/vkcs"
5    version="~>0.1.12"
6   }
7  }
8}
9resource "vkcs_blockstorage_volume" "vol" {
10  name="vol"
11  size = 10
12  volume_type="ceph"
13  availability_zone = "AZ1"
14}
15resource "vkcs_blockstorage_snapshot" "vol-snapshot" {
16  name="vol_snapshot"
17  volume_id = "${vkcs_blockstorage_volume.vol.id}"
18}

Create network devices without VM

This manifest will create the following network subsystem objects:

  • Virtual network;
  • Subnet;
  • Virtual router;
  • Security team.

Listing of the manifest for creating network devices without a VM:

1terraform {
2  required_providers {
3   vkcs = {
4    source="vk-cs/vkcs"
5    version="~>0.1.12"
6   }
7  }
8}
9resource "vkcs_networking_network" "network_test" {
10  name="test_network"
11  admin_state_up = "true"
12  port_security_enabled = false
13}
14resource "vkcs_networking_subnet" "subnet_test" {
15  name="test_subnet"
16  network_id = "${vkcs_networking_network.network_test.id}"
17  cidr="192.168.199.0/24"
18}
19resource "vkcs_networking_router" "router_test" {
20  name="router_test"
21  admin_state_up = true
22  external_network_id = "76dfd377-b303-4b69-8cab-0d2f640130c5"
23}
24resource "vkcs_networking_router_interface" "router_interface_test" {
25  router_id = "${vkcs_networking_router.router_test.id}"
26  subnet_id = "${vkcs_networking_subnet.subnet_test.id}"
27}
28resource "vkcs_networking_secgroup" "secgroup_test" {
29  name="secgroup_test"
30  description = "My security group"
31}
32resource "vkcs_networking_secgroup_rule" "secgroup_rule_test" {
33  direction = "ingress"
34  ethertype="IPv4"
35  protocol="tcp"
36  port_range_min = 22
37  port_range_max = 22
38  remote_ip_prefix = "0.0.0.0/0"
39  security_group_id = "${vkcs_networking_secgroup.secgroup_test.id}"
40}

Create "Load Balancers" service group resources

With this manifest, the following objects of the Load Balancers service group will be created:

  • HTTP load balancers.
  • TCP load balancers.

Additionally, there will be:

  • Test network, subnet, security group.
  • VM instance.
  • Block storage.
1terraform {
2  required_providers {
3   vkcs = {
4    source="vk-cs/vkcs"
5    version="~>0.1.12"
6   }
7  }
8}
9resource "vkcs_networking_network" "network_test" {
10  name="network_test"
11  admin_state_up = "true"
12  port_security_enabled = "true"
13}
14resource "vkcs_networking_subnet" "subnet_test" {
15  name="test_subnet"
16  network_id = "${vkcs_networking_network.network_test.id}"
17  cidr="192.168.199.0/24"
18}
19resource "vkcs_networking_router" "router_test" {
20  name="router_test"
21  admin_state_up = true
22  external_network_id = "76dfd377-b303-4b69-8cab-0d2f640130c5"
23}
24resource "vkcs_networking_router_interface" "router_interface_test" {
25  router_id = "${vkcs_networking_router.router_test.id}"
26  subnet_id = "${vkcs_networking_subnet.subnet_test.id}"
27}
28resource "vkcs_networking_secgroup" "secgroup_test" {
29  name="secgroup_test"
30  description = "My security group"
31}
32resource "vkcs_networking_secgroup_rule" "secgroup_rule_test_ssh" {
33  direction = "ingress"
34  ethertype="IPv4"
35  protocol="tcp"
36  port_range_min = 22
37  port_range_max = 22
38  remote_ip_prefix = "0.0.0.0/0"
39  security_group_id = "${vkcs_networking_secgroup.secgroup_test.id}"
40}
41resource "vkcs_networking_secgroup_rule" "secgroup_rule_test_http" {
42  direction = "ingress"
43  ethertype="IPv4"
44  protocol="tcp"
45  port_range_min = 8080
46  port_range_max = 8080
47  remote_ip_prefix = "0.0.0.0/0"
48  security_group_id = "${vkcs_networking_secgroup.secgroup_test.id}"
49}
50resource "vkcs_networking_secgroup_rule" "secgroup_rule_test_tcp" {
51  direction = "ingress"
52  ethertype="IPv4"
53  protocol="tcp"
54  port_range_min = 9090
55  port_range_max = 9090
56  remote_ip_prefix = "0.0.0.0/0"
57  security_group_id = "${vkcs_networking_secgroup.secgroup_test.id}"
58}
59resource "vkcs_lb_loadbalancer" "loadbalancer_test_http" {
60  name="loadbalancer_test_http"
61  vip_subnet_id = "${vkcs_networking_subnet.subnet_test.id}"
62  security_group_ids = [ "${vkcs_networking_secgroup.secgroup_test.id}" ]
63}
64resource "vkcs_lb_loadbalancer" "loadbalancer_test_tcp" {
65  name="loadbalancer_test_tcp"
66  vip_subnet_id = "${vkcs_networking_subnet.subnet_test.id}"
67  security_group_ids = [ "${vkcs_networking_secgroup.secgroup_test.id}" ]
68}
69resource "vkcs_lb_listener" "listener_test_http" {
70  name="listener_test_http"
71  protocol="HTTP"
72  protocol_port = 8080
73  loadbalancer_id = "${vkcs_lb_loadbalancer.loadbalancer_test_http.id}"
74}
75resource "vkcs_lb_listener" "listener_test_tcp" {
76  name="listener_test_tcp"
77  protocol="TCP"
78  protocol_port = 9090
79  loadbalancer_id = "${vkcs_lb_loadbalancer.loadbalancer_test_tcp.id}"
80}
81resource "vkcs_lb_pool" "pool_test_http" {
82  name="pool_test_http"
83  protocol="HTTP"
84  lb_method = "ROUND_ROBIN"
85  loadbalancer_id = "${vkcs_lb_loadbalancer.loadbalancer_test_http.id}"
86}
87resource "vkcs_lb_pool" "pool_test_tcp" {
88  name="pool_test_tcp"
89  protocol="TCP"
90  lb_method = "ROUND_ROBIN"
91  loadbalancer_id = "${vkcs_lb_loadbalancer.loadbalancer_test_tcp.id}"
92}
93resource "vkcs_lb_l7policy" "l7policy_test_http" {
94  name="test"
95  action = "REDIRECT_TO_URL"
96  description = "test description"
97  position = 1
98  listener_id = "${vkcs_lb_listener.listener_test_http.id}"
99  redirect_url = "http://www.example.com"
100}
101resource "vkcs_lb_l7rule" "l7rule_test" {
102  l7policy_id = "${vkcs_lb_l7policy.l7policy_test_http.id}"
103  compare_type = "EQUAL_TO"
104  type="PATH"
105  value="/api"
106}
107resource "vkcs_blockstorage_volume" "vol1_test" {
108  name="instance1_vol"
109  size = 10
110  image_id = "4d8bc6c0-5623-43bf-9179-1bebcb943b47"
111  volume_type="ceph"
112  availability_zone = "AZ1"
113}
114resource "vkcs_blockstorage_volume" "vol2_test" {
115  name="instance1_vol"
116  size = 10
117  image_id = "4d8bc6c0-5623-43bf-9179-1bebcb943b47"
118  volume_type="ceph"
119  availability_zone = "AZ1"
120}
121resource "vkcs_compute_instance" "instance1_test" {
122  name="terraform-instance1-test"
123  flavor_id = "fc83b839-a97b-4074-83d6-211531ffd8b3"
124  key_pair = "CentOS-Basic-1-1-10GB-5CDfA91u"
125  security_groups = ["secgroup_test"]
126  block_device {
127  uuid = "${vkcs_blockstorage_volume.vol1_test.id}"
128  source_type="volume"
129  boot_index = 0
130  destination_type = "volume"
131  delete_on_termination = true
132  }
133  network {
134  name="network_test"
135  }
136  depends_on = [
137  vkcs_networking_network.network_test,
138  vkcs_networking_subnet.subnet_test,
139  vkcs_networking_secgroup.secgroup_test
140  ]
141}
142resource "vkcs_compute_instance" "instance2_test" {
143  name="terraform-instance2-test"
144  flavor_id = "fc83b839-a97b-4074-83d6-211531ffd8b3"
145  key_pair = "CentOS-Basic-1-1-10GB-5CDfA91u"
146  security_groups = ["secgroup_test"]
147  block_device {
148  uuid = "${vkcs_blockstorage_volume.vol2_test.id}"
149  source_type="volume"
150  boot_index = 0
151  destination_type = "volume"
152  delete_on_termination = true
153  }
154  network {
155  name="network_test"
156  }
157  depends_on = [
158  vkcs_networking_network.network_test,
159  vkcs_networking_subnet.subnet_test,
160  vkcs_networking_secgroup.secgroup_test
161  ]
162}
163resource "vkcs_lb_members" "members_http_test" {
164  pool_id = "${vkcs_lb_pool.pool_test_http.id}"
165  member {
166  address = "${vkcs_compute_instance.instance1_test.access_ip_v4}"
167  protocol_port = 8080
168  weight = 2
169  }
170   member {
171  address = "${vkcs_compute_instance.instance2_test.access_ip_v4}"
172  protocol_port = 8080
173  weight = 10
174  }
175}
176resource "vkcs_lb_members" "members_tcp_test" {
177  pool_id = "${vkcs_lb_pool.pool_test_tcp.id}"
178  member {
179  address = "${vkcs_compute_instance.instance1_test.access_ip_v4}"
180  protocol_port = 9090
181  weight = 10
182  }
183  member {
184  address = "${vkcs_compute_instance.instance2_test.access_ip_v4}"
185  protocol_port = 9090
186  weight = 2
187  }
188}

Create Kubernetes Clusters service group resources

This manifest will create the following Kubernetes Clusters service group objects:

  • Kubernetes cluster.
  • A group of Kubernetes clusters.

Service group resource creation manifest listing Kubernetes Clusters:

1terraform {
2  required_providers {
3  vkcs = {
4  source="vk-cs/vkcs"
5  version="0.1.4"
6  }
7  }
8}
9data "vkcs_kubernetes_clustertemplate" "cluster_template" {
10  name="Kubernetes-almalinux-v1.22.6-mcs.external"
11}
12data "vkcs_networking_subnet" "subnet_project" {
13  name="subnet-project001"
14}
15data "vkcs_networking_network" "network_project" {
16  name="net-project001"
17}
18data "vkcs_compute_flavor" "k8s_flavor" {
19  name="Standard-2-4"
20}

Create a k8s cluster

1resource "vkcs_kubernetes_cluster" "cluster_test" {
2  name="cluster-test"
3  cluster_template_id = data.vkcs_kubernetes_clustertemplate.cluster_template.id
4  subnet_id=data.vkcs_networking_subnet.subnet_project.id
5  network_id = data.vkcs_networking_network.network_project.id
6  master_flavor = data.vkcs_compute_flavor.k8s_flavor.id
7  master_count = 1
8  # The name of the key pair for the cluster instance. You can find out with the command: openstack
9key pair list
10  keypair="my_keys"
11  availability_zone = "AZ1"
12  floating_ip_enabled = true
13}

Create a k8s cluster group

1resource "vkcs_kubernetes_node_group" "nodegroup_k8s" {
2  name="nodegroup-k8s"
3  cluster_id = vkcs_kubernetes_cluster.cluster_test.id
4  node_count = 1
5  availability_zones = ["AZ1"]
6  volume_type="ceph"
7  volume_size = 30
8  max_node_unavailable = 1
9}

Create resources for the "Managed DB" service group

With this manifest, the following objects of the Managed DBs service group will be created:

  • Database instance.
  • Database cluster.

Listing of the resource creation manifest for the Managed DBs service group:

1terraform {
2  required_providers {
3  vkcs = {
4  source="vk-cs/vkcs"
5  version="~>0.1.12"
6  }
7  }
8}
9data "vkcs_networking_subnet" "subnet_project" {
10  name="subnet-project001"
11}
12data "vkcs_networking_network" "network_project" {
13  name="net-project001"
14}
15data "vkcs_compute_flavor" "db_flavor" {
16  name="Basic-1-2"
17}
18resource "vkcs_db_cluster" "db_cluster" {
19  name="db-cluster"
20# Versions can be taken from the Self-Service Portal UI
21  datastore {
22  type="postgresql"
23  version="12"
24  }
25  cluster_size = 3
26  flavor_id = data.vkcs_compute_flavor.db_flavor.id
27  volume_size = 10
28  volume_type="ceph"
29  network {
30  uuid = data.vkcs_networking_network.network_project.id
31  }
32}
33resource "vkcs_db_instance" "db_instance" {
34  name="db-instance"
35# Versions can be taken from the self-service portal UI
36  datastore {
37  type="mysql"
38  version="5.7"
39  }
40  flavor_id = data.vkcs_compute_flavor.db_flavor.id
41  size = 10
42  volume_type="ceph"
43  network {
44  uuid = data.vkcs_networking_network.network_project.id
45  }
46}