Подготовка
Ознакомитесь со статьей – Terraform быстрый старт.
Выполните все действия по настройке провайдера, составлению основных конфигурационных файлов.
Добавить описание ресурсов
После блока авторизации provider “openstack” {} необходимо добавить следующее:
data "openstack_networking_network_v2" "network_ext" {
name = "ext-net"
}
data "openstack_networking_subnet_ids_v2" "subnets_ext" {
network_id = data.openstack_networking_network_v2.network_ext.id
}
resource "openstack_networking_floatingip_v2" "floatip" {
pool = data.openstack_networking_network_v2.network_ext.name
subnet_ids = data.openstack_networking_subnet_ids_v2.subnets_ext.ids
description = "my_float_ip"
}
resource "openstack_networking_floatingip_associate_v2" "fip" {
floating_ip = openstack_networking_floatingip_v2.floatip.address
port_id = openstack_networking_port_v2.port.id
}
Данный пример кода показывает, как привязать “плавающий” (белый) IP-адрес к инстансу.
Для того, чтобы все работало корректно, необходимо заранее создать сети и маршрутизатор.
После создания внутренней сети и добавления в маршрутизатор появляется возможность привязать IP-адрес к инстансу:
- 1. Получаем информацию о существующей сети –
data "openstack_networking_network_v2". - 2. Получаем ID идентификаторы сетей –
data "openstack_networking_subnet_ids_v2". - 3. Создаётся “плавающий IP” –
openstack_networking_floatingip_v2, благодаря полученным значениям о внешней сети (имеющий доступ в Интернет) –data.openstack_networking_network_v2.network_ext.nameи ID внешней сетиdata.openstack_networking_subnet_ids_v2.subnets_ext.ids. - 4. Назначаем адрес инстансу –
openstack_networking_floatingip_associate_v2.
Запуск развертывания
terraform plan
# openstack_networking_floatingip_associate_v2.fip will be created
+ resource "openstack_networking_floatingip_associate_v2" "fip" {
+ fixed_ip = (known after apply)
+ floating_ip = (known after apply)
+ id = (known after apply)
+ port_id = (known after apply)
+ region = (known after apply)
}
# openstack_networking_floatingip_v2.floatip will be created
+ resource "openstack_networking_floatingip_v2" "floatip" {
+ address = (known after apply)
+ all_tags = (known after apply)
+ description = "my_float_ip"
+ dns_domain = (known after apply)
+ dns_name = (known after apply)
+ fixed_ip = (known after apply)
+ id = (known after apply)
+ pool = "ext-net"
+ port_id = (known after apply)
+ region = (known after apply)
+ subnet_id = (known after apply)
+ subnet_ids = [
+ "0377****-****-****-****-****d56eced1",
+ "064a****-****-****-****-****550458cf",
+ "8be4****-****-****-****-****9f7ef6cf",
]
+ tenant_id = (known after apply)
}
Если всё корректно, то:
terraform apply
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value:
Подтвердите выполнение командой yes.
Ресурсы создадутся, и информация будет добавлена в новый файл состояний.
Если какие-то ресурсы удалены из кода, но они присутствуют в файле состояний, то они будут удалены!
Применяйте команду terraform plan осторожно, во избежание непредвиденных последствий!