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