ansible-role-os-networks
ЗАМЕТКА:
Этот репозиторий больше не поддерживается - роль была перенесена в коллекцию Ansible сейчас ➡️ https://github.com/stackhpc/ansible-collection-openstack
Сети OpenStack
Эту роль можно использовать для регистрации сетей, подсетей и маршрутизаторов в Neutron, используя модули os_network, os_subnet и os_router.
Требования
API OpenStack Neutron должен быть доступен с целевого узла.
Переменные роли
os_networks_venv
- это путь к каталогу, в котором будет создан виртуальный окружение.
os_networks_auth_type
- это тип аутентификации, совместимый с аргументом auth_type
модулей Ansible os_*
.
os_networks_auth
- это словарь, содержащий информацию для аутентификации, совместимую с аргументом auth
модулей Ansible os_*
.
os_networks_cacert
- это необязательный путь к пакету сертификатов CA.
os_networks_cloud
- это необязательное имя облака в clouds.yaml
.
os_networks_interface
- это тип URL конечной точки для получения из каталога услуг. Может быть одним из public
, admin
или internal
.
os_networks
- это список сетей для регистрации. Каждый элемент должен быть ссылкой, содержащей следующие элементы:
name
: Имя сети Neutron.provider_network_type
: Тип поставщика сети Neutron.provider_physical_network
: Физическая сеть поставщика для сети Neutron.provider_segmentation_id
: ID сегментации поставщика для сети Neutron.shared
: Является ли сеть Neutron общей.external
: Является ли сеть Neutron внешней.project
: Необязательное создание этой сети для проекта, отличного от аутентифицирующего проекта.state
: Необязательное состояние сети, по умолчанию -present
.mtu
: Значение максимального размера передачи (MTU) для избежания фрагментации. Сеть будет использовать значения по умолчанию OpenStack, если этот параметр не указан. Требует ansible >= 2.9.port_security_enabled
: Включена ли безопасность портов в сети или нет. Сеть будет использовать значения по умолчанию OpenStack, если этот параметр не указан. Логическое значение, true для включения, false в противном случае. Требует ansible >= 2.8.dns_domain
: Значение домена DNS для установки. Сеть будет использовать значения по умолчанию OpenStack, если этот параметр не указан. Требует ansible >= 2.9.subnets
: Список подсетей для создания в этой сети. Каждый элемент должен быть ссылкой, содержащей следующие элементы:name
: Имя подсети Neutron.cidr
: Представление подсети Neutron в формате CIDR.dns_nameservers
: Список DNS-серверов для подсети.extra_specs
: Необязательный словарь с дополнительными парами ключ/значение, переданными в API. Требует ansible >= 2.7.gateway_ip
: IP-адрес шлюза подсети Neutron.no_gateway_ip
: Необязательное логическое значение, указывающее, следует ли опустить IP-шлюз. Если не установлено, это будетtrue
, еслиgateway_ip
указан, иfalse
в противном случае.enable_dhcp
: Включить ли DHCP на подсети.allocation_pool_start
: Начало пула распределения IP подсети Neutron.allocation_pool_end
: Конец пула распределения IP подсети Neutron.host_routes
: Список классов маршрутов для поставки хостам, подключенным к этой подсети. Должен быть представлен список словарей сdestination
(целевой сеть в кодировке CIDR) иnexthop
(IP-адрес маршрутизатора в этой подсети).ip_version
: Необязательная версия IP для подсети.ipv6_address_mode
: Необязательный режим адресации IPv6 для подсети.ipv6_ra_mode
: Необязательный режим объявления маршрутизатора IPv6 для подсети.use_default_subnetpool
: Необязательное логическое значение, следует ли использовать пул подсетей по умолчанию для версии IP.project
: Необязательное создание этой подсети для проекта, отличного от аутентифицирующего проекта.state
: Необязательное состояние подсети, по умолчанию -present
.
os_networks_routers
- это список маршрутизаторов для создания. Каждый элемент должен быть ссылкой, содержащей следующие элементы:
name
: Имя маршрутизатора Neutron.interfaces
: Список имен подсетей для подключения к внутреннему интерфейсу маршрутизатора.network
: Уникальное имя или ID внешней шлюзовой сети.external_fixed_ips
: Необязательный список параметров IP-адреса для внешней шлюзовой сети. Каждый элемент - это словарь с именем подсети или ID подсети и IP-адресом, который необходимо назначить на подсети.project
: Необязательное создание этого маршрутизатора для проекта, отличного от аутентифицирующего проекта.state
: Необязательное состояние маршрутизатора, по умолчанию -present
.
os_networks_security_groups
: Список групп безопасности для создания. Каждый элемент должен быть ссылкой, содержащей следующие элементы:
name
: Имя группы безопасности.description
: Необязательное описание группы безопасности.project
: Необязательный проект, в котором нужно зарегистрировать группу безопасности.state
: Необязательное состояние группы безопасности, по умолчанию -present
.rules
: Необязательный список правил для добавления в группу безопасности. Каждый элемент должен быть ссылкой, содержащей следующие элементы:direction
: Необязательное направление правила, по умолчанию -ingress
.ethertype
: Необязательный тип Ethertype правила, по умолчанию -IPv4
.port_range_min
: Необязательный начальный порт.port_range_max
: Необязательный конечный порт.protocol
: Необязательный IP-протокол правила.remote_group
: Необязательное имя или ID группы безопасности для ссылки.remote_ip_prefix
: Необязательный префикс IP-адреса источника в записи CIDR.state
: Необязательное состояние правила, по умолчанию -present
.
os_networks_rbac
- это список ограничений доступа на основе ролей для сетей и проектов с именами. Смотрите административное руководство по RBAC Neutron для деталей. Каждая запись в списке - это словарь с следующими элементами:
network
: Имя сети для совместного использования. Эта сеть обычно принадлежит проектуadmin
и не являетсяshared
илиexternal
.access
: Режим совместного использования с целевыми проектами. Допустимые варианты:access_as_external
иaccess_as_shared
.projects
: Список имен проектов для совместного использования названной сети заданным способом.
ПРИМЕЧАНИЕ: Назначения RBAC нельзя изменить после их создания.
Зависимости
Эта роль зависит от роли stackhpc.os_openstacksdk
.
Пример плейбука
Следующий плейбук регистрирует сеть Neutron, подсеть и маршрутизатор. Определен классный статический маршрут для доступа к другой подсети через другой шлюз.
---
- name: Убедиться, что сети, подсети и маршрутизаторы зарегистрированы
hosts: neutron-api
roles:
- role: os-networks
os_networks_venv: "~/os-networks-venv"
os_networks_auth_type: "password"
os_networks_auth:
project_name: <keystone project>
username: <keystone user>
password: <keystone password>
auth_url: <keystone auth URL>
os_networks:
- name: net1
provider_network_type: vlan
provider_physical_network: physnet1
provider_segmentation_id: 1234
shared: true
external: false
subnets:
- name: subnet1
cidr: 10.0.0.0/24
gateway_ip: 10.0.0.1
allocation_pool_start: 10.0.0.2
allocation_pool_end: 10.0.0.254
host_routes:
- destination: 10.0.1.0/24
nexthop: 10.0.0.254
os_networks_routers:
- name: router1
interfaces:
- subnet1
network: net1
os_networks_security_groups:
- name: secgroup1
rules:
- protocol: icmp
Информация об авторе
- Марк Годдард (mark@stackhpc.com)
ansible-galaxy install stackhpc/ansible-role-os-networks