openstack.cloud.security_group_rule 模块 – 管理 OpenStack 网络 (Neutron) 中的安全组规则

注意

此模块是 openstack.cloud 集合(版本 2.3.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install openstack.cloud。您需要更多要求才能使用此模块,请参阅 要求 以了解详细信息。

要在 playbook 中使用它,请指定:openstack.cloud.security_group_rule

概要

  • 在 OpenStack 网络 (Neutron) 服务中添加或删除安全组规则。

  • openstack.cloud.security_group 中使用 security_group_rules 来定义一组安全组规则。在创建或删除多个安全组规则时,它将比使用此模块快得多,因为后者将为每个安全组规则单独调用 OpenStack 网络 (Neutron) API。

要求

以下要求需要在执行此模块的主机上满足。

  • python >= 3.6

  • openstacksdk >= 1.0.0

参数

参数

注释

api_timeout

整数

套接字层在 API 调用超时之前应等待多长时间。如果省略此项,则不会将任何内容传递给 requests 库。

auth

字典

字典包含云的身份验证插件策略所需的身份验证信息。对于默认的 password 插件,这将包含 auth_urlusernamepasswordproject_name 以及有关域的任何信息(例如,user_domain_nameproject_domain_name)(如果云支持它们)。对于其他插件,此参数需要包含身份验证插件所需的任何参数。如果提供了命名云或存在 OpenStack OS_* 环境变量,则不需要此参数。

auth_type

字符串

要使用的身份验证插件的名称。如果云使用密码身份验证以外的其他身份验证,则应在此处指示插件的名称,并应相应地更新 auth 参数的内容。

ca_cert

别名: cacert

字符串

作为验证 SSL API 请求的一部分可以使用的 CA 证书包的路径。

client_cert

别名: cert

字符串

作为 SSL 事务的一部分要使用的客户端证书的路径。

client_key

别名: key

字符串

作为 SSL 事务的一部分要使用的客户端密钥的路径。

cloud

任意

要操作的命名云或云配置。如果 cloud 是一个字符串,它引用 OpenStack clouds.yaml 文件中定义的命名云配置。为 authauth_type 提供默认值。如果提供了 auth 或存在 OpenStack OS_* 环境变量,则不需要此参数。如果 cloud 是一个字典,则它包含一个完整的云配置,就像在 clouds.yaml 的某个部分中一样。

description

字符串

安全组规则的描述。

direction

字符串

应用安全组规则的方向。

并非所有提供商都支持 egress

选项

  • "egress"

  • "ingress" ← (默认)

ether_type

别名: ethertype

字符串

必须是 IPv4 或 IPv6,并且 CIDR 中表示的地址必须与入口或出口规则匹配。并非所有提供商都支持 IPv6。

选项

  • "IPv4" ← (默认)

  • "IPv6"

interface

别名: endpoint_type

字符串

要从服务目录中获取的端点 URL 类型。

选项

  • "admin"

  • "internal"

  • "public" ← (默认)

port_range_max

整数

安全组规则匹配的范围内的最大端口号。

如果协议是 TCP、UDP、DCCP、SCTP 或 UDP-Lite,则此值必须大于或等于 port_range_min 属性值。

如果协议是 ICMP,则此值必须是 ICMP 代码。

port_range_min

整数

安全组规则匹配的范围内的最小端口号。

如果协议是 TCP、UDP、DCCP、SCTP 或 UDP-Lite,则此值必须小于或等于 port_range_max 属性值。

如果协议是 ICMP,则此值必须是 ICMP 类型。

project

字符串

项目的唯一名称或 ID。

protocol

字符串

IP 协议可以用字符串、整数或 null 表示。

有效的字符串或整数值包括 any0ah51dccp33egp8esp50gre47icmp1icmpv658igmp2ipip4ipv6-encap41ipv6-frag44ipv6-icmp58ipv6-nonxt59ipv6-opts60ipv6-route43ospf89pgm113rsvp46sctp132tcp6udp17udplite136vrrp112

此外,任何介于 [0-255] 之间的整数值也是有效的。

字符串 any (或整数 0)表示所有 IP 协议。

有关支持的字符串的最新列表,请参阅 neutron_lib.constants 中的常量。

region_name

字符串

区域的名称。

remote_group

字符串

要链接的安全组的名称或 ID。

remote_ip_prefix 互斥。

remote_ip_prefix

字符串

以 CIDR 表示法的源 IP 地址。

remote_ip_prefix 中缺少诸如 /32 之类的网络掩码时,此模块会在更新时失败,并显示 OpenStack 错误消息 Security group rule already exists.

remote_group 互斥。

sdk_log_level

字符串

OpenStackSDK 的日志级别

选项

  • "INFO" ← (默认)

  • "DEBUG"

sdk_log_path

字符串

OpenStackSDK 的日志文件路径。如果为空,则不写入日志

security_group

string / 必需

安全组的名称或 ID。

state

字符串

资源应存在还是不存在。

选项

  • "present" ← (默认)

  • "absent"

timeout

整数

Ansible 应等待请求的资源多长时间。

默认值: 180

validate_certs

别名: verify

布尔值

是否应验证 SSL API 请求。

在 Ansible 2.3 之前,此值默认为 true

选项

  • false

  • true

wait

布尔值

Ansible 是否应等待直到请求的资源完成。

选项

  • false

  • true ← (默认)

注释

注意

  • 可以使用标准 OpenStack 环境变量(例如 OS_USERNAME)而不是提供显式值。

  • 身份验证信息由 openstacksdk 驱动,这意味着值可以来自 /etc/ansible/openstack.yaml、/etc/openstack/clouds.yaml 或 ~/.config/openstack/clouds.yaml 中的 yaml 配置文件,然后来自标准环境变量,最后来自剧本中的显式参数。 可以在 https://docs.openstack.org/openstacksdk/ 中找到更多信息

示例

- name: Create a security group rule
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: tcp
    port_range_min: 80
    port_range_max: 80
    remote_ip_prefix: 0.0.0.0/0

- name: Create a security group rule for ping
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: icmp
    remote_ip_prefix: 0.0.0.0/0

- name: Another way to create the ping rule
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: icmp
    port_range_min: -1
    port_range_max: -1
    remote_ip_prefix: 0.0.0.0/0

- name: Create a TCP rule covering all ports
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: tcp
    port_range_min: 1
    port_range_max: 65535
    remote_ip_prefix: 0.0.0.0/0

- name: Another way to create the TCP rule above (defaults to all ports)
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: tcp
    remote_ip_prefix: 0.0.0.0/0

- name: Create a rule for VRRP with numbered protocol 112
  openstack.cloud.security_group_rule:
    security_group: loadbalancer_sg
    protocol: 112
    remote_group: loadbalancer-node_sg

- name: Create a security group rule for a given project
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: icmp
    remote_ip_prefix: 0.0.0.0/0
    project: myproj

- name: Remove the default created egress rule for IPv4
  openstack.cloud.security_group_rule:
    cloud: mordred
    security_group: foo
    protocol: any
    remote_ip_prefix: 0.0.0.0/0

返回值

常见返回值记录在 此处,以下是此模块特有的字段

描述

rule

字典

描述安全组规则的字典

返回值:statepresent 时成功返回。

created_at

字符串

资源创建时的时间戳

返回值: 成功

description

字符串

资源的描述

返回值: 成功

direction

字符串

应用安全组规则的方向。

返回值: 成功

示例: "egress"

ether_type

字符串

IPv4 或 IPv6

返回值: 成功

id

字符串

唯一的规则 UUID。

返回值: 成功

name

字符串

资源的名称。

返回值: 成功

port_range_max

整数

安全组规则匹配的范围内的最大端口号。

返回值: 成功

示例: 8000

port_range_min

整数

安全组规则匹配的范围内的最小端口号。

返回值: 成功

示例: 8000

project_id

字符串

资源所属项目的 ID。

返回值: 成功

protocol

字符串

安全组规则匹配的协议。

返回值: 成功

示例: "tcp"

remote_address_group_id

字符串

要与此安全组规则关联的远程地址组 ID。

返回值: 成功

示例: "0.0.0.0/0"

remote_group_id

字符串

要与此安全组规则关联的远程安全组 ID。

返回值: 成功

示例: "0.0.0.0/0"

remote_ip_prefix

字符串

要与此安全组规则关联的远程 IP 前缀。

返回值: 成功

示例: "0.0.0.0/0"

revision_number

整数

修订号

返回值: 成功

示例: 0

security_group_id

字符串

要与此安全组规则关联的安全组 ID。

返回值: 成功

tags

list / elements=string

与资源关联的标签。

返回值: 成功

tenant_id

字符串

资源所属项目的 ID。已弃用。

返回值: 成功

updated_at

字符串

上次更新安全组规则的时间戳。

返回值: 成功

作者

  • OpenStack Ansible SIG