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_cloudclouds.yaml 中可选的云名称。

os_networks_interface 是从服务目录中获取的端点 URL 类型。可能是 publicadmininternal 之一。

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 项目拥有,且不是 sharedexternal
  • access:与目标项目共享的模式。有效选项是 access_as_externalaccess_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

作者信息

关于项目

Role to register networks, subnets and routers in OpenStack

安装
ansible-galaxy install stackhpc.ansible-role-os-networks
许可证
apache-2.0
下载
157.5k
拥有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.