Spec-Zone.ru › Ansible

Модуль community.proxmox.proxmox_firewall — управление правилами брандмауэра в Proxmox

Примечание

Этот модуль входит в коллекцию community.proxmox (версия 1.6.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.proxmox. Для использования этого модуля необходимы дополнительные требования; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.proxmox.proxmox_firewall.

Добавлено в community.proxmox 1.4.0

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примеры
  • Возвращаемые значения

Краткое описание

  • создание, обновление и удаление правил FW на уровне кластера, группы, vnet, узла или виртуальной машины
  • создание и удаление групп безопасности брандмауэра
  • создание и удаление псевдонимов

Требования

На узле, выполняющем этот модуль, необходимы следующие компоненты.

  • proxmoxer >= 2.0
  • requests

Параметры

Параметр

Комментарии

aliases

list / elements=dictionary

Список псевдонимов.

Псевдонимы можно создавать, обновлять и удалять только на уровне кластера или виртуальной машины.

cidr

string

CIDR для псевдонима.

Требуется только при state=present или state=update.

comment

string

Комментарий к псевдониму.

name

string / обязательный

Имя псевдонима.

api_host

string / обязательный

Укажите целевой узел кластера Proxmox VE.

Если параметр не указан, используется переменная окружения PROXMOX_HOST.

api_password

string

Укажите пароль для аутентификации.

Если параметр не указан, используется переменная окружения PROXMOX_PASSWORD.

api_port

integer

Укажите целевой порт кластера Proxmox VE.

Если параметр не указан, используется переменная окружения PROXMOX_PORT.

api_timeout

integer

Ограничение времени для запросов к API Proxmox VE.

По умолчанию: 5

api_token_id

string

Укажите идентификатор токена.

Если параметр не указан, используется переменная окружения PROXMOX_TOKEN_ID.

api_token_secret

string

Укажите секретный ключ токена.

Если параметр не указан, используется переменная окружения PROXMOX_TOKEN_SECRET.

api_user

string / обязательный

Укажите пользователя для аутентификации.

Если параметр не указан, используется переменная окружения PROXMOX_USER.

ca_path

path

Путь к локальному сертификату, который будет использоваться для проверки TLS-соединений.

Игнорируется, если validate_certs=false.

comment

string

Комментарий к группе безопасности.

Требуется только при создании группы.

group

string

Имя группы, к которой относится правило.

Требуется только при level=group или group_conf=true.

group_conf

boolean

Следует ли создать или удалить группу безопасности.

Варианты:

  • false ← (по умолчанию)
  • true

ip_sets

list / elements=dictionary

Список определений наборов IP-адресов для создания, обновления или удаления.

Каждый набор IP-адресов — это именованная коллекция CIDR (с необязательными инверсией и комментариями).

cidrs

list / elements=dictionary

Список записей CIDR в наборе IP-адресов.

cidr

string / обязательный

Запись в нотации CIDR.

comment

string

Необязательный комментарий к этой записи CIDR.

nomatch

boolean

Если значение равно true, эта запись CIDR действует как отрицательное совпадение (исключение) в наборе.

Варианты:

  • false ← (по умолчанию)
  • true

comment

string

Необязательный комментарий к набору IP-адресов.

name

string / обязательный

Уникальное имя набора IP-адресов.

level

string

Уровень, на котором применяется правило брандмауэра.

Варианты:

  • "cluster" ← (по умолчанию)
  • "group"
  • "vnet"
  • "node"
  • "vm"

node

string

Имя узла.

Требуется только при level=node.

pos

integer

Позиция правила в списке.

Требуется только при state=absent.

rules

list / elements=dictionary

Список отдельных правил, которые необходимо применить.

action

string / обязательный

Действие правила (‘ACCEPT’, ‘DROP’, ‘REJECT’) или имя группы безопасности.

comment

string

Необязательный комментарий к конкретному правилу.

dest

string

Ограничение адреса назначения пакета.

Можно указать отдельный IP-адрес, набор IP-адресов (‘+ipsetname’) или определение псевдонима IP-адреса.

Также можно указать диапазон адресов, например ‘20.34.101.207-201.3.9.99’, или список IP-адресов и сетей (записи разделяются запятыми).

Не смешивайте адреса IPv4 и IPv6 в таких списках.

digest

string

Запретить изменения, если дайджест текущего файла конфигурации отличается.

Это можно использовать для предотвращения параллельных изменений.

Если значение не указано, оно будет вычислено во время выполнения.

dport

string

Ограничение порта назначения TCP/UDP.

Можно использовать имена служб или простые числа (0–65535), определённые в ‘/etc/services’.

Диапазоны портов можно задать с помощью ‘\d+:\d+’, например ‘80:85’; чтобы указать несколько портов или диапазонов, можно использовать список, разделённый запятыми.

enable

boolean

Включить или отключить правило.

Варианты:

  • false
  • true

icmp_type

string

Укажите тип ICMP. Допустимо только, если значение proto равно ‘icmp’ или ‘icmpv6’/’ipv6-icmp’.

iface

string

Имя сетевого интерфейса. Для виртуальных машин и контейнеров необходимо использовать имена ключей конфигурации сети (‘net\d+’).

Для правил, относящихся к узлу, можно использовать произвольные строки.

log

string

Уровень ведения журнала для правила.

Варианты:

  • "emerg"
  • "alert"
  • "crit"
  • "err"
  • "warning"
  • "notice"
  • "info"
  • "debug"
  • "nolog"

macro

string

Использовать предопределённый стандартный макрос.

pos

integer / обязательный

Позиция правила в списке.

proto

string

Протокол IP. Можно использовать названия протоколов (‘tcp’/’udp’) или простые числа, определённые в ‘/etc/protocols’.

source

string

Ограничение адреса источника пакета.

Можно указать отдельный IP-адрес, набор IP-адресов (‘+ipsetname’) или определение псевдонима IP-адреса.

Также можно указать диапазон адресов, например ‘20.34.101.207-201.3.9.99’, или список IP-адресов и сетей (записи разделяются запятыми).

Не смешивайте адреса IPv4 и IPv6 в таких списках.

sport

string

Ограничение порта источника TCP/UDP.

Можно использовать имена служб или простые числа (0–65535), определённые в ‘/etc/services’.

Диапазоны портов можно задать с помощью ‘\d+:\d+’, например ‘80:85’; чтобы указать несколько портов или диапазонов, можно использовать список, разделённый запятыми.

type

string / обязательный

Тип правила.

Варианты:

  • "in"
  • "out"
  • "forward"
  • "group"

state

string

Создание, обновление или удаление правил брандмауэра либо группы безопасности.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

update

boolean

Если state=present и уже существует одно или несколько правил, псевдонимов или наборов IP-адресов, они будут обновлены.

Варианты:

  • false
  • true ← (по умолчанию)

validate_certs

boolean

Проверять TLS-сертификаты, используемые для подключения к API Proxmox VE.

В настоящее время по умолчанию используется false; начиная с community.proxmox 2.0.0 значение по умолчанию изменится на true.

Если параметр не указан, используется переменная окружения PROXMOX_VALIDATE_CERTS.

Варианты:

  • false
  • true

vmid

integer

Идентификатор виртуальной машины, к которой применяется правило.

Требуется только при level=vm.

vnet

string

Имя виртуальной сети для правила.

Требуется только при level=vnet.

Атрибуты

Атрибут

Поддержка

Описание

action_group

Группа действий: community.proxmox.proxmox

Используйте group/community.proxmox.proxmox в module_defaults, чтобы задать значения по умолчанию для этого модуля.

check_mode

Поддержка: нет

Может выполняться в режиме check_mode и возвращать прогноз статуса изменений без изменения целевого объекта.

diff_mode

Поддержка: нет

В режиме diff будут возвращены сведения об изменениях (или о том, что, возможно, требуется изменить в check_mode).

Примеры

- name: Create firewall rules at cluster level
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    level: cluster
    state: present
    rules:
      - type: out
        action: ACCEPT
        source: 1.1.1.1
        log: nolog
        pos: 9
        enable: true
      - type: out
        action: ACCEPT
        source: 1.0.0.1
        pos: 10
        enable: true

- name: Update Cluster level firewall rules
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    level: cluster
    state: present
    update: true
    rules:
      - type: out
        action: ACCEPT
        source: 8.8.8.8
        log: nolog
        pos: 9
        enable: false
      - type: out
        action: ACCEPT
        source: 8.8.4.4
        pos: 10
        enable: false

- name: Delete cluster level firewall rule at pos 10
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    level: cluster
    state: absent
    pos: 10

- name: Create security group
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    group_conf: true
    state: present
    group: test

- name: Delete security group
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    group_conf: true
    state: absent
    group: test

- name: Create FW aliases
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    state: present
    aliases:
      - name: test1
        cidr: '10.10.1.0/24'
      - name: test2
        cidr: '10.10.2.0/24'

- name: Update FW aliases
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    state: present
    update: true
    aliases:
      - name: test1
        cidr: '10.10.1.0/28'
      - name: test2
        cidr: '10.10.2.0/28'

- name: Delete FW aliases
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    state: absent
    aliases:
      - name: test1
      - name: test2

- name: Create IP SET
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    ip_sets:
      - name: hypervisors
        comment: PVE hosts
        cidrs:
          - cidr: 192.168.1.10
            nomatch: false
            comment: Proxmox pve-01
          - cidr: 192.168.1.11
            nomatch: true
            comment: Proxmox pve-02
      - name: test
        comment: PVE hosts
        cidrs:
          - cidr: 10.10.1.0
            comment: Proxmox pve-01

- name: Delete IP SETs
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    state: absent
    ip_sets:
      - name: hypervisors

- name: Delete specific CIDR from IP SET
  community.proxmox.proxmox_firewall:
    api_user: "{{ pc.proxmox.api_user }}"
    api_token_id: "{{ pc.proxmox.api_token_id }}"
    api_token_secret: "{{ vault.proxmox.api_token_secret }}"
    api_host: "{{ pc.proxmox.api_host }}"
    validate_certs: false
    state: absent
    ip_sets:
      - name: test
        cidrs:
          - cidr: 10.10.1.0

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

group

string

имя созданной или удалённой группы

Возвращается: при успехе

Пример: "test"

Авторы

  • Jana Hoch

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Сообщить о проблеме
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/proxmox/proxmox_firewall_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API