stackhpc.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