# 03.10 Модуль decort_k8s
## Обзор модуля decort_k8s
Модуль decort_k8s предназначен для выполнения следующих действий над кластерами Kubernetes, созданными в облачной платформе DECORT:
- Создание/удаление кластера Kubernetes.
- Enable/Disable кластера Kubernetes.
- Запуск/Остановка кластера Kubernetes
- Модификация кластера Kubernetes
- Получение идентификатора образа Kubernetes по имени образа.
## Параметры модуля decort_k8s
Ниже приведен полный список параметров для модуля decort_k8s:
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения DECORT_APP_ID. |
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
| authenticator | Значения:
`legacy`
`oauth2`
`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным. |
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме authenticator: jwt Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
| verify_ssl | (bool) | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована. |
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована. |
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, к которому привязан кластер. |
| account_name | (string) | Имя аккаунта, к которому привязан кластер. |
| annotation | (string) | Аннотации для рабочих групп в кластере Kubernetes. |
| quotas | (dict) | Библиотека, содержащая квоты. |
| state | (string) | Состояние кластера. Поддерживаемые состояния: absent, disabled, enabled, present,check. |
| permanent | (bool) | Параметр, отвечающий за полное удаление кластера. При значениие `True` кластер будет полностью удалён, при значении `False` кластер будет перемещён в корзину. |
| started | (bool) | Параметр, отвечающий за запуск кластера после создания. При значении `True`, после создания кластер будет автоматически запущен. |
| name | (string) | Имя кластера Kubernetes. |
| id | (int) | Уникальный целочисленный идентификатор кластера Kubernetes, позволяющий удалять, изменять и получать сведения о кластере Kubernetes. |
| getConfig | (bool) | Параметр, передающий конфигурационный файл кластера Kubernetes, при значении `True`. |
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, в которой находится кластер Kubernetes. |
| rg_name | (int) | Имя ресурсной группы, в которой находится кластер Kubernetes. |
| k8ci_id | (int) | Уникальный целочисленный идентификатор образа кластера Kubernetes. |
| wg_name | (string) | Имя рабочей группы. В кластере может быть несколько рабочих групп. |
| master_count | (int) | Количество master узлов в рабочей группе. По умолчанию: `1`|
| master_cpu | (int) | Количество ядер процессора на каждом master узле. По умолчанию: `2` |
| master_ram_mb | (int) | Объём оперативной памяти на каждом master узле. По умолчанию: `2048` |
| master_disk_gb | (int) | Объём жесткого диска на каждом master узле. По умолчанию: `10` |
| worker_count | (int) | Количество worker узлов в рабочей группе. По умолчанию: `1`|
| worker_cpu | (int) | Количество ядер процессора на каждом worker узле. По умолчанию: `1` |
| worker_ram_mb | (int) | Объём оперативной памяти на каждом worker узле. По умолчанию: `1024` |
| worker_disk_gb | (int) | Объём жесткого диска на каждом worker узле. По умолчанию: `10` |
| workers | (dict) | Библиотека, в которой необходимо указывать рабочие группы и их параметры. См. пример 13.4 |
| extnet_id | (int) | Уникальный целочисленный идентификатор внешней сети, к которой будет подключен кластер при создании. По умолчанию: `0` |
| description | (string) | Описание кластера. По умолчанию: `Created by decort ansible module` |
| with_lb | (bool) | Отвечает за создание Load Balancer при создании кластера. По умолчанию: `True` |
## Возвращаемые значения модуля decort_k8s
Модуль decort_k8s возвращает информацию о кластере в виде словаря facts со следующими ключами:
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| id | int | Уникальный целочисленный идентификатор данного кластера. |
| name | string | Имя данного кластера. |
| techStatus | string | Технический статус кластера. Возможные технические статусы кластера: STARTED, DELETED, STOPPED, CREATED, , DISABLED, ENABLED, RESTORED, MODELED.|
| state | string | Текущий статус кластера. Поддерживаемые состояния: absent, disabled, enabled, present,check. |
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится данный кластер. |
| account_id | int | Уникальный целочисленный идентификатор аккаунта, к которому привязан данный кластер. |
## Пример использования модуля decort_k8s
Пример создания кластера Kubernetes с названием cluster-test.
```
- name: create a cluster named cluster-test
decort_k8s:
state: present
started: True
getConfig: True
authenticator: jwt
jwt: "{{ token.jwt }}"
controller_url: "https://ds1.digitalenergy.online"
name: "cluster-test"
rg_id: 125
k8ci_id: 18
workers:
- name: wg1
ram: 1024
cpu: 10
disk: 10
num: 1
- name: wg2
ram: 1024
cpu: 10
disk: 10
num: 2
verify_ssl: false
delegate_to: localhost
register: kube
```