Подготовка
Ознакомитесь со статьей – Terraform быстрый старт.
Выполните все действия по настройке провайдера, составлению основных конфигурационных файлов.
Добавить описание ресурсов
После блока авторизации provider “openstack” {} необходимо добавить следующее:
data "openstack_networking_network_v2" "network_ext" {
name = "ext-net"
}
resource "openstack_networking_router_v2" "router" {
name = "my_router"
admin_state_up = true
external_network_id = data.openstack_networking_network_v2.network_ext.id
}
- 1.
data "openstack_networking_network_v2"– чтение аттрибутов внешней сети с именем ext-net. - 2.
openstack_networking_router_v2– создание маршрутизатора. - 3.
external_network_id– ID внешней сети (выход в Интернет). - 4.
admin_state_up– активация сети. - 5.
name– название маршрутизатора.
Обеспечение связанности
openstack_networking_router_interface_v2 – создание интерфейса, соединяющего маршрутизатор с внутренней сетью.
resource "openstack_networking_router_interface_v2" "router_interface" {
router_id = openstack_networking_router_v2.router.id
subnet_id = openstack_networking_subnet_v2.subnet.id
}
Указываем ID маршрутизатора, который считали заранее, используя конструкцию: openstack_networking_router_v2.router.id, а также сеть, которую добавляем: subnet_id = openstack_networking_subnet_v2.subnet.id
Сети необходимо создать заранее, перед тем, как добавлять в маршрутизатор.
Запуск развертывания
terraform plan
openstack_networking_router_interface_v2.router_interface will be created
+ resource "openstack_networking_router_interface_v2" "router_interface" {
+ force_destroy = false
+ id = (known after apply)
+ port_id = (known after apply)
+ region = (known after apply)
+ router_id = (known after apply)
+ subnet_id = (known after apply)
}
# openstack_networking_router_v2.router will be created
+ resource "openstack_networking_router_v2" "router" {
+ admin_state_up = true
+ all_tags = (known after apply)
+ availability_zone_hints = (known after apply)
+ distributed = (known after apply)
+ enable_snat = (known after apply)
+ external_gateway = (known after apply)
+ external_network_id = "***16e5d-****-****-****-1664b98c0***"
+ id = (known after apply)
+ name = "my_router"
+ region = (known after apply)
+ 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 осторожно, во избежание непредвиденных последствий!