stackhpc.ansible-role-os-networks
注意:
该代码库已不再维护 - 角色已迁移至 Ansible collection 现在 ➡️ https://github.com/stackhpc/ansible-collection-openstack
OpenStack 网络
此角色可用于使用 os_network、os_subnet 和 os_router 模块在 Neutron 中注册网络、子网和路由器。
需求
目标主机应该可以访问 OpenStack Neutron API。
角色变量
os_networks_venv 是创建虚拟环境的目录路径。
os_networks_auth_type 是与 os_* Ansible 模块的 auth_type 参数兼容的认证类型。
os_networks_auth 是包含与 os_* Ansible 模块的 auth 参数兼容的认证信息的字典。
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:Neutron 网络的提供者分段 ID。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 子网 IP 网络的 CIDR 表示。dns_nameservers:子网的 DNS 名称服务器列表。extra_specs:可选字典,包含传递给 API 的额外键/值对。需要 ansible >= 2.7。gateway_ip:Neutron 子网网关的 IP 地址。no_gateway_ip:可选布尔值,是否省略网关 IP。如果未设置,当gateway_ip被指定时此值为true,否则为false。enable_dhcp:是否在子网中启用 DHCP。allocation_pool_start:Neutron 子网 IP 分配池的起始地址。allocation_pool_end:Neutron 子网 IP 分配池的结束地址。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:规则的可选以太类型,默认是IPv4。port_range_min:可选起始端口。port_range_max:可选结束端口。protocol:规则的可选 IP 协议。remote_group:可选的链接的安全组名称或 ID。remote_ip_prefix:可选的源 IP 地址前缀,CIDR 表示法。state:规则的可选状态,默认是present。
os_networks_rbac 是基于角色的访问控制共享的列表,适用于命名的网络和项目。详细信息请参见 Neutron RBAC 管理指南。列表中的每个条目是一个包含以下项目的字典:
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 Goddard (mark@stackhpc.com)
ansible-galaxy install stackhpc.ansible-role-os-networks