Прежде всего убедитесь, что вы установили Terraform и создали файл main.tf с необходимыми провайдерами.
Чтобы создать сеть или группу безопасности, создайте файл network.tf, где будет описана конфигурация создаваемых сущностей. Добавьте текст из примеров ниже, и исправьте значения настроек для ваших сетей и групп безопасности.
Для создания сети и групп безопасности нам потребуются следующие объекты:
- Ресурсы (resource):
- linxcs_networking_network — сеть, в которую будут вноситься изменения.
- linxcs_networking_subnet — подсеть из сети. В примере: subnetwork.
- linxcs_networking_router — роутер для внешней сети и взаимодействия с внешним миром. В примере: router.
- linxcs_networking_router_interface — подключить роутер к внутренней сети.
- linxcs_networking_secgroup — группа безопасности, в которую будут включены правила доступа.
- linxcs_networking_secgroup_rule — правило для группы безопасности. В примере, открываем доступ к сети с любого IP по портам 22 и 3389.
- linxcs_networking_port — создать ресурс сетевого порта внутри Linx Cloud.
- linxcs_networking_port_secgroup_associate — привязать порт к группе безопасности.
- Источники данных (data source):
- linxcs_networking_network – внешняя сеть для получения публичного IP (Floating IP).
1data "linxcs_networking_network" "extnet" {
2 name = "ext-net"
3}
4
5resource "linxcs_networking_network" "network" {
6 name = "net"
7}
8
9resource "linxcs_networking_subnet" "subnetwork" {
10 name = "subnet_1"
11 network_id = linxcs_networking_network.network.id
12 cidr = "192.168.199.0/24"
13 ip_version = 4
14}
15
16resource "linxcs_networking_router" "router" {
17 name = "router"
18 admin_state_up = true
19 external_network_id = data.linxcs_networking_network.extnet.id
20}
21
22resource "linxcs_networking_router_interface" "db" {
23 router_id = linxcs_networking_router.router.id
24 subnet_id = linxcs_networking_subnet.subnetwork.id
25}
26
27
28resource "linxcs_networking_secgroup" "secgroup" {
29 name = "security_group"
30 description = "terraform security group"
31}
32
33resource "linxcs_networking_secgroup_rule" "secgroup_rule_1" {
34 direction = "ingress"
35 ethertype = "IPv4"
36 port_range_max = 22
37 port_range_min = 22
38 protocol = "tcp"
39 remote_ip_prefix = "0.0.0.0/0"
40 security_group_id = linxcs_networking_secgroup.secgroup.id
41 description = "secgroup_rule_1"
42}
43
44resource "linxcs_networking_secgroup_rule" "secgroup_rule_2" {
45 direction = "ingress"
46 ethertype = "IPv4"
47 port_range_max = 3389
48 port_range_min = 3389
49 remote_ip_prefix = "0.0.0.0/0"
50 protocol = "tcp"
51 security_group_id = linxcs_networking_secgroup.secgroup.id
52}
53
54resource "linxcs_networking_port" "port" {
55 name = "port_1"
56 admin_state_up = "true"
57 network_id = linxcs_networking_network.network.id
58
59 fixed_ip {
60 subnet_id = linxcs_networking_subnet.subnetwork.id
61 ip_address = "192.168.199.23"
62 }
63}
64
65resource "linxcs_networking_port_secgroup_associate" "port" {
66 port_id = linxcs_networking_port.port.id
67 enforce = "false"
68 security_group_ids = [
69 linxcs_networking_secgroup.secgroup.id,
70 ]
71}
Добавьте пример в файл network.tf и выполните следующие команды:
terraform init
terraform apply