Initial commit: add project structure and .gitignore
This commit is contained in:
@@ -0,0 +1,263 @@
|
||||
name: zones_v2
|
||||
service_id: 109
|
||||
service_display_name: Управление DNS
|
||||
service_short_name: zonesV2
|
||||
service_man: '# Управление DNS<br/><br/>## Что делает сервис<br/><br/>Управляет DNS-зоной вашего домена в инфраструктуре `ngcloud.ru`.<br/>Сервис помогает:<br/><br/>- создать DNS-зону;<br/>- поддерживать записи в зоне (добавлять, удалять, массово менять);<br/>- удалять зону;<br/>- синхронизировать данные зоны с фактическим состоянием на DNS-серверах.<br/><br/>Сервис работает с авторитетными DNS-серверами зоны:<br/><br/>- `ns3.ngcloud.ru`<br/> - `185.247.187.83`<br/> - `2a10:aa80:0:5::3`<br/>- `ns4.ngcloud.ru`<br/> - `81.22.46.43`<br/> - `2a10:aa80:0:6::3`<br/><br/>## Очень важно: что сделать у регистратора домена<br/><br/>Чтобы зона действительно начала обслуживаться, **нужно делегировать домен** у регистратора на авторитетные DNS-серверы:<br/><br/>- `ns3.ngcloud.ru`<br/>- `ns4.ngcloud.ru`<br/><br/>В панели регистратора нужно заменить NS-серверы домена на значения выше.<br/>Без этого записи в зоне могут быть созданы, но интернет не будет использовать их для вашего домена.<br/><br/>## Проверка после настройки<br/><br/>Проверить ответы от серверов зоны:<br/><br/>```bash<br/>dig <ваш_домен> @ns3.ngcloud.ru<br/>dig <ваш_домен> @ns4.ngcloud.ru<br/>```<br/><br/>Проверить, что делегирование у регистратора применилось:<br/><br/>```bash<br/>dig <ваш_домен> NS<br/>```<br/><br/>В ответе должны быть `ns3.ngcloud.ru` и `ns4.ngcloud.ru`.<br/>'
|
||||
lifecycle:
|
||||
suspend_on_destroy_default: false
|
||||
adopt_existing_on_create_default: false
|
||||
outputs:
|
||||
params:
|
||||
- code: state_params
|
||||
type: map
|
||||
- code: state_out
|
||||
type: map
|
||||
- code: state_params_flat
|
||||
type: map
|
||||
- code: state_out_flat
|
||||
type: map
|
||||
- code: vault_secrets
|
||||
type: map
|
||||
sensitive: true
|
||||
- code: vault_url
|
||||
type: string
|
||||
- code: vault_user_path
|
||||
type: string
|
||||
- code: vault_fields
|
||||
type: list
|
||||
operations:
|
||||
- name: create
|
||||
id: 254
|
||||
kind: instance
|
||||
action: create
|
||||
man: '# Операция `create` (создание DNS-зоны)<br/><br/>## Что делает операция<br/><br/>`create` создает новую DNS-зону на авторитетных серверах сервиса.<br/>После создания зона закрепляется за пользователем, который запустил создание инстанса.<br/><br/>## Когда использовать<br/><br/>- подключаете домен к сервису впервые;<br/>- нужна новая отдельная зона.<br/><br/>## Важное условие после создания<br/><br/>У регистратора домена нужно делегировать зону на:<br/><br/>- `ns3.ngcloud.ru`<br/> - `185.247.187.83`<br/> - `2a10:aa80:0:5::3`<br/>- `ns4.ngcloud.ru`<br/> - `81.22.46.43`<br/> - `2a10:aa80:0:6::3`<br/><br/>Если этого не сделать, зона будет создана технически, но в интернете домен не начнет работать через эти DNS.<br/><br/>## Объяснение параметра `Типа зоны`<br/><br/>### `NATIVE`<br/><br/>Это основная (ведущая) зона в нашем сервисе.<br/>Вы управляете записями здесь, и именно эта зона считается источником правды.<br/><br/>### `SLAVE`<br/><br/>Это копия зоны, которая подтягивает данные с внешнего DNS-сервера.<br/>Такой режим нужен, когда истинный источник записей находится не в нашем сервисе, а на другом DNS.<br/><br/>## Что проверяет операция<br/><br/>- что такая зона еще не существует на целевых DNS;<br/>- корректность входных параметров зоны;<br/>- ограничения на служебные/запрещенные имена зон.'
|
||||
params:
|
||||
- id: 761
|
||||
code: zoneName
|
||||
data_type: string
|
||||
required: true
|
||||
regex: ^([a-z0-9-]+\.)+[a-z0-9-]+$
|
||||
maxlength: 64
|
||||
minlength: 1
|
||||
descr: Имя зоны
|
||||
sort: 20
|
||||
- id: 762
|
||||
code: zoneKind
|
||||
data_type: string
|
||||
required: true
|
||||
default: NATIVE
|
||||
value_list:
|
||||
- NATIVE
|
||||
- SLAVE
|
||||
descr: Тип зоны
|
||||
sort: 30
|
||||
- id: 763
|
||||
code: zoneMastersForSlave
|
||||
data_type: string
|
||||
required: false
|
||||
descr: Использовать если выбран тип SLAVE. IP адреса в формате через пробел для настройки Master-серверов
|
||||
man: Пример:<br/>**8.8.8.8 8.8.4.4**
|
||||
sort: 40
|
||||
- id: 764
|
||||
code: zoneRefresh
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "86400"
|
||||
minvalue: 600
|
||||
descr: Время ожидания ответа вторичного DNS перед запросом SOA-записи с первичных серверов
|
||||
sort: 50
|
||||
- id: 765
|
||||
code: zoneRetry
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "7200"
|
||||
minvalue: 600
|
||||
descr: Время в течение которого сервер повторно попробует синхронизировать информацию с первичных DNS-серверов
|
||||
sort: 60
|
||||
- id: 766
|
||||
code: zoneExpire
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "3600000"
|
||||
minvalue: 3600
|
||||
descr: Время в течение которого вторичный DNS будет пытаться завершить синхронизацию зоны с первичным
|
||||
sort: 70
|
||||
- id: 767
|
||||
code: zoneTTL
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "86400"
|
||||
minvalue: 600
|
||||
descr: Время, в течение которого информация будет кешироваться другими DNS-серверами
|
||||
sort: 80
|
||||
- id: 768
|
||||
code: resourceRealm
|
||||
data_type: string
|
||||
required: true
|
||||
default: powerdns
|
||||
value_list:
|
||||
- powerdns
|
||||
func: getAvailableResourceRealms
|
||||
sort: 10
|
||||
- name: create_record
|
||||
id: 260
|
||||
kind: subresource
|
||||
action: create
|
||||
subresource: record
|
||||
man: '# Операция `create_record` (добавление одной записи)<br/><br/>## Что делает операция<br/><br/>`create_record` точечно добавляет одну DNS-запись в существующую зону.<br/>Если аналогичная запись уже есть, итоговый набор дополняется в рамках логики типа/имени.<br/><br/>## Когда использовать<br/><br/>- нужно добавить одну новую запись без массовой переработки зоны;<br/>- нужно быстро внести точечное изменение.<br/>'
|
||||
params:
|
||||
- id: 777
|
||||
code: recordName
|
||||
data_type: string
|
||||
required: true
|
||||
regex: ^([a-zA-Z0-9\-_]+\.)*[a-zA-Z0-9\-_]+$|^(\d{1,3}\.){3}\d{1,3}$|^.+$
|
||||
unique_scope: parent
|
||||
maxlength: 64
|
||||
minlength: 1
|
||||
man: Имя зоны в конце проставляется автоматически
|
||||
sort: 10
|
||||
- id: 778
|
||||
code: recordTTL
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "3600"
|
||||
maxvalue: 84000
|
||||
minvalue: 30
|
||||
man: Time-to-Leave записи. Раз в какое время запись будет обновлена
|
||||
sort: 20
|
||||
- id: 779
|
||||
code: recordType
|
||||
data_type: string
|
||||
required: true
|
||||
default: A
|
||||
value_list:
|
||||
- A
|
||||
- AAAA
|
||||
- CNAME
|
||||
- MX
|
||||
- SRV
|
||||
- TXT
|
||||
- LUA
|
||||
- NS
|
||||
- SSHFP
|
||||
sort: 30
|
||||
- id: 780
|
||||
code: recordInput
|
||||
data_type: string
|
||||
required: true
|
||||
man: Валидация производится только после запуска операции. Если при указанном типе будет указано некорректно значение, это будет описано в логе ошибки операции
|
||||
sort: 40
|
||||
- name: delete
|
||||
id: 255
|
||||
kind: instance
|
||||
action: delete
|
||||
man: '# Операция `delete` (удаление зоны)<br/><br/>## Что делает операция<br/><br/>`delete` удаляет DNS-зону целиком вместе со всеми записями.<br/><br/>## Когда использовать<br/><br/>- зона больше не нужна;<br/>- домен выводится из эксплуатации в рамках сервиса.<br/><br/>## Важная логика<br/><br/>- удаляется вся зона, а не отдельные записи;<br/>- перед удалением стоит проверить, что домен действительно не используется.<br/>'
|
||||
params: []
|
||||
- name: delete_record
|
||||
id: 261
|
||||
kind: subresource
|
||||
action: delete
|
||||
subresource: record
|
||||
man: '# Операция `delete_record` (удаление записей по имени)<br/><br/>## Что делает операция<br/><br/>`delete_record` удаляет все записи с указанным именем (`recordName`), независимо от типа (`A`, `TXT`, `CNAME` и т.д.).<br/><br/>## Когда использовать<br/><br/>- нужно полностью убрать конкретное имя из зоны;<br/>- требуется быстро очистить все варианты записи для одного имени.<br/><br/>## Важная логика<br/><br/>- удаляются все типы записей для выбранного имени;<br/>- если нужно удалить только один тип записи, лучше использовать `modify_record` с нужным целевым состоянием.<br/>'
|
||||
params:
|
||||
- id: 781
|
||||
code: recordName
|
||||
data_type: string
|
||||
required: true
|
||||
- name: modify
|
||||
id: 256
|
||||
kind: instance
|
||||
action: modify
|
||||
man: '# Операция `modify` (массовое изменение записей зоны)<br/><br/>## Что делает операция<br/><br/>`modify` обновляет записи зоны целиком на основе переданного массива `records`.<br/>Это операция "приведения к целевому состоянию": система берет входной набор и применяет его на DNS-серверах.<br/><br/>## Когда использовать<br/><br/>- нужно массово обновить зону;<br/>- нужно заменить сразу несколько записей одним запуском;<br/>- нужно синхронно привести зону к заранее подготовленному списку записей.<br/><br/>## Важная логика<br/><br/>- запись группируется по `(имя, тип, TTL)`;<br/>- операция ориентирована на полное обновление набора, а не на "точечную мелкую правку".<br/><br/>Для точечных изменений одной записи обычно удобнее `create_record` или `modify_record`.<br/>'
|
||||
params:
|
||||
- id: 769
|
||||
code: records
|
||||
data_type: array-map-fixed
|
||||
required: true
|
||||
sort: 10
|
||||
sub_params:
|
||||
- id: 86
|
||||
code: recordName
|
||||
data_type: string
|
||||
required: true
|
||||
default: ""
|
||||
regex: ^([a-zA-Z0-9\-_]+\.)*[a-zA-Z0-9\-_]+$|^(\d{1,3}\.){3}\d{1,3}$|^.+$
|
||||
man: Имя зоны в конце проставляется автоматически
|
||||
is_modifiable: false
|
||||
- id: 88
|
||||
code: recordTTL
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
default: "3600"
|
||||
man: Time-to-Leave записи. Раз в какое время запись будет обновлена
|
||||
is_modifiable: false
|
||||
- id: 85
|
||||
code: recordType
|
||||
data_type: string
|
||||
required: true
|
||||
default: A
|
||||
value_list:
|
||||
- A
|
||||
- AAAA
|
||||
- CNAME
|
||||
- MX
|
||||
- SRV
|
||||
- TXT
|
||||
- LUA
|
||||
- NS
|
||||
- SSHFP
|
||||
is_modifiable: false
|
||||
- id: 87
|
||||
code: recordInput
|
||||
data_type: string
|
||||
required: true
|
||||
default: ""
|
||||
man: Валидация производится только после запуска операции. Если при указанном типе будет указано некорректно значение, это будет описано в логе ошибки операции
|
||||
is_modifiable: false
|
||||
- name: modify_record
|
||||
id: 262
|
||||
kind: subresource
|
||||
action: modify
|
||||
subresource: record
|
||||
man: '# Операция `modify_record` (изменение конкретной записи)<br/><br/>## Что делает операция<br/><br/>`modify_record` заменяет записи с указанным именем одной новой записью заданного типа и значения.<br/><br/>## Когда использовать<br/><br/>- нужно исправить одну конкретную запись;<br/>- нужно заменить старые значения записи на новое целевое значение.<br/><br/>## Важная логика<br/><br/>- существующие записи выбранного имени очищаются;<br/>- затем добавляется одна новая запись с переданными параметрами.<br/>'
|
||||
params:
|
||||
- id: 783
|
||||
code: recordName
|
||||
data_type: string
|
||||
required: true
|
||||
sort: 10
|
||||
- id: 784
|
||||
code: recordTTL
|
||||
data_type: integer > 0
|
||||
required: true
|
||||
maxvalue: 84000
|
||||
minvalue: 30
|
||||
man: Time-to-Leave записи. Раз в какое время запись будет обновлена
|
||||
sort: 20
|
||||
- id: 785
|
||||
code: recordType
|
||||
data_type: string
|
||||
required: true
|
||||
value_list:
|
||||
- A
|
||||
- AAAA
|
||||
- CNAME
|
||||
- MX
|
||||
- SRV
|
||||
- TXT
|
||||
- LUA
|
||||
- NS
|
||||
- SSHFP
|
||||
sort: 30
|
||||
- id: 786
|
||||
code: recordInput
|
||||
data_type: string
|
||||
required: true
|
||||
man: Валидация производится только после запуска операции. Если при указанном типе будет указано некорректно значение, это будет описано в логе ошибки операции
|
||||
sort: 40
|
||||
- name: reconcile
|
||||
id: 259
|
||||
kind: action
|
||||
action: reconcile
|
||||
man: '# Операция `reconcile` (актуализация состояния зоны)<br/><br/>## Что делает операция<br/><br/>`reconcile` подтягивает актуальное фактическое состояние DNS-зоны и синхронизирует его с данными инстанса.<br/>Операция техническая: она нужна для выравнивания состояния, а не для бизнес-изменений записей.<br/><br/>## Когда использовать<br/><br/>- записи менялись вручную на DNS-серверах;<br/>- нужно обновить схему/состояние инстанса в личном кабинете;<br/>- нужно импортировать текущие записи в управляемое состояние.<br/><br/>## Важная логика<br/><br/>- актуализируется список записей в данных инстанса;<br/>- стандартно ничего "нового" для клиента не добавляет и не удаляет само по себе, а приводит данные к реальности.<br/>'
|
||||
params: []
|
||||
Reference in New Issue
Block a user