google.cloud.gcp_compute_forwarding_rule – Создаёт GCP ForwardingRule
Примечание
Этот плагин входит в коллекцию google.cloud (версия 1.0.1).
Для его установки используйте: ansible-galaxy collection install google.cloud.
Для использования в плейбуке укажите: google.cloud.gcp_compute_forwarding_rule.
Описание
- Ресурс ForwardingRule. Ресурс ForwardingRule указывает, к какому пулу целевых виртуальных машин следует перенаправить пакет, если он соответствует заданной кортеже [IPAddress, IPProtocol, portRange].
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| all_ports boolean |
| Для внутреннего балансирования нагрузки TCP/UDP (т.е. схема балансировки нагрузки INTERNAL и протокол TCP/UDP), установите значение в true, чтобы разрешить пересылку пакетов, адресованных любому порту, на бэкенды, настроенные с этой правилом пересылки. Используется с сервисом бэкенда. Не может быть установлено, если заданы значения port или portRange. |
| allow_global_access boolean |
| Если true, клиенты могут получить доступ к ILB из всех регионов. В противном случае доступ разрешен только из локального региона, в котором находится ILB. |
| auth_kind string / обязательно |
| Тип используемых учетных данных. |
| backend_service dictionary | Сервис бэкенда для приема совпавшего трафика. Используется только для внутреннего балансирования нагрузки. Это поле представляет ссылку на ресурс BackendService в GCP. Его можно указать двумя способами. Во-первых, вы можете поместить словарь с ключом 'selfLink' и значением selfLink вашего ресурса. Во-вторых, вы можете добавить `register: имя_ресурса` в задачу gcp_compute_backend_service, а затем установить это поле backend_service в "{{ имя_ресурса }}" | |
| description string | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. | |
| env_type string | Указывает, в какой среде Ansible вы выполняете этот модуль. Это не следует устанавливать, если вы не знаете, что делаете. Это влияет только на строку User Agent для любых запросов к API. | |
| ip_address string | IP-адрес, который обслуживает это правило пересылки от имени. Адреса ограничены схемой балансировки нагрузки правила пересылки (EXTERNAL или INTERNAL) и областью (глобальной или региональной). Когда схема балансировки EXTERNAL, для глобальных правил пересылки адрес должен быть глобальным IP-адресом, а для региональных правил пересылки — адрес должен находиться в том же регионе, что и правило пересылки. Если это поле пустое, будет назначен временный IPv4-адрес из той же области (глобальной или региональной). Региональное правило пересылки поддерживает только IPv4. Глобальное правило пересылки поддерживает IPv4 или IPv6. Когда схема балансировки INTERNAL, это может быть только IP-адрес RFC 1918, принадлежащий сети/подсети, настроенной для правила пересылки. По умолчанию, если это поле пустое, будет автоматически выделен временный внутренний IP-адрес из диапазона IP-адресов подсети или сети, настроенной для данного правила пересылки. Адрес может быть указан либо как буква IP-адрес, либо как ссылка URL на существующий ресурс Address. Следующие примеры допустимы: * 100.1.2.3 * https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address * projects/project/regions/region/addresses/address * regions/region/addresses/address * global/addresses/address * address . | |
| ip_protocol string | IP-протокол, к которому применяется это правило. При схеме балансировки INTERNAL только TCP и UDP являются допустимыми. Некоторые допустимые варианты включают: "TCP", "UDP", "ESP", "AH", "SCTP", "ICMP" | |
| load_balancing_scheme string | Это указывает, для чего будет использоваться ForwardingRule, и может быть EXTERNAL, INTERNAL или INTERNAL_MANAGED. EXTERNAL используется для шлюзов Classic Cloud VPN, пересылки протоколов на ВМ с внешнего IP-адреса и HTTP(S), SSL Proxy, TCP Proxy и балансировщиков сети TCP/UDP. INTERNAL используется для пересылки протоколов на ВМ с внутреннего IP-адреса и внутренних балансировщиков TCP/UDP. INTERNAL_MANAGED используется для внутренних балансировщиков HTTP(S). Некоторые допустимые варианты включают: "EXTERNAL", "INTERNAL", "INTERNAL_MANAGED" | |
| name string / обязательно | Имя ресурса; предоставляется клиентом при создании ресурса. Имя должно иметь длину от 1 до 63 символов и соответствовать RFC1035. Конкретно, имя должно иметь длину от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы — тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. | |
| network dictionary | Для внутреннего балансирования нагрузки это поле определяет сеть, к которой должен принадлежать IP-адрес, сбалансированный по нагрузке, для данного правила пересылки. Если это поле не указано, используется сеть по умолчанию. Это поле используется только для внутреннего балансирования нагрузки. Это поле представляет ссылку на ресурс Network в GCP. Его можно указать двумя способами. Во-первых, вы можете поместить словарь с ключом 'selfLink' и значением selfLink вашего ресурса. Во-вторых, вы можете добавить `register: имя_ресурса` в задачу gcp_compute_network, а затем установить это поле network в "{{ имя_ресурса }}" | |
| network_tier string | Уровень сети, используемый для настройки этого адреса. Если это поле не указано, предполагается, что оно PREMIUM. Некоторые допустимые варианты включают: "PREMIUM", "STANDARD" | |
| port_range string | Это поле используется вместе с полем target для TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance. Применимо только в том случае, если IPProtocol — TCP, UDP или SCTP; только пакеты, адресованные портам в указанном диапазоне, будут пересылаться на целевой объект. Правила пересылки с одинаковой парой [IPAddress, IPProtocol] должны иметь непересекающиеся диапазоны портов. Некоторые типы целевых объектов пересылки имеют ограничения на допустимые порты: * TargetHttpProxy: 80, 8080 * TargetHttpsProxy: 443 * TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway: 500, 4500 . | |
| ports list / elements=string | Это поле используется вместе с полем backend_service для внутреннего балансирования нагрузки. При схеме балансировки INTERNAL можно настроить отдельный порт или список портов, разделенных запятыми. Только пакеты, адресованные этим портам, будут пересылаться на бэкенды, настроенные с этим правилом пересылки. Вы можете указать не более 5 портов. | |
| project string | Проект Google Cloud Platform, который нужно использовать. | |
| region string / обязательно | Ссылка на регион, в котором находится региональное правило пересылки. Это поле не применимо к глобальным правилам пересылки. | |
| scopes list / elements=string | Массив используемых областей | |
| service_account_contents jsonarg | Содержимое JSON-файла учетной записи сервиса, либо в виде словаря, либо как JSON-строка, его представляющая. | |
| service_account_email string | Необязательный адрес электронной почты учетной записи сервиса, если выбран machineaccount и пользователь не хочет использовать адрес по умолчанию. | |
| service_account_file путь | Путь к JSON-файлу учетной записи сервиса, если в качестве типа выбран serviceaccount. | |
| service_label string | Необязательный префикс имени сервиса для данного правила пересылки. Если указан, будет первым тегом полностью квалифицированного имени сервиса. Тег должен иметь длину от 1 до 63 символов и соответствовать RFC1035. Конкретно, тег должен иметь длину от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы — тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. Это поле используется только для внутреннего балансирования нагрузки. | |
| state string |
| Требуется ли наличие данного объекта в GCP |
| subnetwork dictionary | Подсеть, к которой должен принадлежать сбалансированный по нагрузке IP-адрес для данного правила пересылки. Это поле используется только для внутреннего балансирования нагрузки. Если указанная сеть находится в режиме автоматической подсети, это поле необязательно. Однако, если сеть находится в режиме настраиваемой подсети, подсеть необходимо указать. Это поле представляет ссылку на ресурс Subnetwork в GCP. Его можно указать двумя способами. Во-первых, вы можете поместить словарь с ключом 'selfLink' и значением selfLink вашего ресурса. Во-вторых, вы можете добавить `register: имя_ресурса` в задачу gcp_compute_subnetwork, а затем установить это поле subnetwork в "{{ имя_ресурса }}" | |
| target string | URL целевого ресурса для приема совпавшего трафика. Целевой ресурс должен находиться в том же регионе, что и правило пересылки. Пересылаемый трафик должен быть подходящего типа для целевого объекта. |
Примечания
Примечание
- Ссылка на API: https://cloud.google.com/compute/docs/reference/v1/forwardingRules
- Официальная документация: https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules
- для аутентификации можно установить service_account_file с помощью переменной среды
gcp_service_account_file. - для аутентификации можно установить service_account_contents с помощью переменной среды
GCP_SERVICE_ACCOUNT_CONTENTS. - Для аутентификации можно установить service_account_email с помощью переменной среды
GCP_SERVICE_ACCOUNT_EMAIL. - Для аутентификации можно установить auth_kind с помощью переменной среды
GCP_AUTH_KIND. - Для аутентификации можно установить scopes с помощью переменной среды
GCP_SCOPES. - Значения переменных среды будут использоваться только в том случае, если значения в плейбуке не заданы.
- Параметры service_account_email и service_account_file взаимоисключающие.
Примеры
- name: create a address
google.cloud.gcp_compute_address:
name: address-forwardingrule
region: us-west1
project: "{{ gcp_project }}"
auth_kind: "{{ gcp_cred_kind }}"
service_account_file: "{{ gcp_cred_file }}"
state: present
register: address
- name: create a target pool
google.cloud.gcp_compute_target_pool:
name: targetpool-forwardingrule
region: us-west1
project: "{{ gcp_project }}"
auth_kind: "{{ gcp_cred_kind }}"
service_account_file: "{{ gcp_cred_file }}"
state: present
register: targetpool
- name: create a forwarding rule
google.cloud.gcp_compute_forwarding_rule:
name: test_object
region: us-west1
target: "{{ targetpool }}"
ip_protocol: TCP
port_range: 80-80
ip_address: "{{ address.address }}"
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| allowGlobalAccess boolean | success | Если true, клиенты могут получить доступ к ILB из всех регионов. В противном случае доступ разрешен только из локального региона, в котором находится ILB. |
| allPorts boolean | success | Для внутренней балансировки нагрузки TCP/UDP (т.е. схема балансировки нагрузки INTERNAL, протокол TCP/UDP), установите значение true, чтобы разрешить передачу пакетов, адресованных любым портам, на бэкенды, настроенные с помощью данного правила маршрутизации. Используется с back-end сервисом. Не может быть установлено, если заданы port или portRange. |
| backendService dictionary | success | BackendService для приема сопоставленного трафика. Используется только для внутренней балансировки нагрузки. |
| creationTimestamp string | success | Дата и время создания в формате RFC3339. |
| description string | success | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. |
| id integer | success | Уникальный идентификатор ресурса. |
| IPAddress string | success | IP-адрес, на котором это правило маршрутизации обслуживает трафик. Адреса ограничены схемой балансировки нагрузки правила маршрутизации (EXTERNAL или INTERNAL) и областью (глобальной или региональной). При схеме балансировки EXTERNAL для глобальных правил маршрутизации адрес должен быть глобальным IP-адресом, а для региональных правил маршрутизации - в том же регионе, что и правило маршрутизации. Если это поле пустое, будет назначен временный IPv4-адрес из той же области (глобальной или региональной). Региональное правило маршрутизации поддерживает только IPv4. Глобальное правило маршрутизации поддерживает IPv4 или IPv6. При схеме балансировки INTERNAL это может быть только IP-адрес RFC 1918, принадлежащий сети/подсети, настроенной для правила маршрутизации. По умолчанию, если это поле пустое, будет автоматически выделен временный внутренний IP-адрес из диапазона IP-адресов подсети или сети, настроенной для данного правила маршрутизации. Адрес можно указать как литеральный IP-адрес или ссылкой на существующий ресурс Address. Следующие примеры являются допустимыми: * 100.1.2.3 * https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address * projects/project/regions/region/addresses/address * regions/region/addresses/address * global/addresses/address * address . |
| IPProtocol string | success | IP-протокол, к которому применяется это правило. При схеме балансировки INTERNAL допустимы только TCP и UDP. |
| loadBalancingScheme string | success | Это указывает, для чего будет использоваться ForwardingRule, и может быть EXTERNAL, INTERNAL или INTERNAL_MANAGED. EXTERNAL используется для классических шлюзов VPN Cloud, проксирования протоколов на виртуальные машины с внешнего IP-адреса и HTTP(S), SSL Proxy, TCP Proxy и балансировщиками сети TCP/UDP. INTERNAL используется для проксирования протоколов на виртуальные машины с внутреннего IP-адреса и внутренних балансировщиков TCP/UDP. INTERNAL_MANAGED используется для внутренних балансировщиков HTTP(S). |
| name string | success | Имя ресурса; предоставляется клиентом при создании ресурса. Имя должно быть длиной от 1 до 63 символов и соответствовать RFC1035. Конкретно, имя должно быть длиной от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. |
| network dictionary | success | Для внутренней балансировки нагрузки это поле определяет сеть, к которой должен принадлежать IP-адрес, сбалансированный по нагрузке, для данного правила маршрутизации. Если это поле не указано, будет использоваться сеть по умолчанию. Это поле используется только для внутренней балансировки нагрузки. |
| networkTier string | success | Уровень сети, используемый для настройки этого адреса. Если это поле не указано, предполагается, что это PREMIUM. |
| portRange string | success | Это поле используется вместе с полем target для TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance. Применимо только когда IPProtocol равен TCP, UDP или SCTP, только пакеты, адресованные портам в указанном диапазоне, будут пересылаться целевым устройствам. Правила маршрутизации с одинаковой парой [IPAddress, IPProtocol] должны иметь непересекающиеся диапазоны портов. Некоторые типы целевых устройств имеют ограничения по допустимым портам: * TargetHttpProxy: 80, 8080 * TargetHttpsProxy: 443 * TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 * TargetVpnGateway: 500, 4500 . |
| ports list / elements=string | success | Это поле используется вместе с полем backend_service для внутренней балансировки нагрузки. При схеме балансировки INTERNAL можно настроить один порт или список портов, разделенных запятыми. Только пакеты, адресованные этим портам, будут пересылаться бэкендам, настроенным с помощью данного правила маршрутизации. Можно указать не более 5 портов. |
| region string | success | Ссылка на регион, в котором находится региональное правило маршрутизации. Это поле не применимо к глобальным правилам маршрутизации. |
| serviceLabel string | success | Необязательный префикс к имени службы для этого правила маршрутизации. Если указано, будет первым меткой полностью квалифицированного имени службы. Метка должна быть длиной от 1 до 63 символов и соответствовать RFC1035. Конкретно, метка должна быть длиной от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. Это поле используется только для внутренней балансировки нагрузки. |
| serviceName string | success | Внутреннее полное имя службы для данного правила маршрутизации. Это поле используется только для внутренней балансировки нагрузки. |
| subnetwork dictionary | success | Подсеть, к которой должен принадлежать IP-адрес, сбалансированный по нагрузке, для данного правила маршрутизации. Это поле используется только для внутренней балансировки нагрузки. Если указанная сеть находится в режиме автоматической подсети, это поле необязательно. Однако, если сеть находится в режиме подсети с пользовательской настройкой, подсеть необходимо указать. |
| target string | success | URL целевого ресурса для приема сопоставленного трафика. Целевой ресурс должен находиться в том же регионе, что и правило маршрутизации. Пересылаемый трафик должен соответствовать типу целевого объекта. |
Авторы
- Google Inc. (@googlecloudplatform)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/google/cloud/gcp_compute_forwarding_rule_module.html