Для каждой инфраструктуры в OpenStack выделяется PA блок IP-адресов, имеющих непосредственный выход в интернет, и квоты (лимиты) на создание локальных сетей, подсетей, портов и групп безопасности.
Параметры выделенного PA блока (далее в тексте — публичная сеть) мы сообщаем в письме с параметрами доступа. Кроме того, их можно посмотреть в веб-интерфейсе (дашборде) OpenStack, авторизовавшись со своим логином и паролем — разделе Network, подраздел Networks. Возможности управления этой сетью ограничены – тем не менее, возможность создавать порты и группы безопасности есть.
Доступные квоты (лимиты) на количество локальных сетей/подсети внутри инфрастуктуры, групп безопасности и правил для групп безопасности также можно видеть в веб-интерфейсе (дашборде) — раздел Compute, подраздел Overview.
Для создания локальных сетей используются ресурсы:
В соответствии с архитектурой сетей в среде OpenStack, network (сеть) — это своего рода контейнер, который декларирует наличие сети, но не описывает каких-либо её реальных параметров (вышесказанное справедливо для простых инфраструктур, а не для любых возможных сценариев применения данного ресурса). Реальные свойства сети, такие, как блок адресов, описываются в ресурсе subnet. Пример минимальной работающей конфигурации для создания локальной сети — такой, как приведён в официальной документации Terraform для ресурса subnet:
resource "openstack_networking_network_v2" "network_1" { name = "tf_test_network" # admin_state_up = "true" } resource "openstack_networking_subnet_v2" "subnet_1" { network_id = "${openstack_networking_network_v2.network_1.id}" cidr = "192.168.55.0/24" }
Технически возможно создание более одной подсети в рамках одной сети, однако в случае простой инфраструктуры это вряд ли имеет практический смысл, т.к. лимит на количество подсетей равен лимиту на количество сетей.
Пример, который в официальной документации приведён на странице ресурса network, представляет собой более сложную конфигурацию, задействующую все возможности, которые возмножно сконфигурировать для простой инфраструктуры. Помимо сети/подсети этот пример включает в себя создание группы безопасности, правила для группы безопасности, порта (с определённым IP-адресом из указанной подсети) и привязку данного порта к определённой виртуальной машине.
Группы безопасности создаются при помощи ресурса openstack_compute_secgroup_v2, а правила для групп безопасности — соответственно, при помощи ресурса openstack_networking_secgroup_rule_v2.
Группы безопасности (security groups) и их правила, строго говоря, являются опциональными — в том смысле, что для работоспособности сети создавать их не обязательно. По умолчанию применяется группа [default].
Порты создаются при помощи ресурса openstack_networking_port_v2.
Для простых инфраструктур достаточно простой конфигурации, пример которой приведён в официальной документации под названием Simple Port. Конфигурация портов также является опциональной — в том смысле, что если конфигурация портов не прописана, то при запуске виртуальных машин порты в указанных сетях создаются автоматически.
По умолчанию выделение адресов в сетях происходит с использованием DHCP, т.е. автоматически. При создании виртуальной машины достаточно указать сеть, к которой эта машина подключена. При запуске машины порт будет создан автоматически, и IP-адрес также будет выделен автоматически. Подобная конфигурация максимально проста в использовании, однако имеет очевидные ограничения — если машина подключена к двум сетям, получение адресов по DHCP работать не будет. В таком случае IP адреса должны быть сконфигурированы статически как в конфигурации виртуальной машины в Terraform, так и внутри её операционной системы.