Compare commits
221 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 54c306b13b | |||
| dd2fca15f3 | |||
| aa3f84095f | |||
| ba305a0ccb | |||
|
|
7d60e5f97b | ||
| bbc352715d | |||
| c34f02f7bd | |||
| 3c6ce85dba | |||
| fe1e8a32f9 | |||
| 0ca3399026 | |||
| ce54341a64 | |||
| 7422464109 | |||
| 0c0fde8470 | |||
| aefc920e1a | |||
| b73a57dd0d | |||
| cd663a4a01 | |||
| 0cdfa6a0ec | |||
| 53938d9d94 | |||
| 8e4ce18d8a | |||
| ced031bba8 | |||
| 25795e9fe9 | |||
| a46ed24168 | |||
| 53ba9a4f02 | |||
| 682f19c4ce | |||
| 3516843c41 | |||
| 94586345a1 | |||
| c1dfaccb61 | |||
| d99af4498a | |||
| a0805d45b3 | |||
| 3b2be18346 | |||
| f230325968 | |||
| 1d56940e7e | |||
| 10dba22834 | |||
| b6bbc31961 | |||
| 412bd704f1 | |||
| 77a2b6a182 | |||
| f00055e009 | |||
| 37de8afbc1 | |||
| 53e30105b1 | |||
| 734408ab10 | |||
| 0fcde3f4bd | |||
| 32324ee184 | |||
| 5161649fe9 | |||
| ce4ac4630c | |||
| 8ee5bcce52 | |||
| 1d6141117d | |||
| 5d6a278b8f | |||
| cf4d43d23e | |||
| 11168827e6 | |||
| 2507a65d89 | |||
| 22f487b626 | |||
| 89b03213df | |||
| 96b163ba00 | |||
| 21470542ea | |||
| 7eed30d2ab | |||
| efa60a5caf | |||
| b7b02fdb85 | |||
| c5f2e143ba | |||
| 68f4bcbcc6 | |||
| a94a5a2e62 | |||
| 3b84a5f633 | |||
| 2d04cad3d4 | |||
| f12e6fc941 | |||
| 02e55e77f4 | |||
| dac66fac77 | |||
| 3ce022a800 | |||
| 59000feb00 | |||
| 614c7d98d9 | |||
| 3428b74b00 | |||
| 36930bda0d | |||
|
|
eb91d5200f | ||
| d7711e58ca | |||
| d287c88293 | |||
| 309d5b91eb | |||
| db854acc11 | |||
| 7b682f0340 | |||
| b51136b711 | |||
|
|
daa91bee95 | ||
|
|
5227e2be0b | ||
| 9ccf2de256 | |||
| 825ce068c8 | |||
| efb51ab8b4 | |||
| 190a1d302c | |||
| 840e4bec21 | |||
| f22be4fe08 | |||
| 4b1a7d9d9e | |||
| 3a2d9904cf | |||
| 9393bb76cc | |||
| 27e7c2749f | |||
| e578742bb2 | |||
| 7998046cfb | |||
| 06b4686e18 | |||
| cb13649586 | |||
| 7e372511bc | |||
| bb8e9ad6f7 | |||
| 3fec6f014b | |||
| 4a08cd86f6 | |||
| 3dc9cbcbd8 | |||
| 0008372e6b | |||
| 5c3194b94d | |||
| 20b9228351 | |||
| 9449afa2ac | |||
| b2477d2035 | |||
| ea63959289 | |||
| b3b47c57a1 | |||
| bb6394873b | |||
| ff1c43e8de | |||
| 6b4957f8aa | |||
| d824e599b9 | |||
| b1f2167d00 | |||
| aad2f89e6d | |||
| 4311eee435 | |||
| 3bdac96760 | |||
| a6a6954d46 | |||
| 6d003e4541 | |||
| 0ae16ddc1d | |||
| c5f68fea38 | |||
| 23ad78b1cf | |||
| 93a929aff5 | |||
| 90ae212d0c | |||
| 421d19bfa8 | |||
| 41731c3dd7 | |||
| 034aeca3f0 | |||
| db67a3b2d2 | |||
| af6eff33f7 | |||
| ca45f49c2e | |||
| 88d9ddcdbe | |||
| 876ff5b98d | |||
| c46edd4f86 | |||
| 9ce5a3d711 | |||
| 38757aa902 | |||
| 56f7f354c1 | |||
| 2b09b9449a | |||
| eb0766b15f | |||
| d7a32376db | |||
| 8a9c354f20 | |||
| 1e994410fe | |||
| e2bbeb7ffb | |||
| 2777059b6b | |||
| 38f11ee480 | |||
| dc24c0e7ee | |||
| 9a5fd176f0 | |||
| 279d60083d | |||
| 1d53fd3213 | |||
| a0da034499 | |||
| e5504b3ac9 | |||
| 2eb43815e7 | |||
| 2f9716a51d | |||
| aa96af1455 | |||
| a39ab95c1f | |||
| 76a1ff1788 | |||
| 9dc3a5e780 | |||
| ff32b509f8 | |||
| 5b731d009b | |||
| 57dba89b5a | |||
| 007c7f4bad | |||
|
|
7f87642b47 | ||
| 2873e4da82 | |||
| 9c97f4b645 | |||
| 772f389d98 | |||
| 36e1383c7e | |||
| 35fe2bdf0e | |||
| 7e7a4898ec | |||
| fde986bb42 | |||
| 538c7e6f47 | |||
| 53634b7fa5 | |||
| b68e562fc1 | |||
| df619e7998 | |||
|
|
877b84d650 | ||
| 10b98b7c4a | |||
| 51707cbb69 | |||
| 3f4cfd40d6 | |||
|
|
4cf0316dad | ||
| abcb7d52f8 | |||
|
|
8a6d624069 | ||
|
|
2b96881849 | ||
| 6725e4342e | |||
| 5003991cf5 | |||
| 8a99097b6c | |||
| 6a99ea4d85 | |||
| 236c3b6d26 | |||
| bcf384a910 | |||
| 8cf3d05d0b | |||
| 5da120f2d3 | |||
| 6abd78882c | |||
| 7fa2d07ab0 | |||
| 8b407c6f69 | |||
| 4c4be07550 | |||
|
|
eb542fa46c | ||
| 240e2ce2df | |||
|
|
f4fcf5b7b7 | ||
|
|
d2dabdb194 | ||
| 694e68fe22 | |||
| 9e7a33a44a | |||
|
|
31b72b3806 | ||
|
|
fa79b90269 | ||
|
|
aa9f26bf1a | ||
| 6cd828d031 | |||
| d50509e0c3 | |||
| a45ab19d38 | |||
|
|
a3c1dcad7a | ||
|
|
9bf50c958f | ||
|
|
d769119ade | ||
| 200e8f7151 | |||
| f11ec8fefb | |||
| 19534384a8 | |||
| 1304a0fcbf | |||
|
|
a5f03389f2 | ||
|
|
6760167e4e | ||
|
|
2b4ba7ee55 | ||
|
|
5b66c98cc6 | ||
|
|
55268beaad | ||
| b18bdef269 | |||
| 21e853c1f2 | |||
| 1c6b46c535 | |||
| 058de4884f | |||
|
|
d622dd8453 | ||
|
|
e26011ab20 | ||
|
|
f2e9b550bb | ||
|
|
a8f50bfb6b | ||
|
|
9222fdd866 |
88
CHANGELOG.md
Normal file
88
CHANGELOG.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Список изменений в версии 6.1.0
|
||||
|
||||
## Добавлено
|
||||
|
||||
### Модуль decort_kvmvm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-602 | Добавлена возможность изменения параметра `chipset` у существующей виртуальной машины. |
|
||||
| BANS-620 | Добавлены параметры `cpu_pin`, `hp_backed`, `numa_affinity` для создания и изменения виртуальной машины. |
|
||||
| BANS-622 | Добавлена возможность изменения параметра `description` у существующей виртуальной машины. |
|
||||
| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.|
|
||||
| BANS-625 | Добавлен параметр `custom_fields` для создания и изменения виртуальной машины.|
|
||||
|
||||
### Модуль decort_k8s
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-598 | Добавлен параметр `master_chipset` для указания чипсета для master-узлов при создании кластера и параметр `workers.chipset` для указания чипсета для worker-узлов.<br>Для параметров `workers.annotations`, `workers.chipset`, `workers.ci_user_data`, `workers.cpu`, `workers.labels`, `workers.num`, `workers.ram`, `workers.taints` установлены значения по умолчанию при создании.|
|
||||
|
||||
### Модуль decort_disk
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.|
|
||||
|
||||
### Модуль decort_lb
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.|
|
||||
|
||||
### Модуль decort_vins
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.|
|
||||
|
||||
### Модуль decort_rg
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.|
|
||||
|
||||
## Удалено
|
||||
|
||||
### Модуль decort_group
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-656 | Удалён неиспользуемый ключ `config` в возвращаемом словаре. |
|
||||
| BANS-201 | Удалены неиспользуемые параметры `annotation` и `description`.|
|
||||
|
||||
### Модуль decort_disk
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.|
|
||||
|
||||
### Модуль decort_kvmvm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.|
|
||||
|
||||
### Модуль decort_lb
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.|
|
||||
|
||||
### Модуль decort_rg
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.|
|
||||
|
||||
### Модуль decort_vins
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.|
|
||||
|
||||
### Модуль decort_bservice
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удалены неиспользуемые параметры `annotation` и `description`.|
|
||||
|
||||
### Модуль decort_k8s
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-201 | Удален неиспользуемый параметр `annotation`.|
|
||||
|
||||
## Исправлено
|
||||
|
||||
### Модуль decort_kvmvm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-9 | Исправлена ошибка, из-за которой модуль не устанавливал параметр `description` при создании виртуальной машины. |
|
||||
| BANS-13 | Исправлена ошибка, из-за которой модуль не возвращал ошибку при попытке уменьшить размер загрузочного диска. |
|
||||
24
README.md
24
README.md
@@ -1,12 +1,18 @@
|
||||
# decort-ansible
|
||||
Ansible modules for Digital Energy Orchestration Technology (DECORT) platform v3.6.1 and above.
|
||||
Модули Ansible для платформы Digital Energy Orchestration Technology (DECORT).
|
||||
|
||||
Note that this module may produce unreliable results when used with older DECORT API versions.
|
||||
## Соответствие версий платформы версиям модулей Ansible
|
||||
|
||||
Requirements:
|
||||
* Ansible 2.7 or higher
|
||||
* Python 3.7 or higher
|
||||
* PyJWT 2.0.0 Python module or higher
|
||||
* requests Python module
|
||||
* netaddr Python module
|
||||
* DECORT cloud platform version 3.8.7 or higher
|
||||
| Версия платформы | Версия модулей Ansible |
|
||||
|:----------------:|:--------------------------:|
|
||||
| 4.1.0 | 6.0.x, 6.1.x |
|
||||
| 4.0.0 | 5.6.x, 5.5.x, 5.4.x, 5.3.x |
|
||||
| 3.8.8, 3.8.9 | 5.2.6 |
|
||||
| 3.8.7 | 5.2.5 |
|
||||
| 3.8.6 | 5.2.4 |
|
||||
|
||||
## Ссылки
|
||||
|
||||
- [Документация](./wiki/Home.md)
|
||||
|
||||
- [Список изменений](./CHANGELOG.md)
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
#
|
||||
# DECORT kvmvm module example
|
||||
#
|
||||
- hosts: ansible_master
|
||||
tasks:
|
||||
- name: create a VM named cloud-init_example
|
||||
decort_kvmvm:
|
||||
annotation: "VM managed by decort_kvmvm module"
|
||||
authenticator: oauth2
|
||||
app_id: "" # Application id from SSO Digital Energy
|
||||
app_secret: "" # API key from SSO Digital Energy
|
||||
controller_url: "" #"https://mr4.digitalenergy.online"
|
||||
name: cloud-init_example
|
||||
cpu: 2
|
||||
ram: 2048
|
||||
boot_disk: 10
|
||||
image_name: "DECS Ubuntu 18.04 v1.2.3" #Name of OS image
|
||||
networks:
|
||||
- type: VINS
|
||||
id: #VINS id
|
||||
tags: "Ansible cloud init example"
|
||||
state: present
|
||||
rg_id: #Resource group id
|
||||
ci_user_data:
|
||||
- packages:
|
||||
- apache2
|
||||
- write_files:
|
||||
- content: |
|
||||
<div>
|
||||
Hello World!
|
||||
</div>
|
||||
owner: user:user
|
||||
path: /var/www/html/index.html
|
||||
- hostname: test-apache
|
||||
- ssh_keys:
|
||||
- rsa_public: ssh-rsa AAAAOasDmLxnD= user@pc
|
||||
delegate_to: localhost
|
||||
register: simple_vm
|
||||
@@ -22,17 +22,17 @@
|
||||
state: present
|
||||
rg_id: #Resource group id
|
||||
ci_user_data:
|
||||
- packages:
|
||||
- apache2
|
||||
- write_files:
|
||||
- content: |
|
||||
<div>
|
||||
Hello World!
|
||||
</div>
|
||||
owner: user:user
|
||||
path: /var/www/html/index.html
|
||||
- hostname: test-apache
|
||||
- ssh_keys:
|
||||
- rsa_public: ssh-rsa AAAAOasDmLxnD= user@pc
|
||||
packages:
|
||||
- apache2
|
||||
write_files:
|
||||
- content: |
|
||||
<div>
|
||||
Hello World!
|
||||
</div>
|
||||
owner: user:user
|
||||
path: /var/www/html/index.html
|
||||
hostname: test-apache
|
||||
ssh_keys:
|
||||
- rsa_public: ssh-rsa AAAAOasDmLxnD= user@pc
|
||||
delegate_to: localhost
|
||||
register: simple_vm
|
||||
|
||||
369
library/decort_account.py
Normal file
369
library/decort_account.py
Normal file
@@ -0,0 +1,369 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_account
|
||||
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from typing import Iterable
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.decort_utils import DecortController
|
||||
|
||||
|
||||
class DecortAccount(DecortController):
|
||||
OBJ = 'account'
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(AnsibleModule(**self.amodule_init_args))
|
||||
self.check_amodule_args()
|
||||
|
||||
@property
|
||||
def amodule_init_args(self) -> dict:
|
||||
return self.pack_amodule_init_args(
|
||||
argument_spec=dict(
|
||||
access_emails=dict(
|
||||
type='bool',
|
||||
),
|
||||
acl=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
mode=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
'match',
|
||||
'revoke',
|
||||
'update',
|
||||
],
|
||||
default='update',
|
||||
),
|
||||
users=dict(
|
||||
type='list',
|
||||
required=True,
|
||||
elements='dict',
|
||||
options=dict(
|
||||
rights=dict(
|
||||
type='str',
|
||||
choices=['R', 'RCX', 'ARCXDU'],
|
||||
default='R',
|
||||
),
|
||||
id=dict(
|
||||
type='str',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
quotas=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
cpu=dict(
|
||||
type='int',
|
||||
),
|
||||
disks_size=dict(
|
||||
type='int',
|
||||
),
|
||||
ext_traffic=dict(
|
||||
type='int',
|
||||
),
|
||||
gpu=dict(
|
||||
type='int',
|
||||
),
|
||||
public_ip=dict(
|
||||
type='int',
|
||||
),
|
||||
ram=dict(
|
||||
type='int',
|
||||
),
|
||||
),
|
||||
),
|
||||
state=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
'absent',
|
||||
'absent_permanently',
|
||||
'confirmed',
|
||||
'disabled',
|
||||
'present',
|
||||
],
|
||||
default='present',
|
||||
),
|
||||
sep_pools=dict(
|
||||
type='list',
|
||||
elements='dict',
|
||||
options=dict(
|
||||
sep_id=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
pool_names=dict(
|
||||
type='list',
|
||||
required=True,
|
||||
elements='str',
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
required_one_of=[
|
||||
('id', 'name')
|
||||
],
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
def check_amodule_args(self):
|
||||
"""
|
||||
Additional Ansible Module arguments validation that
|
||||
cannot be implemented using Ansible Argument spec.
|
||||
"""
|
||||
|
||||
arg_state = self.aparams['state']
|
||||
if 'absent' in arg_state:
|
||||
# Parameters or combinations of parameters that can
|
||||
# cause changing the object.
|
||||
changing_params = [
|
||||
'access_emails',
|
||||
'acl',
|
||||
['id', 'name'],
|
||||
'quotas',
|
||||
]
|
||||
check_error = False
|
||||
for elem in changing_params:
|
||||
if isinstance(elem, str):
|
||||
param = elem
|
||||
if self.aparams[elem] is not None:
|
||||
self.message(
|
||||
f'If the parameter "state" is set to'
|
||||
f' "{arg_state}", then using the parameter'
|
||||
f' "{param}" is not allowed.'
|
||||
)
|
||||
check_error = True
|
||||
elif isinstance(elem, Iterable):
|
||||
params = elem
|
||||
params_using = map(
|
||||
lambda x: self.aparams[x] is not None, params
|
||||
)
|
||||
if all(params_using):
|
||||
params_str = ', '.join(f'"{p}"' for p in params)
|
||||
self.message(
|
||||
f'If the parameter "state" is set to'
|
||||
f' "{arg_state}", then using the combination'
|
||||
f' of parameters {params_str} are not allowed.'
|
||||
)
|
||||
check_error = True
|
||||
if check_error:
|
||||
self.exit(fail=True)
|
||||
|
||||
def run(self):
|
||||
self.get_info()
|
||||
self.change()
|
||||
self.exit()
|
||||
|
||||
def get_info(self):
|
||||
# If this is the first getting info
|
||||
if not getattr(self, 'id', None):
|
||||
self.id, self.facts = self.account_find(
|
||||
account_name=self.aparams['name'],
|
||||
account_id=self.aparams['id'],
|
||||
)
|
||||
# If this is a repeated getting info
|
||||
else:
|
||||
# If check mode is enabled, there is no needed to
|
||||
# request info again
|
||||
if not self.amodule.check_mode:
|
||||
self.id, self.facts = self.account_find(account_id=self.id)
|
||||
|
||||
def change(self):
|
||||
self.change_state()
|
||||
|
||||
self.change_acl()
|
||||
|
||||
if self.account_update_args:
|
||||
self.account_update(account_id=self.id,
|
||||
**self.account_update_args)
|
||||
self.get_info()
|
||||
|
||||
def change_state(self):
|
||||
match self.facts:
|
||||
case None:
|
||||
self.message(self.MESSAGES.obj_not_found(obj=self.OBJ))
|
||||
match self.aparams:
|
||||
case {'state': 'absent' | 'absent_permanently'}:
|
||||
pass
|
||||
case {'state': 'confirmed' | 'disabled' | 'present'}:
|
||||
self.exit(fail=True)
|
||||
case {'status': 'DESTROYED'}:
|
||||
match self.aparams:
|
||||
case {'state': 'absent' | 'absent_permanently'}:
|
||||
self.message(
|
||||
self.MESSAGES.obj_deleted(
|
||||
obj=self.OBJ,
|
||||
id=self.id,
|
||||
permanently=True,
|
||||
already=True,
|
||||
)
|
||||
)
|
||||
case {'state': 'confirmed' | 'disabled' | 'present'}:
|
||||
self.message(
|
||||
self.MESSAGES.obj_not_restored(obj=self.OBJ,
|
||||
id=self.id)
|
||||
)
|
||||
self.exit(fail=True)
|
||||
case {'status': 'DELETED'}:
|
||||
match self.aparams:
|
||||
case {'state': 'absent'}:
|
||||
self.message(
|
||||
self.MESSAGES.obj_deleted(
|
||||
obj=self.OBJ,
|
||||
id=self.id,
|
||||
permanently=False,
|
||||
already=True,
|
||||
)
|
||||
)
|
||||
case {'state': 'absent_permanently'}:
|
||||
self.delete(permanently=True)
|
||||
case {'state': 'confirmed' | 'present'}:
|
||||
self.restore()
|
||||
case {'state': 'disabled'}:
|
||||
self.restore()
|
||||
self.disable()
|
||||
case {'status': 'CONFIRMED'}:
|
||||
match self.aparams:
|
||||
case {'state': 'absent'}:
|
||||
self.delete()
|
||||
case {'state': 'absent_permanently'}:
|
||||
self.delete(permanently=True)
|
||||
case {'state': 'confirmed' | 'present'}:
|
||||
pass
|
||||
case {'state': 'disabled'}:
|
||||
self.disable()
|
||||
case {'status': 'DISABLED'}:
|
||||
match self.aparams:
|
||||
case {'state': 'absent'}:
|
||||
self.delete()
|
||||
case {'state': 'absent_permanently'}:
|
||||
self.delete(permanently=True)
|
||||
case {'state': 'confirmed'}:
|
||||
self.enable()
|
||||
case {'state': 'present' | 'disabled'}:
|
||||
pass
|
||||
|
||||
def delete(self, permanently=False):
|
||||
self.account_delete(account_id=self.id, permanently=permanently)
|
||||
self.get_info()
|
||||
|
||||
def disable(self):
|
||||
self.account_disable(account_id=self.id)
|
||||
self.get_info()
|
||||
|
||||
def enable(self):
|
||||
self.account_enable(account_id=self.id)
|
||||
self.get_info()
|
||||
|
||||
def restore(self):
|
||||
self.account_restore(account_id=self.id)
|
||||
self.get_info()
|
||||
|
||||
def change_acl(self):
|
||||
if not self.aparams['acl']:
|
||||
return
|
||||
|
||||
actual_users = {u['userGroupId']: u['right'] for u in self.facts['acl']}
|
||||
actual_users_ids = set(actual_users.keys())
|
||||
|
||||
aparams_acl = self.aparams['acl']
|
||||
aparams_users = {u['id']: u['rights'] for u in aparams_acl['users']}
|
||||
aparams_users_ids = set(aparams_users.keys())
|
||||
|
||||
del_users_ids = None
|
||||
upd_users = None
|
||||
new_users = None
|
||||
|
||||
match aparams_acl:
|
||||
case {'mode': 'revoke'}:
|
||||
del_users_ids = aparams_users_ids.intersection(actual_users_ids)
|
||||
case {'mode': 'update' | 'match' as mode}:
|
||||
new_users_ids = aparams_users_ids.difference(actual_users_ids)
|
||||
new_users = dict(
|
||||
u for u in aparams_users.items() if u[0] in new_users_ids
|
||||
)
|
||||
|
||||
upd_users_ids =\
|
||||
aparams_users_ids.intersection(actual_users_ids)
|
||||
upd_users = dict()
|
||||
for id in upd_users_ids:
|
||||
if actual_users[id] == 'CXDRAU':
|
||||
actual_user_rights = 'ARCXDU'
|
||||
else:
|
||||
actual_user_rights = actual_users[id]
|
||||
|
||||
if actual_user_rights != aparams_users[id]:
|
||||
upd_users[id] = aparams_users[id]
|
||||
|
||||
if mode == 'match':
|
||||
del_users_ids =\
|
||||
actual_users_ids.difference(aparams_users_ids)
|
||||
|
||||
if del_users_ids or new_users or upd_users:
|
||||
self.account_change_acl(account_id=self.id,
|
||||
del_users=del_users_ids,
|
||||
add_users=new_users,
|
||||
upd_users=upd_users)
|
||||
self.get_info()
|
||||
|
||||
@property
|
||||
def account_update_args(self) -> dict:
|
||||
result_args = dict()
|
||||
|
||||
aparam_access_emails = self.aparams['access_emails']
|
||||
if (aparam_access_emails is not None
|
||||
and self.facts['sendAccessEmails'] != aparam_access_emails):
|
||||
result_args['access_emails'] = aparam_access_emails
|
||||
|
||||
aparam_name = self.aparams['name']
|
||||
if (self.aparams['id'] and aparam_name
|
||||
and self.facts['name'] != aparam_name):
|
||||
result_args['name'] = aparam_name
|
||||
|
||||
aparam_quotas = self.aparams['quotas']
|
||||
if aparam_quotas:
|
||||
quotas_naming = [
|
||||
['cpu', 'CU_C', 'cpu_quota'],
|
||||
['disks_size', 'CU_DM', 'disks_size_quota'],
|
||||
['ext_traffic', 'CU_NP', 'ext_traffic_quota'],
|
||||
['gpu', 'gpu_units', 'gpu_quota'],
|
||||
['public_ip', 'CU_I', 'public_ip_quota'],
|
||||
['ram', 'CU_M', 'ram_quota'],
|
||||
]
|
||||
for aparam, info_key, result_arg in quotas_naming:
|
||||
current_value = int(self.facts['resourceLimits'][info_key])
|
||||
if (aparam_quotas[aparam] is not None
|
||||
and current_value != aparam_quotas[aparam]):
|
||||
result_args[result_arg] = aparam_quotas[aparam]
|
||||
|
||||
aparam_sep_pools = self.aparams['sep_pools']
|
||||
if aparam_sep_pools is not None:
|
||||
sep_pools = set()
|
||||
for sep in aparam_sep_pools:
|
||||
for pool_name in sep['pool_names']:
|
||||
sep_pools.add(
|
||||
f'{sep["sep_id"]}_{pool_name}'
|
||||
)
|
||||
if set(self.facts['uniqPools']) != sep_pools:
|
||||
result_args['sep_pools'] = sep_pools
|
||||
return result_args
|
||||
|
||||
|
||||
def main():
|
||||
DecortAccount().run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
578
library/decort_account_info.py
Normal file
578
library/decort_account_info.py
Normal file
@@ -0,0 +1,578 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_account_info
|
||||
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.decort_utils import DecortController
|
||||
|
||||
|
||||
class DecortAccountInfo(DecortController):
|
||||
def __init__(self):
|
||||
super().__init__(AnsibleModule(**self.amodule_init_args))
|
||||
|
||||
@property
|
||||
def amodule_init_args(self) -> dict:
|
||||
return self.pack_amodule_init_args(
|
||||
argument_spec=dict(
|
||||
audits=dict(
|
||||
type='bool',
|
||||
default=False
|
||||
),
|
||||
computes=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
ext_net_id=dict(
|
||||
type='int',
|
||||
),
|
||||
ext_net_name=dict(
|
||||
type='str'
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
ip=dict(
|
||||
type='str'
|
||||
),
|
||||
name=dict(
|
||||
type='str'
|
||||
),
|
||||
rg_id=dict(
|
||||
type='int',
|
||||
),
|
||||
rg_name=dict(
|
||||
type='str'
|
||||
),
|
||||
tech_status=dict(
|
||||
type='str',
|
||||
choices=self.COMPUTE_TECH_STATUSES,
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=\
|
||||
self.FIELDS_FOR_SORTING_ACCOUNT_COMPUTE_LIST,
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
disks=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
),
|
||||
type=dict(
|
||||
type='str',
|
||||
choices=self.DISK_TYPES,
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=\
|
||||
self.FIELDS_FOR_SORTING_ACCOUNT_DISK_LIST,
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
flip_groups=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
ext_net_id=dict(
|
||||
type='int',
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
ip=dict(
|
||||
type='str',
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
vins_id=dict(
|
||||
type='int',
|
||||
),
|
||||
vins_name=dict(
|
||||
type='str',
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
images=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
type=dict(
|
||||
type='str',
|
||||
choices=self.IMAGE_TYPES,
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=\
|
||||
self.FIELDS_FOR_SORTING_ACCOUNT_IMAGE_LIST,
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
resource_groups=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str'
|
||||
),
|
||||
status=dict(
|
||||
type='str',
|
||||
choices=self.RESOURCE_GROUP_STATUSES,
|
||||
),
|
||||
vins_id=dict(
|
||||
type='int'
|
||||
),
|
||||
vm_id=dict(
|
||||
type='int'
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=\
|
||||
self.FIELDS_FOR_SORTING_ACCOUNT_RG_LIST,
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
resource_consumption=dict(
|
||||
type='bool',
|
||||
default=False
|
||||
),
|
||||
vinses=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
ext_ip=dict(
|
||||
type='str',
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str'
|
||||
),
|
||||
rg_id=dict(
|
||||
type='int',
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=\
|
||||
self.FIELDS_FOR_SORTING_ACCOUNT_VINS_LIST,
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
mutually_exclusive=[
|
||||
('id', 'name')
|
||||
],
|
||||
required_one_of=[
|
||||
('id', 'name')
|
||||
],
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
@property
|
||||
def mapped_computes_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `computes` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_computes`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['computes']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['compute_id'] = input_args['filter']['id']
|
||||
mapped_args['compute_ip'] = input_args['filter']['ip']
|
||||
mapped_args['compute_name'] = input_args['filter']['name']
|
||||
mapped_args['compute_tech_status'] =\
|
||||
input_args['filter']['tech_status']
|
||||
mapped_args['ext_net_id'] = input_args['filter']['ext_net_id']
|
||||
mapped_args['ext_net_name'] =\
|
||||
input_args['filter']['ext_net_name']
|
||||
mapped_args['rg_id'] = input_args['filter']['rg_id']
|
||||
mapped_args['rg_name'] = input_args['filter']['rg_name']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
if input_args['sorting']:
|
||||
mapped_args['sort_by_asc'] =\
|
||||
input_args['sorting']['asc']
|
||||
mapped_args['sort_by_field'] =\
|
||||
input_args['sorting']['field']
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_disks_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `disks` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_disks`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['disks']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['disk_id'] = input_args['filter']['id']
|
||||
mapped_args['disk_name'] = input_args['filter']['name']
|
||||
mapped_args['disk_size'] = input_args['filter']['size']
|
||||
mapped_args['disk_type'] = input_args['filter']['type']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
if input_args['sorting']:
|
||||
mapped_args['sort_by_asc'] =\
|
||||
input_args['sorting']['asc']
|
||||
mapped_args['sort_by_field'] =\
|
||||
input_args['sorting']['field']
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_flip_groups_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `flip_groups` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_flip_groups`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['flip_groups']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['ext_net_id'] = input_args['filter']['ext_net_id']
|
||||
mapped_args['flig_group_id'] = input_args['filter']['id']
|
||||
mapped_args['flig_group_ip'] = input_args['filter']['ip']
|
||||
mapped_args['flig_group_name'] = input_args['filter']['name']
|
||||
mapped_args['vins_id'] = input_args['filter']['vins_id']
|
||||
mapped_args['vins_name'] = input_args['filter']['vins_name']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_images_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `images` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_images`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['images']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['image_id'] = input_args['filter']['id']
|
||||
mapped_args['image_name'] = input_args['filter']['name']
|
||||
mapped_args['image_type'] = input_args['filter']['type']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
if input_args['sorting']:
|
||||
mapped_args['sort_by_asc'] =\
|
||||
input_args['sorting']['asc']
|
||||
mapped_args['sort_by_field'] =\
|
||||
input_args['sorting']['field']
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_rg_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `resource_groups` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_resource_groups`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['resource_groups']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['rg_id'] =\
|
||||
input_args['filter']['id']
|
||||
mapped_args['rg_name'] =\
|
||||
input_args['filter']['name']
|
||||
mapped_args['rg_status'] =\
|
||||
input_args['filter']['status']
|
||||
mapped_args['vins_id'] =\
|
||||
input_args['filter']['vins_id']
|
||||
mapped_args['vm_id'] =\
|
||||
input_args['filter']['vm_id']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
if input_args['sorting']:
|
||||
mapped_args['sort_by_asc'] =\
|
||||
input_args['sorting']['asc']
|
||||
mapped_args['sort_by_field'] =\
|
||||
input_args['sorting']['field']
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_vinses_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `vinses` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.account_vinses`
|
||||
(excluding for `account_id`).
|
||||
"""
|
||||
|
||||
input_args = self.aparams['vinses']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
if input_args['filter']:
|
||||
mapped_args['vins_id'] = input_args['filter']['id']
|
||||
mapped_args['vins_name'] = input_args['filter']['name']
|
||||
mapped_args['ext_ip'] = input_args['filter']['ext_ip']
|
||||
mapped_args['rg_id'] = input_args['filter']['rg_id']
|
||||
if input_args['pagination']:
|
||||
mapped_args['page_number'] =\
|
||||
input_args['pagination']['number']
|
||||
mapped_args['page_size'] =\
|
||||
input_args['pagination']['size']
|
||||
if input_args['sorting']:
|
||||
mapped_args['sort_by_asc'] =\
|
||||
input_args['sorting']['asc']
|
||||
mapped_args['sort_by_field'] =\
|
||||
input_args['sorting']['field']
|
||||
|
||||
return mapped_args
|
||||
|
||||
def run(self):
|
||||
self.get_info()
|
||||
self.exit()
|
||||
|
||||
def get_info(self):
|
||||
self.id, self.facts = self.account_find(
|
||||
account_name=self.aparams['name'],
|
||||
account_id=self.aparams['id'],
|
||||
audits=self.aparams['audits'],
|
||||
computes_args=self.mapped_computes_args,
|
||||
disks_args=self.mapped_disks_args,
|
||||
flip_groups_args=self.mapped_flip_groups_args,
|
||||
images_args=self.mapped_images_args,
|
||||
resource_consumption=self.aparams['resource_consumption'],
|
||||
resource_groups_args=self.mapped_rg_args,
|
||||
vinses_args=self.mapped_vinses_args,
|
||||
fail_if_not_found=True,
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
DecortAccountInfo().run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -1,29 +1,23 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Alexey Dankov (alexey Dankov@digitalenergy.online)
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_bservice
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_bservice(DecortController):
|
||||
def __init__(self,arg_amodule):
|
||||
super(decort_bservice, self).__init__(arg_amodule)
|
||||
|
||||
validated_acc_id = 0
|
||||
validated_rg_id = 0
|
||||
validated_rg_facts = None
|
||||
self.bservice_info = None
|
||||
if arg_amodule.params['name'] == "" and arg_amodule.params['id'] == 0:
|
||||
self.result['failed'] = True
|
||||
@@ -43,8 +37,11 @@ class decort_bservice(DecortController):
|
||||
self.fail_json(**self.result)
|
||||
# fail the module -> exit
|
||||
# now validate RG
|
||||
validated_rg_id, validated_rg_facts = self.rg_find(validated_acc_id,
|
||||
arg_amodule.params['rg_id'],)
|
||||
validated_rg_id, validated_rg_facts = self.rg_find(
|
||||
arg_account_id=validated_acc_id,
|
||||
arg_rg_id=arg_amodule.params['rg_id'],
|
||||
arg_rg_name=arg_amodule.params['rg_name']
|
||||
)
|
||||
if not validated_rg_id:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
@@ -52,12 +49,12 @@ class decort_bservice(DecortController):
|
||||
arg_amodule.params['rg_name'])
|
||||
self.fail_json(**self.result)
|
||||
|
||||
arg_amodule.params['rg_id'] = validated_rg_id
|
||||
arg_amodule.params['rg_name'] = validated_rg_facts['name']
|
||||
self.acc_id = validated_rg_facts['accountId']
|
||||
arg_amodule.params['rg_id'] = validated_rg_id
|
||||
arg_amodule.params['rg_name'] = validated_rg_facts['name']
|
||||
validated_acc_id = validated_rg_facts['accountId']
|
||||
|
||||
self.bservice_id,self.bservice_info = self.bservice_find(
|
||||
self.acc_id,
|
||||
self.bservice_id, self.bservice_info = self.bservice_find(
|
||||
validated_acc_id,
|
||||
validated_rg_id,
|
||||
arg_amodule.params['name'],
|
||||
arg_amodule.params['id']
|
||||
@@ -76,7 +73,7 @@ class decort_bservice(DecortController):
|
||||
"""
|
||||
self.result['failed'] = False
|
||||
self.result['changed'] = False
|
||||
if self.k8s_id:
|
||||
if self.bservice_id:
|
||||
self.result['msg'] = ("No state change required for B-service ID {} because of its "
|
||||
"current status '{}'.").format(self.bservice_id, self.bservice_info['status'])
|
||||
else:
|
||||
@@ -109,7 +106,7 @@ class decort_bservice(DecortController):
|
||||
)
|
||||
if self.bservice_id:
|
||||
_, self.bservice_info = self.bservice_get_by_id(self.bservice_id)
|
||||
self.bservice_state(self.bservice_info,'enabled',self.amodule.params['started'])
|
||||
self.bservice_state(self.bservice_info,'enabled',self.amodule.params['started'])
|
||||
return
|
||||
|
||||
def action(self,d_state,started=False):
|
||||
@@ -147,16 +144,14 @@ class decort_bservice(DecortController):
|
||||
ret_dict['techStatus'] = self.bservice_info['techStatus']
|
||||
ret_dict['state'] = self.bservice_info['status']
|
||||
ret_dict['rg_id'] = self.bservice_info['rgId']
|
||||
ret_dict['account_id'] = self.acc_id
|
||||
ret_dict['groupsName'] = self.bservice_info['groupsName']
|
||||
ret_dict['groupsIds'] = self.bservice_info['groups']
|
||||
ret_dict['account_id'] = self.bservice_info['accountId']
|
||||
ret_dict['groups'] = self.bservice_info['groups']
|
||||
return ret_dict
|
||||
@staticmethod
|
||||
def build_parameters():
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default=''),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -186,13 +181,12 @@ class decort_bservice(DecortController):
|
||||
user=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_USER'])),
|
||||
name=dict(type='str', required=True),
|
||||
name=dict(type='str', required=False, default=''),
|
||||
sshuser=dict(type='str', required=False,default=None),
|
||||
sshkey=dict(type='str', required=False,default=None),
|
||||
id=dict(type='int', required=False, default=0),
|
||||
rg_id=dict(type='int', default=0),
|
||||
rg_name=dict(type='str',default=""),
|
||||
description=dict(type='str', default="Created by decort ansible module"),
|
||||
verify_ssl=dict(type='bool', required=False, default=True),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),)
|
||||
|
||||
@@ -1,295 +1,63 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Sergey Shubin (sergey.shubin@digitalenergy.online)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_disk
|
||||
short_description: Manage Disks (virtualized storage resources) in DECORT cloud
|
||||
description: >
|
||||
This module can be used to create new disk in DECORT cloud platform, obtain or
|
||||
modify its characteristics, and delete it.
|
||||
version_added: "2.2"
|
||||
author:
|
||||
- Sergey Shubin <sergey.shubin@digitalenergy.online>
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.6.1 or higher
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
options:
|
||||
account_id:
|
||||
description:
|
||||
- ID of the account, which owns this disk. This is the alternative to I(account_name) option.
|
||||
- If both I(account_id) and I(account_name) specified, then I(account_name) is ignored.
|
||||
default: 0
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account, which will own this disk.'
|
||||
- 'This parameter is ignored if I(account_id) is specified.'
|
||||
default: empty string
|
||||
required: no
|
||||
annotation:
|
||||
description:
|
||||
- Optional text description of this disk.
|
||||
default: empty string
|
||||
required: no
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to manage the RG according to the specification.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
id:
|
||||
description:
|
||||
- `ID of the disk to manage. If I(id) is specified it is assumed, that this disk already
|
||||
exists. In other words, you cannot create new disk by specifying its ID, use I(name)
|
||||
when creating new disk.`
|
||||
- `If non-zero I(id) is specified, then I(name), I(account_id) and I(account_name)
|
||||
are ignored.`
|
||||
default: 0
|
||||
required: no
|
||||
name:
|
||||
description:
|
||||
- `Name of the disk to manage. To manage disk by name you also need to specify either
|
||||
I(account_id) or I(account_name).`
|
||||
- If non-zero I(id) is specified, I(name) is ignored.
|
||||
- `Note that the platform does not enforce uniqueness of disk names, so if more than one
|
||||
disk with this name exists under the specified account, module will return the first
|
||||
occurence.`
|
||||
default: empty string
|
||||
required: no
|
||||
force_detach:
|
||||
description:
|
||||
- `By default it is not allowed to delete or destroy disk that is currently attached to a compute
|
||||
instance (e.g. virtual machine or bare metal server). Set this argument to true to change this
|
||||
behavior.`
|
||||
- This argument is meaningful for I(state=absent) operations only and ignored otherwise.
|
||||
default: false
|
||||
required: no
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- 'If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.'
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
place_with:
|
||||
description:
|
||||
- `This argument can be used to simplify data disks creation along with a new compute, by placing
|
||||
disks in the same storage, where corresponding OS image is deployed.`
|
||||
- `Specify ID of an OS image, and the newly created disk will be provisioned from the same
|
||||
storage, where this OS image is located. You may optionally specify I(pool) to control
|
||||
actual disk placement within that storage, or leave I(pool=default) to let platform manage
|
||||
it automatically.`
|
||||
- This parameter is used when creating new disks and ignored for all other operations.
|
||||
- This is an alternative to specifying I(sep_id).
|
||||
default: 0
|
||||
required: no
|
||||
pool:
|
||||
description:
|
||||
- Name of the pool where to place new disk. Once disk is created, its pool cannot be changed.
|
||||
- This parameter is used when creating new disk and igonred for all other operations.
|
||||
default: empty string
|
||||
required: no
|
||||
sep_id:
|
||||
description:
|
||||
- `ID of the Storage Endpoint Provider (SEP) where to place new disk. Once disk is created,
|
||||
its SEP cannot be changed.`
|
||||
- `You may think of SEP as an identifier of a storage system connected to DECORT platform. There
|
||||
may be several different storage systems and, consequently, several SEPs available to choose from.`
|
||||
- This parameter is used when creating new disk and igonred for all other operations.
|
||||
- See also I(place_with) for an alternative way to specify disk placement.
|
||||
default: 0
|
||||
required: no
|
||||
size:
|
||||
description:
|
||||
- Size of the disk in GB. This parameter is mandatory when creating new disk.
|
||||
- `If specified for an existing disk, and it is greater than current disk size, platform will try to resize
|
||||
the disk on the fly. Downsizing disk is not allowed.`
|
||||
required: no
|
||||
limitIO:
|
||||
description:
|
||||
- Disk input / output limit, used to limit the speed of interaction with the disk.
|
||||
required: no
|
||||
type:
|
||||
description:
|
||||
- Type of the disk.
|
||||
- `Disks can be of the following types: "D"-Data, "B"-Boot, "T"-Tmp.`
|
||||
default: "D"
|
||||
required: no
|
||||
state:
|
||||
description:
|
||||
- Specify the desired state of the disk at the exit of the module.
|
||||
- 'If desired I(state=present):'
|
||||
- ' - Disk does not exist or is in [DESTROYED, PURGED] states, create new disk according to the specifications.'
|
||||
- ' - Disk is in DELETED state, restore it and change size if necessary.'
|
||||
- ' - Disk is in one of [CREATED, ASSIGNED] states, do nothing.'
|
||||
- ' - Disk in any other state, abort with an error.'
|
||||
- 'If desired I(state=absent):'
|
||||
- ' - Disk is in one of [CREATED, ASSIGNED, DELETED] states, destroy it.'
|
||||
- ' - Disk not found or in [DESTROYED, PURGED] states, do nothing.'
|
||||
- ' - Disk in any other state, abort with an error.'
|
||||
default: present
|
||||
choices: [ absent, present ]
|
||||
user:
|
||||
description:
|
||||
- 'Name of the legacy user for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required when I(authenticator=legacy) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_USER environment variable.
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: create new Disk named "MyDataDisk01" of size 50 GB, on SEP ID 1, in default pool, under the account "MyAccount".
|
||||
decort_vins:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ MY_APP_ID }}"
|
||||
app_secret: "{{ MY_APP_SECRET }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "MyDataDisk01"
|
||||
sep_id: 1
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
state: present
|
||||
delegate_to: localhost
|
||||
register: my_disk
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about the disk
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
id: 50
|
||||
name: data01
|
||||
size: 10
|
||||
sep_id: 1
|
||||
pool: datastore
|
||||
state: ASSIGNED
|
||||
account_id: 7
|
||||
attached_to: 18
|
||||
gid: 1001
|
||||
'''
|
||||
|
||||
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_disk(DecortController):
|
||||
def __init__(self,arg_amodule):
|
||||
super(decort_disk, self).__init__(arg_amodule)
|
||||
|
||||
validated_acc_id = 0
|
||||
validated_acc_info = None
|
||||
validated_disk_id = 0
|
||||
self.disk_id = 0
|
||||
self.account_id = 0
|
||||
validated_disk_facts = None
|
||||
# limitIO check for exclusive parameters
|
||||
|
||||
if arg_amodule.params['limitIO']:
|
||||
self.disk_check_iotune_arg(arg_amodule.params['limitIO'])
|
||||
|
||||
|
||||
if arg_amodule.params['id'] or arg_amodule.params['name']:
|
||||
if arg_amodule.params['account_id'] or arg_amodule.params['account_name'] :
|
||||
validated_acc_id,validated_acc_info = self.account_find(arg_amodule.params['account_name'],arg_amodule.params['account_id'])
|
||||
if not validated_acc_id:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = ("Current user does not have access to the account ID {} / "
|
||||
"name '{}' or non-existent account specified.").format(arg_amodule.params['account_id'],
|
||||
arg_amodule.params['account_name'])
|
||||
self.fail_json(**self.result)
|
||||
else:
|
||||
self.acc_id = validated_acc_id
|
||||
self.acc_info = validated_acc_info
|
||||
validated_disk_id,validated_disk_facts = self.disk_find(
|
||||
disk_id=arg_amodule.params['id'],
|
||||
name=arg_amodule.params['name'] if "name" in arg_amodule.params else "",
|
||||
account_id=self.acc_id,
|
||||
check_state=False,
|
||||
if not arg_amodule.params['id']:
|
||||
if (
|
||||
not arg_amodule.params['account_id']
|
||||
and not arg_amodule.params['account_name']
|
||||
):
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = (
|
||||
'Cannot manage Disk by name without specifying account ID '
|
||||
'or name.'
|
||||
)
|
||||
else:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Cannot manage Disk when its ID is 0 and name is empty")
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
validated_acc_id, validated_acc_info = self.account_find(
|
||||
arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
if not validated_acc_id:
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = (
|
||||
f"Current user does not have access to the account "
|
||||
f"ID {arg_amodule.params['account_id']} / "
|
||||
f"name '{arg_amodule.params['account_name']}' "
|
||||
f"or non-existent account specified."
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
self.acc_id = validated_acc_id
|
||||
self.acc_info = validated_acc_info
|
||||
validated_disk_id, validated_disk_facts = self.disk_find(
|
||||
disk_id=arg_amodule.params['id'],
|
||||
name=arg_amodule.params['name'] if "name" in arg_amodule.params else "",
|
||||
account_id=self.acc_id,
|
||||
check_state=False,
|
||||
)
|
||||
|
||||
if arg_amodule.params['place_with']:
|
||||
image_id, image_facts = self.image_find(arg_amodule.params['place_with'], "", 0)
|
||||
@@ -302,7 +70,7 @@ class decort_disk(DecortController):
|
||||
|
||||
self.disk_id = self.disk_create(accountId=self.acc_id,
|
||||
name = self.amodule.params['name'],
|
||||
description=self.amodule.params['annotation'],
|
||||
description=self.amodule.params['description'],
|
||||
size=self.amodule.params['size'],
|
||||
type=self.amodule.params['type'],
|
||||
iops=self.amodule.params['iops'],
|
||||
@@ -311,10 +79,11 @@ class decort_disk(DecortController):
|
||||
)
|
||||
#IO tune
|
||||
if self.amodule.params['limitIO']:
|
||||
self.disk_limitIO(self.amodule.params['limitIO'],self.disk_id)
|
||||
self.disk_limitIO(disk_id=self.disk_id,
|
||||
limits=self.amodule.params['limitIO'])
|
||||
#set share status
|
||||
if self.amodule.params['shareable'] and self.amodule.params['type'] == "D":
|
||||
self.dick_share(self.disk_id,self.amodule.params['shareable'])
|
||||
self.disk_share(self.disk_id,self.amodule.params['shareable'])
|
||||
return
|
||||
|
||||
def action(self,restore=False):
|
||||
@@ -323,12 +92,17 @@ class decort_disk(DecortController):
|
||||
if restore:
|
||||
self.disk_restore(self.disk_id)
|
||||
#rename if id present
|
||||
if self.amodule.params['name'] != self.disk_info['name']:
|
||||
self.disk_rename(diskId=self.disk_id,
|
||||
if (
|
||||
self.amodule.params['name'] is not None
|
||||
and self.amodule.params['name'] != self.disk_info['name']
|
||||
):
|
||||
self.disk_rename(disk_id=self.disk_id,
|
||||
name=self.amodule.params['name'])
|
||||
self.disk_info['name'] = self.amodule.params['name']
|
||||
#resize
|
||||
if self.amodule.params['size'] != self.disk_info['sizeMax']:
|
||||
if (
|
||||
self.amodule.params['size'] is not None
|
||||
and self.amodule.params['size'] != self.disk_info['sizeMax']
|
||||
):
|
||||
self.disk_resize(self.disk_info,self.amodule.params['size'])
|
||||
#IO TUNE
|
||||
if self.amodule.params['limitIO']:
|
||||
@@ -380,7 +154,6 @@ class decort_disk(DecortController):
|
||||
account_id=0,
|
||||
sep_id=0,
|
||||
pool="none",
|
||||
attached_to=0,
|
||||
gid=0
|
||||
)
|
||||
|
||||
@@ -398,7 +171,7 @@ class decort_disk(DecortController):
|
||||
ret_dict['account_id'] = self.disk_info['accountId']
|
||||
ret_dict['sep_id'] = self.disk_info['sepId']
|
||||
ret_dict['pool'] = self.disk_info['pool']
|
||||
ret_dict['attached_to'] = self.disk_info['vmid']
|
||||
ret_dict['computes'] = self.disk_info['computes']
|
||||
ret_dict['gid'] = self.disk_info['gid']
|
||||
ret_dict['iotune'] = self.disk_info['iotune']
|
||||
|
||||
@@ -411,7 +184,7 @@ class decort_disk(DecortController):
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False, default=0),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default='Disk by decort_disk'),
|
||||
description=dict(type='str', required=False, default='Disk by decort_disk'),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -440,7 +213,7 @@ class decort_disk(DecortController):
|
||||
place_with=dict(type='int', default=0),
|
||||
pool=dict(type='str', default=''),
|
||||
sep_id=dict(type='int', default=0),
|
||||
size=dict(type='int', default=0),
|
||||
size=dict(type='int'),
|
||||
type=dict(type='str',
|
||||
required=False,
|
||||
default="D",
|
||||
@@ -489,6 +262,9 @@ def main():
|
||||
['app_id', 'app_secret'],
|
||||
['user', 'password'],
|
||||
],
|
||||
required_one_of=[
|
||||
['id', 'name'],
|
||||
],
|
||||
)
|
||||
|
||||
decon = decort_disk(amodule)
|
||||
@@ -519,6 +295,9 @@ def main():
|
||||
elif decon.disk_info['status'] == "DELETED":
|
||||
if amodule.params['state'] in ('present'):
|
||||
decon.action(restore=True)
|
||||
elif (amodule.params['state'] == 'absent' and
|
||||
amodule.params['permanently']):
|
||||
decon.delete()
|
||||
else:
|
||||
decon.nop()
|
||||
else:
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Alexey Dankov (alexey.dankov@digitalenergy.online)
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_group
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_group(DecortController):
|
||||
def __init__(self,arg_amodule):
|
||||
super(decort_group, self).__init__(arg_amodule)
|
||||
@@ -29,7 +24,7 @@ class decort_group(DecortController):
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = ("Cannot find B-service ID {}.").format(arg_amodule.params['bservice_id'])
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
#find group
|
||||
self.bservice_id = validated_bservice_id
|
||||
self.bservice_info = bservice_info
|
||||
@@ -77,13 +72,6 @@ class decort_group(DecortController):
|
||||
return
|
||||
|
||||
def create(self):
|
||||
|
||||
if self.amodule.params['driver'] not in ["KVM_X86","KVM_PPC"]:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Unsupported driver '{}' is specified for "
|
||||
"Group.").format(self.amodule.params['driver'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
self.group_id=self.group_provision(
|
||||
self.bservice_id,
|
||||
self.amodule.params['name'],
|
||||
@@ -109,22 +97,40 @@ class decort_group(DecortController):
|
||||
self.group_info['techStatus'] == 'STOPPED' and self.amodule.params['state'] in ('started','present')
|
||||
):
|
||||
self.group_state(self.bservice_id,self.group_id,self.amodule.params['state'])
|
||||
self.group_resize_count(self.bservice_id,self.group_info,self.amodule.params['count'])
|
||||
self.group_update_hw(
|
||||
self.bservice_id,
|
||||
self.group_info,
|
||||
self.amodule.params['cpu'],
|
||||
self.amodule.params['boot_disk'],
|
||||
self.amodule.params['name'],
|
||||
self.amodule.params['role'],
|
||||
self.amodule.params['ram'],
|
||||
)
|
||||
self.group_update_net(
|
||||
self.bservice_id,
|
||||
self.group_info,
|
||||
self.amodule.params['networks']
|
||||
)
|
||||
return
|
||||
|
||||
if self.aparams['count'] != None:
|
||||
self.group_resize_count(
|
||||
bs_id=self.bservice_id,
|
||||
gr_dict=self.group_info,
|
||||
desired_count=self.aparams['count'],
|
||||
)
|
||||
|
||||
for aparam_name, info_key in {'cpu': 'cpu',
|
||||
'boot_disk': 'disk',
|
||||
'role': 'role',
|
||||
'ram': 'ram',
|
||||
'name': 'name',
|
||||
}.items():
|
||||
aparam_value = self.aparams[aparam_name]
|
||||
group_info_value = self.group_info[info_key]
|
||||
if aparam_value != None and aparam_value != group_info_value:
|
||||
self.group_update(
|
||||
bs_id=self.bservice_id,
|
||||
gr_dict=self.group_info,
|
||||
arg_cpu=self.aparams['cpu'],
|
||||
arg_disk=self.aparams['boot_disk'],
|
||||
arg_name=self.aparams['name'],
|
||||
arg_role=self.aparams['role'],
|
||||
arg_ram=self.aparams['ram'],
|
||||
)
|
||||
break
|
||||
|
||||
if self.aparams['networks'] != None:
|
||||
self.group_update_net(
|
||||
bs_id=self.bservice_id,
|
||||
gr_dict=self.group_info,
|
||||
arg_net=self.aparams['networks'],
|
||||
)
|
||||
|
||||
def destroy(self):
|
||||
|
||||
@@ -132,6 +138,7 @@ class decort_group(DecortController):
|
||||
self.bservice_id,
|
||||
self.group_id
|
||||
)
|
||||
self.group_should_exist = False
|
||||
|
||||
return
|
||||
|
||||
@@ -142,7 +149,6 @@ class decort_group(DecortController):
|
||||
state="CHECK_MODE",
|
||||
account_id=0,
|
||||
rg_id=0,
|
||||
config=None,
|
||||
)
|
||||
|
||||
if check_mode:
|
||||
@@ -168,7 +174,6 @@ class decort_group(DecortController):
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default=''),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -197,20 +202,32 @@ class decort_group(DecortController):
|
||||
user=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_USER'])),
|
||||
name=dict(type='str', required=True),
|
||||
id=dict(type='int', required=False, default=0),
|
||||
name=dict(type='str'),
|
||||
id=dict(type='int', required=False),
|
||||
image_id=dict(type='int', required=False),
|
||||
image_name=dict(type='str', required=False),
|
||||
driver=dict(type='str', required=False,default="KVM_X86"),
|
||||
driver=dict(type='str', required=False, choices=['KVM_X86', 'SVA_KVM_X86'], default="KVM_X86"),
|
||||
boot_disk=dict(type='int', required=False),
|
||||
bservice_id=dict(type='int', required=True),
|
||||
count=dict(type='int', required=True),
|
||||
count=dict(type='int'),
|
||||
timeoutStart=dict(type='int', required=False),
|
||||
role=dict(type='str', required=False),
|
||||
cpu=dict(type='int', required=False),
|
||||
ram=dict(type='int', required=False),
|
||||
networks=dict(type='list', default=[], required=False),
|
||||
description=dict(type='str', default="Created by decort ansible module"),
|
||||
networks=dict(
|
||||
type='list', elements='dict',
|
||||
options=dict(
|
||||
type=dict(
|
||||
type='str',
|
||||
required=True,
|
||||
choices=['VINS', 'EXTNET']
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
required=True
|
||||
)
|
||||
)
|
||||
),
|
||||
verify_ssl=dict(type='bool', required=False, default=True),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),)
|
||||
@@ -230,6 +247,13 @@ def main():
|
||||
],
|
||||
required_one_of=[
|
||||
['id', 'name'],
|
||||
['id', 'networks'],
|
||||
['id', 'count'],
|
||||
['id', 'cpu'],
|
||||
['id', 'ram'],
|
||||
['id', 'boot_disk'],
|
||||
['id', 'image_id'],
|
||||
['id', 'driver'],
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -1,86 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Sergey Shubin (sergey.shubin@digitalenergy.online)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_jwt
|
||||
short_description: Obtain access token to be used for authentication to DECORT cloud controller
|
||||
description:
|
||||
- Obtain JWT (JSON Web Token) from the specified Oauth2 provider. This JWT can be used in subsequent DECS modules'
|
||||
invocations to authenticate them to the DECS cloud controller.
|
||||
version_added: "2.4"
|
||||
author: "Sergey Shubin (sergey.shubin@digitalenergy.online)"
|
||||
notes:
|
||||
- Environment variables can be used to pass parameters to the module (see options below for details).
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'If you register module output as I(my_jwt), the JWT value is accessed as I(my_jwt.jwt)'
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
- PyJWT module
|
||||
- requests module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.6.1 or higher
|
||||
options:
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the Oauth2 provider specified in I(oauth2_url).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the Oauth2 provider specified in I(oauth2_url).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to obtain JWT from.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.
|
||||
validity:
|
||||
description:
|
||||
- Validity of the JWT in seconds. Default value is 3600 (one hour).
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECS controller. Set it to False if you
|
||||
want to disable SSL certificate verification.'
|
||||
- `Intended use case is when you run module in a trusted environment that uses self-signed certificates.
|
||||
Note that disabling SSL verification in any other scenario can lead to security issues, so please use
|
||||
with caution.'
|
||||
default: True
|
||||
required: no
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: Obtain JWT and store it as my_jwt for authenticating subsequent task to DECORT cloud controller
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: https://sso.decs.online
|
||||
delegate_to: localhost
|
||||
register: my_jwt
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
jwt:
|
||||
description: JSON Web Token that can be used to access DECS cloud controller
|
||||
returned: always
|
||||
type: string
|
||||
sample: None
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
import requests
|
||||
@@ -88,6 +12,7 @@ import requests
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
|
||||
|
||||
def decort_jwt_parameters():
|
||||
"""Build and return a dictionary of parameters expected by decort_jwt module in a form accepted
|
||||
by AnsibleModule utility class"""
|
||||
|
||||
@@ -1,95 +1,46 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2023 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_k8s
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
DOCUMENTATION = '''
|
||||
---
|
||||
---
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: Create k8s cluster
|
||||
decort_k8s:
|
||||
verify_ssl: false
|
||||
authenticator: jwt
|
||||
jwt: "{{ run_jwt.jwt }}"
|
||||
controller_url: "{{CONTROLLER_URL}}"
|
||||
name: SOME_NAME
|
||||
rg_id: {{RG_ID}}
|
||||
k8ci_id: 10
|
||||
master_count: 3
|
||||
master_cpu: 2
|
||||
master_ram: 2048
|
||||
master_disk: 10
|
||||
state: present
|
||||
permanent: True
|
||||
started: True
|
||||
getConfig: True
|
||||
network_plugin: flannel
|
||||
workers:
|
||||
- name: wg1
|
||||
ram: 1024
|
||||
cpu: 2
|
||||
disk: 10
|
||||
num: 1
|
||||
labels:
|
||||
- disktype1=ssd1
|
||||
- disktype2=ssd2
|
||||
- disktype3=ssd3
|
||||
taints:
|
||||
- key1=value1:NoSchedule
|
||||
- key2=value2:NoSchedule
|
||||
- key3=value3:NoSchedule
|
||||
annotations:
|
||||
- node.deckhouse.io/group1=g1
|
||||
- node.deckhouse.io/group2=g2
|
||||
- node.deckhouse.io/group3=g3
|
||||
- name: wg2
|
||||
ram: 1024
|
||||
cpu: 2
|
||||
disk: 10
|
||||
num: 1
|
||||
labels:
|
||||
- apptype=main
|
||||
annotations:
|
||||
- node.mainapp.domen.local/group1=g1
|
||||
register: some_cluster
|
||||
'''
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
from ansible.module_utils.decort_utils import *
|
||||
from copy import deepcopy
|
||||
|
||||
|
||||
class decort_k8s(DecortController):
|
||||
def __init__(self,arg_amodule):
|
||||
super(decort_k8s, self).__init__(arg_amodule)
|
||||
|
||||
|
||||
validated_acc_id = 0
|
||||
validated_rg_id = 0
|
||||
validated_rg_facts = None
|
||||
validated_k8ci_id = 0
|
||||
self.k8s_should_exist = False
|
||||
if not arg_amodule.params['workers']:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "At least one worker group must be present"
|
||||
self.fail_json(**self.result)
|
||||
|
||||
if arg_amodule.params['name'] == "" and arg_amodule.params['id'] == 0:
|
||||
self.wg_default_params = {
|
||||
'num': 1,
|
||||
'cpu': 1,
|
||||
'ram': 1024,
|
||||
'labels': [],
|
||||
'taints': [],
|
||||
'annotations': [],
|
||||
'ci_user_data': {},
|
||||
'chipset': 'i440fx',
|
||||
}
|
||||
|
||||
if arg_amodule.params['name'] == "" and arg_amodule.params['id'] is None:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "Cannot manage k8s cluster when its ID is 0 and name is empty."
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
|
||||
if not arg_amodule.params['id']:
|
||||
if arg_amodule.params['id'] is None:
|
||||
if not arg_amodule.params['rg_id']: # RG ID is not set -> locate RG by name -> need account ID
|
||||
validated_acc_id, _ = self.account_find(arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
@@ -99,44 +50,51 @@ class decort_k8s(DecortController):
|
||||
self.result['msg'] = ("Current user does not have access to the account ID {} / "
|
||||
"name '{}' or non-existent account specified.").format(arg_amodule.params['account_id'],
|
||||
arg_amodule.params['account_name'])
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
# fail the module -> exit
|
||||
# now validate RG
|
||||
validated_rg_id, validated_rg_facts = self.rg_find(validated_acc_id,
|
||||
arg_amodule.params['rg_id'],)
|
||||
validated_rg_id, validated_rg_facts = self.rg_find(
|
||||
arg_account_id=validated_acc_id,
|
||||
arg_rg_id=arg_amodule.params['rg_id'],
|
||||
arg_rg_name=arg_amodule.params['rg_name']
|
||||
)
|
||||
if not validated_rg_id:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "Cannot find RG ID {} / name '{}'.".format(arg_amodule.params['rg_id'],
|
||||
arg_amodule.params['rg_name'])
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
# fail the module - exit
|
||||
|
||||
|
||||
#validate k8ci ID
|
||||
|
||||
validated_k8ci_id = self.k8s_k8ci_find(arg_amodule.params['k8ci_id'])
|
||||
if not validated_k8ci_id:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "Cannot find K8CI ID {}.".format(arg_amodule.params['k8ci_id'])
|
||||
self.fail_json(**self.result)
|
||||
|
||||
self.rg_id = validated_rg_id
|
||||
arg_amodule.params['rg_id'] = validated_rg_id
|
||||
arg_amodule.params['rg_name'] = validated_rg_facts['name']
|
||||
self.acc_id = validated_rg_facts['accountId']
|
||||
arg_amodule.params['k8ci_id'] = validated_k8ci_id
|
||||
|
||||
self.k8s_id,self.k8s_info = self.k8s_find(k8s_id=arg_amodule.params['id'],
|
||||
k8s_name=arg_amodule.params['name'],
|
||||
rg_id=validated_rg_id,
|
||||
check_state=False)
|
||||
if self.k8s_id:
|
||||
self.k8s_should_exist = True
|
||||
self.acc_id = self.k8s_info['accountId']
|
||||
self.k8s_id,self.k8s_info = self.k8s_find(k8s_id=arg_amodule.params['id'],
|
||||
k8s_name=arg_amodule.params['name'],
|
||||
rg_id=validated_rg_id,
|
||||
check_state=False)
|
||||
|
||||
if self.k8s_id:
|
||||
self.k8s_should_exist = True
|
||||
self.acc_id = self.k8s_info['accountId']
|
||||
# check workers and groups for add or remove?
|
||||
|
||||
|
||||
if not self.k8s_id:
|
||||
validated_k8ci_id = self.k8s_k8ci_find(arg_amodule.params['k8ci_id'])
|
||||
if not validated_k8ci_id:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "Cannot find K8CI ID {}.".format(arg_amodule.params['k8ci_id'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
if not arg_amodule.params['workers']:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = "At least one worker group must be present"
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
return
|
||||
|
||||
def package_facts(self,check_mode=False):
|
||||
@@ -149,6 +107,9 @@ class decort_k8s(DecortController):
|
||||
config=None,
|
||||
)
|
||||
|
||||
if self.amodule.params['getConfig'] and self.k8s_info['techStatus'] == "STARTED":
|
||||
ret_dict['config'] = self.k8s_getConfig()
|
||||
|
||||
if check_mode:
|
||||
# in check mode return immediately with the default values
|
||||
return ret_dict
|
||||
@@ -162,12 +123,12 @@ class decort_k8s(DecortController):
|
||||
ret_dict['name'] = self.k8s_info['name']
|
||||
ret_dict['techStatus'] = self.k8s_info['techStatus']
|
||||
ret_dict['state'] = self.k8s_info['status']
|
||||
ret_dict['rg_id'] = self.rg_id
|
||||
ret_dict['rg_id'] = self.k8s_info['rgId']
|
||||
ret_dict['vins_id'] = self.k8s_vins_id
|
||||
ret_dict['account_id'] = self.acc_id
|
||||
if self.amodule.params['getConfig'] and self.k8s_info['techStatus'] == "STARTED":
|
||||
ret_dict['config'] = self.k8s_getConfig()
|
||||
|
||||
ret_dict['k8s_Masters'] = self.k8s_info['k8sGroups']['masters']
|
||||
ret_dict['k8s_Workers'] = self.k8s_info['k8sGroups']['workers']
|
||||
|
||||
return ret_dict
|
||||
|
||||
def nop(self):
|
||||
@@ -203,28 +164,61 @@ class decort_k8s(DecortController):
|
||||
return
|
||||
|
||||
def create(self):
|
||||
self.k8s_provision(self.amodule.params['name'],
|
||||
master_chipset = self.amodule.params['master_chipset']
|
||||
if master_chipset is None:
|
||||
master_chipset = 'i440fx'
|
||||
|
||||
target_wgs = deepcopy(self.amodule.params['workers'])
|
||||
for wg in target_wgs:
|
||||
for param, default_value in self.wg_default_params.items():
|
||||
if wg[param] is None:
|
||||
wg[param] = default_value
|
||||
|
||||
k8s_id = self.k8s_provision(self.amodule.params['name'],
|
||||
self.amodule.params['k8ci_id'],
|
||||
self.amodule.params['rg_id'],
|
||||
self.amodule.params['vins_id'],
|
||||
self.amodule.params['network_plugin'],
|
||||
self.amodule.params['master_count'],
|
||||
self.amodule.params['master_cpu'],
|
||||
self.amodule.params['master_ram'],
|
||||
self.amodule.params['master_disk'],
|
||||
self.amodule.params['workers'][0],
|
||||
self.amodule.params['master_sepid'],
|
||||
self.amodule.params['master_pool'],
|
||||
target_wgs[0],
|
||||
self.amodule.params['extnet_id'],
|
||||
self.amodule.params['with_lb'],
|
||||
self.amodule.params['description'],)
|
||||
|
||||
self.k8s_id,self.k8s_info = self.k8s_find(k8s_id=self.amodule.params['id'],
|
||||
self.amodule.params['ha_lb'],
|
||||
self.amodule.params['additionalSANs'],
|
||||
self.amodule.params['init_conf'],
|
||||
self.amodule.params['cluster_conf'],
|
||||
self.amodule.params['kublet_conf'],
|
||||
self.amodule.params['kubeproxy_conf'],
|
||||
self.amodule.params['join_conf'],
|
||||
self.amodule.params['oidc_cert'],
|
||||
self.amodule.params['description'],
|
||||
self.amodule.params['extnet_only'],
|
||||
master_chipset,
|
||||
)
|
||||
|
||||
if not k8s_id:
|
||||
if k8s_id == 0:
|
||||
return
|
||||
else:
|
||||
self.result['failed'] = True
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
self.k8s_id,self.k8s_info = self.k8s_find(k8s_id=k8s_id,
|
||||
k8s_name=self.amodule.params['name'],
|
||||
rg_id=self.rg_id,
|
||||
check_state=False)
|
||||
|
||||
|
||||
if self.k8s_id:
|
||||
self.k8s_should_exist = True
|
||||
if self.k8s_id and len(self.amodule.params['workers'])>1 :
|
||||
self.k8s_workers_modify(self.k8s_info,self.amodule.params['workers'])
|
||||
self.k8s_should_exist = True
|
||||
self.k8s_workers_modify(
|
||||
arg_k8swg=self.k8s_info,
|
||||
arg_modwg=target_wgs,
|
||||
)
|
||||
return
|
||||
|
||||
def destroy(self):
|
||||
@@ -233,25 +227,37 @@ class decort_k8s(DecortController):
|
||||
self.k8s_should_exist = False
|
||||
return
|
||||
|
||||
def action(self,disared_state,started=True):
|
||||
|
||||
self.k8s_state(self.k8s_info, disared_state,started)
|
||||
self.k8s_id,self.k8s_info = self.k8s_find(k8s_id=self.amodule.params['id'],
|
||||
k8s_name=self.amodule.params['name'],
|
||||
rg_id=self.rg_id,
|
||||
check_state=False)
|
||||
def action(self, disared_state, started=True, preupdate: bool = False):
|
||||
if self.amodule.params['master_chipset'] is not None:
|
||||
self.result['msg'] = (
|
||||
'"master_chipset" parameter must not be specified '
|
||||
'when modifying an existing K8s cluster.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
if preupdate:
|
||||
# K8s info updating
|
||||
self.k8s_info = self.k8s_get_by_id(k8s_id=self.k8s_id)
|
||||
#k8s state
|
||||
self.k8s_state(self.k8s_info, disared_state, started)
|
||||
self.k8s_info = self.k8s_get_by_id(k8s_id=self.k8s_id)
|
||||
if started == True and self.k8s_info['techStatus'] == "STOPPED":
|
||||
self.k8s_state(self.k8s_info, disared_state,started)
|
||||
self.k8s_info['techStatus'] == "STARTED"
|
||||
self.k8s_workers_modify(self.k8s_info,self.amodule.params['workers'])
|
||||
#check groups and modify if needed
|
||||
if self.aparams['workers'] is not None:
|
||||
self.k8s_workers_modify(self.k8s_info, self.amodule.params['workers'])
|
||||
if self.result['changed'] == True:
|
||||
self.k8s_info = self.k8s_get_by_id(k8s_id=self.k8s_id)
|
||||
#TODO check workers metadata and modify if needed
|
||||
|
||||
return
|
||||
|
||||
@staticmethod
|
||||
def build_parameters():
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default=''),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -284,29 +290,88 @@ class decort_k8s(DecortController):
|
||||
user=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_USER'])),
|
||||
name=dict(type='str', required=True),
|
||||
id=dict(type='int', required=False, default=0),
|
||||
name=dict(type='str', required=False, default=""),
|
||||
id=dict(type='int', required=False),
|
||||
getConfig=dict(type='bool',required=False, default=False),
|
||||
rg_id=dict(type='int', default=0),
|
||||
rg_name=dict(type='str',default=""),
|
||||
k8ci_id=dict(type='int', required=True),
|
||||
vins_id=dict(type='int', required=False,default=None),
|
||||
k8ci_id=dict(type='int'),
|
||||
network_plugin=dict(type='str',required=False,default="flannel"),
|
||||
wg_name=dict(type='str', required=False),
|
||||
master_count=dict(type='int', default=1),
|
||||
master_cpu=dict(type='int', default=2),
|
||||
master_ram=dict(type='int', default=2048),
|
||||
master_disk=dict(type='int', default=10),
|
||||
worker_count=dict(type='int', default=1),
|
||||
worker_cpu=dict(type='int', default=1),
|
||||
worker_ram_mb=dict(type='int', default=1024),
|
||||
worker_disk_gb=dict(type='int', default=10),
|
||||
workers=dict(type='list',required=True),
|
||||
master_sepid=dict(type='int', required=False, default=None),
|
||||
master_pool=dict(type='str', required=False, default=None),
|
||||
workers=dict(
|
||||
type='list',
|
||||
elements='dict',
|
||||
options=dict(
|
||||
name=dict(
|
||||
type='str',
|
||||
required=True,
|
||||
),
|
||||
num=dict(
|
||||
type='int',
|
||||
),
|
||||
cpu=dict(
|
||||
type='int',
|
||||
),
|
||||
ram=dict(
|
||||
type='int',
|
||||
),
|
||||
disk=dict(
|
||||
type='int',
|
||||
),
|
||||
sep_id=dict(
|
||||
type='int',
|
||||
),
|
||||
pool=dict(
|
||||
type='str',
|
||||
),
|
||||
annotations=dict(
|
||||
type='list',
|
||||
elements='str',
|
||||
),
|
||||
ci_user_data=dict(
|
||||
type='dict',
|
||||
),
|
||||
labels=dict(
|
||||
type='list',
|
||||
elements='str',
|
||||
),
|
||||
taints=dict(
|
||||
type='list',
|
||||
elements='str',
|
||||
),
|
||||
chipset=dict(
|
||||
type='str',
|
||||
choices=['Q35', 'i440fx'],
|
||||
),
|
||||
),
|
||||
),
|
||||
workers_metadata=dict(type='bool',required=False,default=False),
|
||||
extnet_id=dict(type='int', default=0),
|
||||
description=dict(type='str', default="Created by decort ansible module"),
|
||||
with_lb=dict(type='bool', default=True),
|
||||
ha_lb=dict(type='bool', default=False),
|
||||
extnet_only=dict(type='bool', default=False),
|
||||
additionalSANs=dict(type='list',required=False, default=None),
|
||||
init_conf=dict(type='dict', required=False, default=None),
|
||||
cluster_conf=dict(type='dict', required=False, default=None),
|
||||
kublet_conf=dict(type='dict', required=False, default=None),
|
||||
kubeproxy_conf=dict(type='dict', required=False, default=None),
|
||||
join_conf=dict(type='dict', required=False, default=None),
|
||||
oidc_cert=dict(type='raw',required=False,default=None),
|
||||
verify_ssl=dict(type='bool', required=False, default=True),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),)
|
||||
workflow_context=dict(type='str', required=False),
|
||||
master_chipset=dict(
|
||||
type='str',
|
||||
choices=['Q35', 'i440fx'],
|
||||
),
|
||||
)
|
||||
|
||||
def main():
|
||||
module_parameters = decort_k8s.build_parameters()
|
||||
@@ -324,7 +389,6 @@ def main():
|
||||
],
|
||||
required_one_of=[
|
||||
['id', 'name'],
|
||||
['rg_id','rg_name']
|
||||
],
|
||||
)
|
||||
|
||||
@@ -352,9 +416,13 @@ def main():
|
||||
elif subj.k8s_info['status'] == "DELETED":
|
||||
if amodule.params['state'] in ('disabled', 'enabled', 'present'):
|
||||
subj.k8s_restore(subj.k8s_id)
|
||||
subj.action(amodule.params['state'])
|
||||
subj.action(disared_state=amodule.params['state'],
|
||||
preupdate=True)
|
||||
if amodule.params['state'] == 'absent':
|
||||
subj.nop()
|
||||
if amodule.params['permanent']:
|
||||
subj.destroy()
|
||||
else:
|
||||
subj.nop()
|
||||
elif subj.k8s_info['techStatus'] in ("STARTED","STOPPED"):
|
||||
if amodule.params['state'] == 'disabled':
|
||||
subj.action(amodule.params['state'])
|
||||
|
||||
@@ -1,360 +1,24 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2023 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_kvmvm
|
||||
short_description: Manage KVM virtual machine in DECORT cloud
|
||||
description: >
|
||||
This module can be used to create a KVM based virtual machine in Digital Energy cloud platform from a
|
||||
specified OS image, modify virtual machine's CPU and RAM allocation, change its power state, configure
|
||||
network port forwarding rules, restart guest OS and delete a virtual machine thus releasing
|
||||
corresponding cloud resources.
|
||||
version_added: "2.2"
|
||||
|
||||
requirements:
|
||||
- python >= 3.8
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.8.6 or higher
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
options:
|
||||
account_id:
|
||||
description:
|
||||
- 'ID of the account in which this VM will be created (for new VMs) or is located (for already
|
||||
existing VMs). This is the alternative to I(account_name) option.'
|
||||
- If both I(account_id) and I(account_name) specified, then I(account_name) is ignored.
|
||||
- If any one of I(vm_id) or I(rg_id) specified, I(account_id) is ignored.
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account in which this VM will be created (for new VMs) or is located (for already
|
||||
existing VMs).'
|
||||
- This parameter is ignored if I(account_id) is specified.
|
||||
- If any one of I(vm_id) or I(rg_id) specified, I(account_name) is ignored.
|
||||
required: no
|
||||
annotation:
|
||||
description:
|
||||
- Optional text description of this VM.
|
||||
default: empty string
|
||||
required: no
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
arch:
|
||||
description:
|
||||
- Architecture of the KVM VM. DECORT supports KVM hosts based on Intel x86 and IBM PowerPC hardware.
|
||||
- This parameter is used when new KVM VM is created and ignored for all other operations.
|
||||
- Module may fail if your DECORT installation does not have physical nodes of specified architecture.
|
||||
default: X86_64
|
||||
choices: [ X86_64, PPC64_LE ]
|
||||
required: yes
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
boot_disk:
|
||||
description:
|
||||
- 'Boot disk size in GB. If this parameter is not specified for a new VM, the size of the boot disk
|
||||
will be set to the size of the OS image, which this VM is based on.'
|
||||
- Boot disk is always created in the same storage and pool, as the OS image, which this VM is based on.
|
||||
- Boot disk cannot be detached from VM.
|
||||
required: no
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to manage the VM according to the specification.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
cpu:
|
||||
description:
|
||||
- Number of virtual CPUs to allocate for the VM.
|
||||
- This parameter is required for creating new VM and optional for other operations.
|
||||
- 'If you set this parameter for an existing VM, then the module will check if VM resize is necessary and do
|
||||
it accordingly. Note that resize operation on a running VM may generate errors as not all OS images support
|
||||
hot resize feature.'
|
||||
required: no
|
||||
data_disks:
|
||||
description:
|
||||
- Optional list of integer IDs of the pre-existing disks that will be attached to this VM.
|
||||
- These are additional disks (aka data disks) besides boot disk, which is created and attached automatically.
|
||||
required: no
|
||||
id:
|
||||
description:
|
||||
- ID of the KVM VM to manage.
|
||||
- 'Either I(id) or a combination of VM name I(name) and RG related parameters (either I(rg_id) or a pair of
|
||||
I(account_name) and I(rg_name) is required to manage an existing VM.'
|
||||
- 'This parameter is not required (and ignored) when creating new VM as VM ID is assigned by cloud platform
|
||||
automatically and cannot be changed afterwards. If existing VM is identified by I(id), then I(account_id),
|
||||
I(account_name), I(rg_name) or I(rg_id) parameters will be ignored.'
|
||||
required: no
|
||||
image_id:
|
||||
description:
|
||||
- ID of the OS image to use for VM provisioning.
|
||||
- 'This parameter is valid at VM creation time only and is ignored for operations on existing VMs.'
|
||||
- 'You need to know image ID, e.g. by extracting it with decort_osimage module and storing
|
||||
in a variable prior to calling decort_kvmvm.'
|
||||
- 'If both I(image_id) and I(image_name) are specified, I(image_name) will be ignored.'
|
||||
required: no
|
||||
image_name:
|
||||
description:
|
||||
- Name of the OS image to use for a new VM provisioning.
|
||||
- 'This parameter is valid at VM creation time only and is ignored for operations on existing VMs.'
|
||||
- 'The specified image name will be looked up in the target DECORT controller and error will be generated if
|
||||
no matching image is found.'
|
||||
- 'If both I(image_id) and I(image_name) are specified, I(image_name) will be ignored.'
|
||||
required: no
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
name:
|
||||
description:
|
||||
- Name of the VM.
|
||||
- 'To manage VM by I(name) you also need to specify either I(rg_id) or a pair of I(rg_name) and I(account_name).'
|
||||
- 'If both I(name) and I(id) are specified, I(name) will be ignored and I(id) used to locate the VM.'
|
||||
required: no
|
||||
networks:
|
||||
description:
|
||||
- List of dictionaries that specifies network connections for this VM.
|
||||
- Structure of each element is as follows:
|
||||
- ' - (string) type - type of the network connection. Supported types are VINS and EXTNET.'
|
||||
- ' - (int) id - ID of the target network segment. It is ViNS ID for I(net_type=VINS) and
|
||||
external network segment ID for I(net_type=EXTNET)'
|
||||
- ' - (string) ip_addr - optional IP address to request for this connection. If not specified, the
|
||||
platform will assign valid IP address automatically.'
|
||||
- 'If you call decort_kvmvm module for an existing VM, the module will try to reconfigure existing network
|
||||
connections according to the new specification.'
|
||||
- If this parameter is not specified, the VM will have no connections to the network(s).
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
ram:
|
||||
description:
|
||||
- Size of RAM in MB to allocate to the VM.
|
||||
- This parameter is required for creating new VM and optional for other operations.
|
||||
- 'If you set this parameter for an existing VM, then the module will check if VM resize is necessary and do
|
||||
it accordingly. Note that resize operation on a running VM may generate errors as not all OS images support
|
||||
hot resize feature.'
|
||||
required: no
|
||||
ssh_key:
|
||||
description:
|
||||
- 'SSH public key to be deployed on to the new VM for I(ssh_key_user). If I(ssh_key_user) is not specified,
|
||||
the key will not be deployed, and a warning is generated.'
|
||||
- This parameter is valid at VM creation time only and ignored for any operation on existing VMs.
|
||||
required: no
|
||||
ssh_key_user:
|
||||
description:
|
||||
- User for which I(ssh_key) should be deployed.
|
||||
- If I(ssh_key) is not specified, this parameter is ignored and a warning is generated.
|
||||
- This parameter is valid at VM creation time only and ignored for any operation on existing VMs.
|
||||
required: no
|
||||
user_data:
|
||||
description:
|
||||
- Cloud-init User-Data, exept ssh module
|
||||
state:
|
||||
description:
|
||||
- Specify the desired state of the virtual machine at the exit of the module.
|
||||
- 'Regardless of I(state), if VM exists and is in one of [MIGRATING, DESTROYING, ERROR] states, do nothing.'
|
||||
- 'If desired I(state=check):'
|
||||
- ' - Just check if VM exists in any state and return its current specifications.'
|
||||
- ' - If VM does not exist, fail the task.'
|
||||
- 'If desired I(state=present):'
|
||||
- ' - VM does not exist, create the VM according to the specifications and start it.'
|
||||
- ' - VM in one of [RUNNING, PAUSED, HALTED] states, attempt resize if necessary, change network if necessary.'
|
||||
- ' - VM in DELETED state, restore and start it.'
|
||||
- ' - VM in DESTROYED state, recreate the VM according to the specifications and start it.'
|
||||
- 'If desired I(state=poweredon):'
|
||||
- ' - VM does not exist, create it according to the specifications.'
|
||||
- ' - VM in RUNNING state, attempt resize if necessary, change network if necessary.'
|
||||
- ' - VM in one of [PAUSED, HALTED] states, attempt resize if necessary, change network if necessary, next
|
||||
start the VM.'
|
||||
- ' - VM in DELETED state, restore it.'
|
||||
- ' - VM in DESTROYED state, create it according to the specifications.'
|
||||
- 'If desired I(state=absent):'
|
||||
- ' - VM in one of [RUNNING, PAUSED, HALTED] states, destroy it.'
|
||||
- ' - VM in one of [DELETED, DESTROYED] states, do nothing.'
|
||||
- 'If desired I(state=paused):'
|
||||
- ' - VM in RUNNING state, pause the VM, resize if necessary, change network if necessary.'
|
||||
- ' - VM in one of [PAUSED, HALTED] states, resize if necessary, change network if necessary.'
|
||||
- ' - VM in one of [DELETED, DESTROYED] states, abort with an error.'
|
||||
- 'If desired I(state=poweredoff) or I(state=halted):'
|
||||
- ' - VM does not exist, create the VM according to the specifications and leave it in HALTED state.'
|
||||
- ' - VM in RUNNING state, stop the VM, resize if necessary, change network if necessary.'
|
||||
- ' - VM in one of [PAUSED, HALTED] states, resize if necessary, change network if necessary.'
|
||||
- ' - VM in DELETED state, abort with an error.'
|
||||
- ' - VM in DESTROYED state, recreate the VM according to the specifications and leave it in HALTED state.'
|
||||
default: present
|
||||
choices: [ present, absent, poweredon, poweredoff, halted, paused, check ]
|
||||
tags:
|
||||
description:
|
||||
- Dict of custom tags to be assigned to the VM.
|
||||
- These tags are arbitrary text that can be used for grouping or indexing the VMs by other applications.
|
||||
required: no
|
||||
user:
|
||||
description:
|
||||
- 'Name of the legacy user for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required when I(authenticator=legacy) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_USER environment variable.
|
||||
required: no
|
||||
rg_id:
|
||||
description:
|
||||
- ID of the Resource Group where a new VM will be deployed or an existing VM can be found.
|
||||
- 'This parameter may be required when managing VM by its I(name). If you specify I(rg_id), then
|
||||
I(account_name), I(account_id) and I(rg_name) will be ignored.'
|
||||
required: no
|
||||
rg_name:
|
||||
description:
|
||||
- Name of the RG where the VM will be deployed (for new VMs) or can be found (for existing VMs).
|
||||
- This parameter is required when managing VM by its I(name).
|
||||
- If both I(rg_id) and I(rg_name) are specified, I(rg_name) will be ignored.
|
||||
- If I(rg_name) is specified, then either I(account_name) or I(account_id) must also be set.
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: create a VM named "SimpleVM" in the DECORT cloud along with VDC named "ANewVDC" if it does not exist yet.
|
||||
decort_kvmvm:
|
||||
annotation: "VM managed by decort_kvmvm module"
|
||||
authenticator: oauth2
|
||||
app_id: "{{ MY_APP_ID }}"
|
||||
app_secret: "{{ MY_APP_SECRET }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: SimpleVM
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
boot_disk: 10
|
||||
image_name: "Ubuntu 16.04 v1.1"
|
||||
data_disks:
|
||||
- {{DISK_ID}}
|
||||
state: present
|
||||
tags:
|
||||
PROJECT:Ansible
|
||||
STATUS:Test
|
||||
account_name: "Development"
|
||||
rg_name: "ANewVDC"
|
||||
delegate_to: localhost
|
||||
register: simple_vm
|
||||
- name: resize the above VM to CPU 4 and remove port forward rule for port number 80.
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ MY_JWT }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: SimpleVM
|
||||
cpu: 4
|
||||
ram: 4096
|
||||
port_forwards:
|
||||
- ext_port: 21022
|
||||
int_port: 22
|
||||
proto: tcp
|
||||
state: present
|
||||
account_name: "Development"
|
||||
rg_name: "ANewVDC"
|
||||
delegate_to: localhost
|
||||
register: simple_vm
|
||||
- name: stop existing VM identified by the VM ID and down size it to CPU:RAM 1:2048 along the way.
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ MY_JWT }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
id: "{{ TARGET_VM_ID }}"
|
||||
cpu: 1
|
||||
ram: 2048
|
||||
state: poweredoff
|
||||
delegate_to: localhost
|
||||
register: simple_vm
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about the virtual machine that may be useful in the playbook
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
id: 9454
|
||||
name: TestVM
|
||||
state: RUNNING
|
||||
username: testuser
|
||||
password: Yab!tWbyPF
|
||||
int_ip: 192.168.103.253
|
||||
rg_name: SandboxVDC
|
||||
rg_id: 2883
|
||||
vdc_ext_ip: 185.193.143.151
|
||||
ext_ip: 185.193.143.106
|
||||
ext_netmask: 24
|
||||
ext_gateway: 185.193.143.1
|
||||
ext_mac: 52:54:00:00:1a:24
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_kvmvm(DecortController):
|
||||
def __init__(self, arg_amodule):
|
||||
# call superclass constructor first
|
||||
super(decort_kvmvm, self).__init__(arg_amodule)
|
||||
|
||||
self.check_amodule_args()
|
||||
|
||||
self.comp_should_exist = False
|
||||
# This following flag is used to avoid extra (and unnecessary) get of compute details prior to
|
||||
# packaging facts before the module completes. As ""
|
||||
@@ -415,19 +79,73 @@ class decort_kvmvm(DecortController):
|
||||
check_state=False)
|
||||
|
||||
if self.comp_id:
|
||||
if self.comp_info['status'] != 'DESTROYED' and self.comp_info['arch'] not in ["X86_64", "PPC64_LE"]:
|
||||
# If we found a Compute in a non-DESTROYED state and it is not of type valid arch, abort the module
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Compute ID {} architecture '{}' is not supported by "
|
||||
"decort_kvmvm module.").format(self.comp_id,
|
||||
self.amodule.params['arch'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
# fail the module - exit
|
||||
self.comp_should_exist = True
|
||||
self.acc_id = self.comp_info['accountId']
|
||||
|
||||
check_error = False
|
||||
params_to_check = {
|
||||
'chipset': 'chipset',
|
||||
'cpu_pin': 'cpupin',
|
||||
'hp_backed': 'hpBacked',
|
||||
'numa_affinity': 'numaAffinity',
|
||||
}
|
||||
for param_name, comp_field_name in params_to_check.items():
|
||||
if (
|
||||
self.aparams[param_name] is not None
|
||||
and self.comp_info[comp_field_name] != self.aparams[param_name]
|
||||
and self.aparams['state'] not in ('halted', 'poweredoff')
|
||||
):
|
||||
self.message(
|
||||
f'Cannot change "{param_name}" for compute '
|
||||
f'{self.comp_id} if parameter "state" is not '
|
||||
f'halted or poweredoff.'
|
||||
)
|
||||
check_error = True
|
||||
|
||||
if check_error:
|
||||
self.exit(fail=True)
|
||||
|
||||
else:
|
||||
if self.aparams['chipset'] is None:
|
||||
self.message(
|
||||
'Check for parameter "chipset" failed: '
|
||||
'chipset must be specified for a new compute.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
return
|
||||
|
||||
def check_amodule_args(self):
|
||||
"""
|
||||
Additional Ansible Module arguments validation that
|
||||
cannot be implemented using Ansible Argument spec.
|
||||
"""
|
||||
|
||||
# Check parameter "networks" for DPDK type
|
||||
aparam_nets = self.aparams['networks']
|
||||
if aparam_nets:
|
||||
net_types = {net['type'] for net in aparam_nets}
|
||||
DPDK = 'DPDK'
|
||||
if DPDK in net_types and not net_types.issubset({'DPDK', 'EMPTY'}):
|
||||
self.message(
|
||||
'Check for parameter "networks" failed: a compute cannot'
|
||||
' be connected to a DPDK network and a network of another'
|
||||
' type at the same time.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
aparam_custom_fields = self.aparams['custom_fields']
|
||||
if aparam_custom_fields is not None:
|
||||
if (
|
||||
aparam_custom_fields['disable']
|
||||
and aparam_custom_fields['fields'] is not None
|
||||
):
|
||||
self.message(
|
||||
'Check for parameter "custom_fields" failed: '
|
||||
'"fields" cannot be set if "disable" is True.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
def nop(self):
|
||||
"""No operation (NOP) handler for Compute management by decort_kvmvm module.
|
||||
This function is intended to be called from the main switch construct of the module
|
||||
@@ -475,42 +193,45 @@ class decort_kvmvm(DecortController):
|
||||
# each of the following calls will abort if argument is missing
|
||||
self.check_amodule_argument('cpu')
|
||||
self.check_amodule_argument('ram')
|
||||
validated_bdisk_size = self.amodule.params['boot_disk'] or 0
|
||||
|
||||
if self.amodule.params['arch'] not in ["X86_64", "PPC64_LE"]:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Unsupported architecture '{}' is specified for "
|
||||
"KVM VM create.").format(self.amodule.params['arch'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
# fail the module - exit
|
||||
|
||||
validated_bdisk_size = 0
|
||||
|
||||
image_facts = None
|
||||
# either image_name or image_id must be present
|
||||
if self.check_amodule_argument('image_id', abort=False) and self.amodule.params['image_id'] > 0 :
|
||||
# find image by image ID and account ID
|
||||
# image_find(self, image_id, image_name, account_id, rg_id=0, sepid=0, pool=""):
|
||||
_, image_facts = self.image_find(image_id=self.amodule.params['image_id'],
|
||||
image_name="",
|
||||
account_id=self.acc_id)
|
||||
elif self.check_amodule_argument('image_name', abort=False) and self.amodule.params['image_name'] != "":
|
||||
# find image by image name and account ID
|
||||
_, image_facts = self.image_find(image_id=0,
|
||||
image_name=self.amodule.params['image_name'],
|
||||
account_id=self.acc_id)
|
||||
image_id, image_facts = None, None
|
||||
if (
|
||||
self.amodule.params['image_id'] is None
|
||||
and self.amodule.params['image_name'] is None
|
||||
):
|
||||
if self.amodule.params['state'] not in ('poweredoff', 'halted'):
|
||||
self.result['msg'] = (
|
||||
'"state" parameter for a blank Compute must be either '
|
||||
'"poweredoff" or "halted".'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
else:
|
||||
# neither image_name nor image_id are set - abort the script
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = "Missing both 'image_name' and 'image_id'. You need to specify one to create a Compute."
|
||||
self.amodule.fail_json(**self.result)
|
||||
# fail the module - exit
|
||||
# either image_name or image_id must be present
|
||||
if (
|
||||
self.check_amodule_argument('image_id', abort=False)
|
||||
and self.amodule.params['image_id'] > 0
|
||||
):
|
||||
# find image by image ID and account ID
|
||||
# image_find(self, image_id, image_name, account_id, rg_id=0, sepid=0, pool=""):
|
||||
image_id, image_facts = self.image_find(
|
||||
image_id=self.amodule.params['image_id'],
|
||||
image_name="",
|
||||
account_id=self.acc_id)
|
||||
elif (
|
||||
self.check_amodule_argument('image_name', abort=False)
|
||||
and self.amodule.params['image_name'] != ""
|
||||
):
|
||||
# find image by image name and account ID
|
||||
image_id, image_facts = self.image_find(
|
||||
image_id=0,
|
||||
image_name=self.amodule.params['image_name'],
|
||||
account_id=self.acc_id,
|
||||
)
|
||||
|
||||
if ((not self.check_amodule_argument('boot_disk', False)) or
|
||||
self.amodule.params['boot_disk'] <= image_facts['size']):
|
||||
# adjust disk size to the minimum allowed by OS image, which will be used to spin off this Compute
|
||||
validated_bdisk_size = image_facts['size']
|
||||
else:
|
||||
validated_bdisk_size =self.amodule.params['boot_disk']
|
||||
if validated_bdisk_size <= image_facts['size']:
|
||||
# adjust disk size to the minimum allowed by OS image, which will be used to spin off this Compute
|
||||
validated_bdisk_size = image_facts['size']
|
||||
|
||||
# NOTE: due to a libvirt "feature", that impacts management of a VM created without any network interfaces,
|
||||
# we create KVM VM in HALTED state.
|
||||
@@ -531,24 +252,47 @@ class decort_kvmvm(DecortController):
|
||||
"shell": '/bin/bash'}
|
||||
]}
|
||||
elif self.amodule.params['ci_user_data']:
|
||||
cloud_init_params = {}
|
||||
for ci_param in self.amodule.params['ci_user_data']:
|
||||
cloud_init_params.update(ci_param)
|
||||
cloud_init_params = self.amodule.params['ci_user_data']
|
||||
else:
|
||||
cloud_init_params = None
|
||||
|
||||
cpu_pin = self.aparams['cpu_pin']
|
||||
if cpu_pin is None:
|
||||
cpu_pin = False
|
||||
|
||||
hp_backed = self.aparams['hp_backed']
|
||||
if hp_backed is None:
|
||||
hp_backed = False
|
||||
|
||||
numa_affinity = self.aparams['numa_affinity']
|
||||
if numa_affinity is None:
|
||||
numa_affinity = 'none'
|
||||
|
||||
if self.aparams['custom_fields'] is None:
|
||||
custom_fields_disable = True
|
||||
custom_fields_fields = None
|
||||
else:
|
||||
custom_fields_disable = self.aparams['custom_fields']['disable']
|
||||
custom_fields_fields = self.aparams['custom_fields']['fields']
|
||||
|
||||
# if we get through here, all parameters required to create new Compute instance should be at hand
|
||||
|
||||
# NOTE: KVM VM is created in HALTED state and must be explicitly started
|
||||
self.comp_id = self.kvmvm_provision(rg_id=self.rg_id,
|
||||
comp_name=self.amodule.params['name'], arch=self.amodule.params['arch'],
|
||||
comp_name=self.amodule.params['name'],
|
||||
cpu=self.amodule.params['cpu'], ram=self.amodule.params['ram'],
|
||||
boot_disk=validated_bdisk_size,
|
||||
image_id=image_facts['id'],
|
||||
annotation=self.amodule.params['annotation'],
|
||||
image_id=image_id,
|
||||
description=self.amodule.params['description'],
|
||||
userdata=cloud_init_params,
|
||||
sep_id=self.amodule.params['sep_id' ] if "sep_id" in self.amodule.params else None,
|
||||
pool_name=self.amodule.params['pool'] if "pool" in self.amodule.params else None,
|
||||
start_on_create=start_compute)
|
||||
start_on_create=start_compute,
|
||||
chipset=self.amodule.params['chipset'],
|
||||
cpu_pin=cpu_pin,
|
||||
hp_backed=hp_backed,
|
||||
numa_affinity=numa_affinity,
|
||||
custom_fields=custom_fields_fields)
|
||||
self.comp_should_exist = True
|
||||
|
||||
# Originally we would have had to re-read comp_info after VM was provisioned
|
||||
@@ -576,9 +320,17 @@ class decort_kvmvm(DecortController):
|
||||
# Compute was created
|
||||
#
|
||||
# Setup network connections
|
||||
self.compute_networks(self.comp_info, self.amodule.params['networks'])
|
||||
if self.amodule.params['networks'] is not None:
|
||||
self.compute_networks(
|
||||
comp_dict=self.comp_info,
|
||||
new_networks=self.amodule.params['networks'],
|
||||
)
|
||||
# Next manage data disks
|
||||
self.compute_data_disks(self.comp_info, self.amodule.params['data_disks'])
|
||||
if self.amodule.params['data_disks'] is not None:
|
||||
self.compute_data_disks(
|
||||
comp_dict=self.comp_info,
|
||||
new_data_disks=self.amodule.params['data_disks'],
|
||||
)
|
||||
|
||||
self.compute_affinity(self.comp_info,
|
||||
self.amodule.params['tag'],
|
||||
@@ -625,21 +377,78 @@ class decort_kvmvm(DecortController):
|
||||
|
||||
Note that it does not modify power state of KVM VM.
|
||||
"""
|
||||
self.compute_networks(self.comp_info, self.amodule.params['networks'])
|
||||
self.compute_bootdisk_size(self.comp_info, self.amodule.params['boot_disk'])
|
||||
self.compute_data_disks(self.comp_info, self.amodule.params['data_disks'])
|
||||
if self.amodule.params['networks'] is not None:
|
||||
self.compute_networks(
|
||||
comp_dict=self.comp_info,
|
||||
new_networks=self.aparams['networks'],
|
||||
order_changing=self.aparams['network_order_changing'],
|
||||
)
|
||||
|
||||
boot_disk_new_size = self.amodule.params['boot_disk']
|
||||
if boot_disk_new_size:
|
||||
self.compute_bootdisk_size(self.comp_info, boot_disk_new_size)
|
||||
|
||||
if self.amodule.params['data_disks'] is not None:
|
||||
self.compute_data_disks(self.comp_info, self.amodule.params['data_disks'])
|
||||
|
||||
self.compute_resize(self.comp_info,
|
||||
self.amodule.params['cpu'], self.amodule.params['ram'],
|
||||
wait_for_state_change=arg_wait_cycles)
|
||||
|
||||
|
||||
self.compute_affinity(self.comp_info,
|
||||
self.amodule.params['tag'],
|
||||
self.amodule.params['aff_rule'],
|
||||
self.amodule.params['aaff_rule'],
|
||||
label=self.amodule.params['affinity_label'])
|
||||
|
||||
if self.compute_update_args:
|
||||
self.compute_update(
|
||||
compute_id=self.comp_info['id'],
|
||||
**self.compute_update_args,
|
||||
)
|
||||
|
||||
aparam_custom_fields = self.amodule.params['custom_fields']
|
||||
if aparam_custom_fields is not None:
|
||||
compute_custom_fields = self.compute_get_custom_fields(
|
||||
compute_id=self.comp_info['id'],
|
||||
)
|
||||
if aparam_custom_fields['disable']:
|
||||
if compute_custom_fields is not None:
|
||||
self.compute_disable_custom_fields(
|
||||
compute_id=self.comp_info['id'],
|
||||
)
|
||||
else:
|
||||
if compute_custom_fields != aparam_custom_fields['fields']:
|
||||
self.compute_set_custom_fields(
|
||||
compute_id=self.comp_info['id'],
|
||||
custom_fields=aparam_custom_fields['fields'],
|
||||
)
|
||||
|
||||
return
|
||||
|
||||
@property
|
||||
def compute_update_args(self) -> dict:
|
||||
result_args = {}
|
||||
|
||||
params_to_check = {
|
||||
'name': 'name',
|
||||
'chipset': 'chipset',
|
||||
'cpu_pin': 'cpupin',
|
||||
'hp_backed': 'hpBacked',
|
||||
'numa_affinity': 'numaAffinity',
|
||||
'description': 'desc',
|
||||
}
|
||||
for param_name, comp_field_name in params_to_check.items():
|
||||
aparam_value = self.amodule.params[param_name]
|
||||
if (
|
||||
aparam_value is not None
|
||||
and aparam_value != self.comp_info[comp_field_name]
|
||||
):
|
||||
result_args[param_name] = aparam_value
|
||||
|
||||
return result_args
|
||||
|
||||
|
||||
def package_facts(self, check_mode=False):
|
||||
"""Package a dictionary of KVM VM facts according to the decort_kvmvm module specification.
|
||||
This dictionary will be returned to the upstream Ansible engine at the completion of decort_kvmvm
|
||||
@@ -668,6 +477,12 @@ class decort_kvmvm(DecortController):
|
||||
private_ips=[], # IPs on ViNSes; usually, at least one IP is listed
|
||||
nat_ip="", # IP of the external ViNS interface; can be empty.
|
||||
tags={},
|
||||
chipset="",
|
||||
interfaces=[],
|
||||
cpu_pin="",
|
||||
hp_backed="",
|
||||
numa_affinity="",
|
||||
custom_fields={},
|
||||
)
|
||||
|
||||
if check_mode or self.comp_info is None:
|
||||
@@ -720,8 +535,50 @@ class decort_kvmvm(DecortController):
|
||||
# if it is a data disk - append its ID to the list of data disks IDs
|
||||
ret_dict['data_disks'].append(ddisk['id'])
|
||||
|
||||
ret_dict['chipset'] = self.comp_info['chipset']
|
||||
|
||||
ret_dict['interfaces'] = self.comp_info['interfaces']
|
||||
|
||||
ret_dict['cpu_pin'] = self.comp_info['cpupin']
|
||||
ret_dict['hp_backed'] = self.comp_info['hpBacked']
|
||||
ret_dict['numa_affinity'] = self.comp_info['numaAffinity']
|
||||
|
||||
ret_dict['custom_fields'] = self.compute_get_custom_fields(
|
||||
compute_id=self.comp_info['id'],
|
||||
)
|
||||
|
||||
return ret_dict
|
||||
|
||||
def check_amodule_args_for_create(self):
|
||||
# Check for unacceptable parameters for a blank Compute
|
||||
if (
|
||||
self.aparams['image_id'] is None
|
||||
and self.aparams['image_name'] is None
|
||||
):
|
||||
for parameter in (
|
||||
'ssh_key',
|
||||
'ssh_key_user',
|
||||
'ci_user_data',
|
||||
):
|
||||
if self.aparams[parameter] is not None:
|
||||
self.message(
|
||||
f'Check for parameter "{parameter}" failed: '
|
||||
f'"image_id" or "image_name" must be specified '
|
||||
f'to set {parameter}.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
if (
|
||||
self.aparams['sep_id'] is not None
|
||||
and self.aparams['boot_disk'] is None
|
||||
):
|
||||
self.message(
|
||||
'Check for parameter "sep_id" failed: '
|
||||
'"image_id" or "image_name" or "boot_disk" '
|
||||
'must be specified to set sep_id.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
@staticmethod
|
||||
def build_parameters():
|
||||
"""Build and return a dictionary of parameters expected by decort_kvmvm module in a form
|
||||
@@ -733,9 +590,7 @@ class decort_kvmvm(DecortController):
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False, default=0),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str',
|
||||
default='',
|
||||
required=False),
|
||||
description=dict(type='str', required=False),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -743,7 +598,6 @@ class decort_kvmvm(DecortController):
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_SECRET']),
|
||||
no_log=True),
|
||||
arch=dict(type='str', choices=['X86_64', 'PPC64_LE'], default='X86_64'),
|
||||
authenticator=dict(type='str',
|
||||
required=True,
|
||||
choices=['legacy', 'oauth2', 'jwt']),
|
||||
@@ -754,7 +608,7 @@ class decort_kvmvm(DecortController):
|
||||
# count=dict(type='int', required=False, default=1),
|
||||
cpu=dict(type='int', required=False),
|
||||
# datacenter=dict(type='str', required=False, default=''),
|
||||
data_disks=dict(type='list', default=[], required=False), # list of integer disk IDs
|
||||
data_disks=dict(type='list', required=False), # list of integer disk IDs
|
||||
id=dict(type='int', required=False, default=0),
|
||||
image_id=dict(type='int', required=False),
|
||||
image_name=dict(type='str', required=False),
|
||||
@@ -763,7 +617,39 @@ class decort_kvmvm(DecortController):
|
||||
fallback=(env_fallback, ['DECORT_JWT']),
|
||||
no_log=True),
|
||||
name=dict(type='str'),
|
||||
networks=dict(type='list', default=[], required=False), # list of dictionaries
|
||||
networks=dict(
|
||||
type='list',
|
||||
elements='dict',
|
||||
options=dict(
|
||||
type=dict(
|
||||
type='str',
|
||||
required=True,
|
||||
choices=[
|
||||
'VINS',
|
||||
'EXTNET',
|
||||
'VFNIC',
|
||||
'DPDK',
|
||||
'EMPTY',
|
||||
],
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
ip_addr=dict(
|
||||
type='str',
|
||||
),
|
||||
),
|
||||
required_if=[
|
||||
('type', 'VINS', ('id',)),
|
||||
('type', 'EXTNET', ('id',)),
|
||||
('type', 'VFNIC', ('id',)),
|
||||
('type', 'DPDK', ('id',)),
|
||||
],
|
||||
),
|
||||
network_order_changing=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
),
|
||||
oauth2_url=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_OAUTH2_URL'])),
|
||||
@@ -780,7 +666,7 @@ class decort_kvmvm(DecortController):
|
||||
affinity_label=dict(type='str', required=False),
|
||||
aff_rule=dict(type='list', required=False),
|
||||
aaff_rule=dict(type='list', required=False),
|
||||
ci_user_data=dict(type='list',elements='dict', required=False),
|
||||
ci_user_data=dict(type='dict', required=False),
|
||||
state=dict(type='str',
|
||||
default='present',
|
||||
choices=['absent', 'paused', 'poweredoff', 'halted', 'poweredon', 'present', 'check']),
|
||||
@@ -792,7 +678,54 @@ class decort_kvmvm(DecortController):
|
||||
# wait_for_ip_address=dict(type='bool', required=False, default=False),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),
|
||||
chipset=dict(
|
||||
type='str',
|
||||
choices=['Q35', 'i440fx']
|
||||
),
|
||||
cpu_pin=dict(
|
||||
type='bool',
|
||||
),
|
||||
hp_backed=dict(
|
||||
type='bool',
|
||||
),
|
||||
numa_affinity=dict(
|
||||
type='str',
|
||||
choices=['strict', 'loose', 'none'],
|
||||
),
|
||||
custom_fields=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
fields=dict(
|
||||
type='dict',
|
||||
),
|
||||
disable=dict(
|
||||
type='bool',
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
def check_amodule_args_for_change(self):
|
||||
new_boot_disk_size = self.amodule.params['boot_disk']
|
||||
if new_boot_disk_size is not None:
|
||||
for disk in self.comp_info['disks']:
|
||||
if disk['type'] == 'B':
|
||||
boot_disk_size = disk['sizeMax']
|
||||
break
|
||||
else:
|
||||
self.message(
|
||||
f'Can\'t set boot disk size for Compute '
|
||||
f'{self.comp_info["id"]}, because it doesn\'t have a '
|
||||
f'boot disk.'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
if new_boot_disk_size < boot_disk_size:
|
||||
self.message(
|
||||
f'New boot disk size {new_boot_disk_size} is less than '
|
||||
f'current {boot_disk_size} for Compute ID '
|
||||
f'{self.comp_info["id"]}'
|
||||
)
|
||||
self.exit(fail=True)
|
||||
|
||||
# Workflow digest:
|
||||
# 1) authenticate to DECORT controller & validate authentication by issuing API call - done when creating DECSController
|
||||
@@ -852,6 +785,8 @@ def main():
|
||||
pass
|
||||
|
||||
if subj.comp_id:
|
||||
subj.check_amodule_args_for_change()
|
||||
|
||||
if subj.comp_info['status'] in ("DISABLED", "MIGRATING", "DELETING", "DESTROYING", "ERROR", "REDEPLOYING"):
|
||||
# cannot do anything on the existing Compute in the listed states
|
||||
subj.error() # was subj.nop()
|
||||
@@ -883,6 +818,8 @@ def main():
|
||||
elif amodule.params['state'] == 'paused':
|
||||
subj.error()
|
||||
else:
|
||||
subj.check_amodule_args_for_create()
|
||||
|
||||
# Preexisting Compute of specified identity was not found.
|
||||
# If requested state is 'absent' - nothing to do
|
||||
if amodule.params['state'] == 'absent':
|
||||
|
||||
@@ -1,29 +1,17 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2023 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_lb
|
||||
|
||||
DOCUMENTATION = '''
|
||||
TODO
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
TODO
|
||||
'''
|
||||
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import env_fallback
|
||||
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_lb(DecortController):
|
||||
def __init__(self,arg_amodule) -> None:
|
||||
super(decort_lb,self).__init__(arg_amodule)
|
||||
@@ -47,7 +35,7 @@ class decort_lb(DecortController):
|
||||
"rise": 2,
|
||||
"slowstart": 60000,
|
||||
"weight": 100,
|
||||
}
|
||||
}
|
||||
if arg_amodule.params['lb_id']:
|
||||
self.lb_id, self.lb_facts = self.lb_find(arg_amodule.params['lb_id'])
|
||||
if not self.lb_id:
|
||||
@@ -55,7 +43,6 @@ class decort_lb(DecortController):
|
||||
self.result['msg'] = "Specified LB ID {} not found."\
|
||||
.format(arg_amodule.params['lb _id'])
|
||||
self.fail_json(**self.result)
|
||||
self.acc_id = self.lb_facts['accountId']
|
||||
self.rg_id = self.lb_facts['rgId']
|
||||
self.vins_id = self.lb_facts['vinsId']
|
||||
return
|
||||
@@ -65,31 +52,48 @@ class decort_lb(DecortController):
|
||||
if not self.rg_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = "Specified RG ID {} not found.".format(arg_amodule.params['vins_id'])
|
||||
self.fail_json(**self.result)
|
||||
|
||||
if arg_amodule.params['vins_id']:
|
||||
self.vins_id, self.vins_facts = self.vins_find(arg_amodule.params['vins_id'])
|
||||
if not self.vins_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = "Specified ViNS ID {} not found.".format(arg_amodule.params['vins_id'])
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
elif arg_amodule.params['account_id'] or arg_amodule.params['account_name'] != "":
|
||||
|
||||
if arg_amodule.params['rg_name']:
|
||||
if not arg_amodule.params['rg_name']:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("RG name must be specified with account present")
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
self.acc_id, self.acc_facts = self.account_find(arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
if not self.acc_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Current user does not have access to the requested account "
|
||||
"or non-existent account specified.")
|
||||
self.fail_json(**self.result)
|
||||
self.rg_id, self.rg_facts = self.rg_find(self._acc_id,0, arg_rg_name=arg_amodule.params['rg_name'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
self.rg_id, self.rg_facts = self.rg_find(self.acc_id,0, arg_rg_name=arg_amodule.params['rg_name'])
|
||||
|
||||
if self.rg_id and self.vins_id:
|
||||
if arg_amodule.params['vins_id']:
|
||||
self.vins_id, self.vins_facts = self.vins_find(
|
||||
vins_id=arg_amodule.params['vins_id']
|
||||
)
|
||||
if not self.vins_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = (
|
||||
f'Specified ViNS ID {arg_amodule.params["vins_id"]}'
|
||||
f' not found'
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
elif arg_amodule.params['vins_name']:
|
||||
self.vins_id, self.vins_facts = self.vins_find(
|
||||
vins_id=arg_amodule.params['vins_id'],
|
||||
vins_name=arg_amodule.params['vins_name'],
|
||||
rg_id=self.rg_id)
|
||||
if not self.vins_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = (
|
||||
f'Specified ViNS name {arg_amodule.params["vins_name"]}'
|
||||
f' not found in RG ID {self.rg_id}'
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
if self.rg_id and arg_amodule.params['lb_name']:
|
||||
self.lb_id, self.lb_facts = self.lb_find(0,arg_amodule.params['lb_name'],self.rg_id)
|
||||
return
|
||||
|
||||
@@ -97,10 +101,15 @@ class decort_lb(DecortController):
|
||||
self.lb_id = self.lb_provision(self.amodule.params['lb_name'],
|
||||
self.rg_id,self.vins_id,
|
||||
self.amodule.params['ext_net_id'],
|
||||
self.amodule.params['annotation'])
|
||||
if self.amodule.params['backends'] or self.amodule.params['frontends']:
|
||||
self.amodule.params['ha_lb'],
|
||||
self.amodule.params['description'])
|
||||
if self.lb_id and (self.amodule.params['backends'] or
|
||||
self.amodule.params['frontends']):
|
||||
self.lb_id, self.lb_facts = self.lb_find(0,self.amodule.params['lb_name'],self.rg_id)
|
||||
self.lb_update(
|
||||
self.lb_facts['primaryNode'],
|
||||
self.lb_facts['frontendHAIP'],
|
||||
self.lb_facts['backendHAIP'],
|
||||
self.lb_facts['backends'],
|
||||
self.lb_facts['frontends'],
|
||||
self.amodule.params['backends'],
|
||||
@@ -111,21 +120,32 @@ class decort_lb(DecortController):
|
||||
|
||||
def action(self,d_state='',restore=False):
|
||||
if restore == True:
|
||||
self.lb_restore(arg_vins_id=self.lb_id)
|
||||
self.lb_state(self.vins_facts, 'enabled')
|
||||
self.lb_facts['status'] = "ENABLED"
|
||||
self.lb_facts['techStatus'] = "STARTED"
|
||||
self.lb_restore(lb_id=self.lb_id)
|
||||
_, self.lb_facts = self._lb_get_by_id(lb_id=self.lb_id)
|
||||
self.lb_state(self.lb_facts, 'enabled')
|
||||
_, self.lb_facts = self._lb_get_by_id(lb_id=self.lb_id)
|
||||
|
||||
self.lb_update(
|
||||
self.lb_facts['primaryNode'],
|
||||
self.lb_facts['frontendHAIP'],
|
||||
self.lb_facts['backendHAIP'],
|
||||
self.lb_facts['backends'],
|
||||
self.lb_facts['frontends'],
|
||||
self.amodule.params['backends'],
|
||||
self.amodule.params['servers'],
|
||||
self.amodule.params['frontends']
|
||||
self.amodule.params['frontends'],
|
||||
)
|
||||
|
||||
if d_state != '':
|
||||
self.lb_state(self.lb_facts, d_state)
|
||||
_, self.lb_facts = self._lb_get_by_id(lb_id=self.lb_id)
|
||||
|
||||
if (d_state == 'enabled' and
|
||||
self.lb_facts.get('status') == 'ENABLED' and
|
||||
self.lb_facts.get('techStatus') == 'STOPPED'):
|
||||
self.lb_state(self.lb_facts, 'started')
|
||||
_, self.lb_facts = self._lb_get_by_id(lb_id=self.lb_id)
|
||||
|
||||
return
|
||||
|
||||
def delete(self):
|
||||
@@ -142,7 +162,7 @@ class decort_lb(DecortController):
|
||||
self.result['changed'] = False
|
||||
if self.lb_id:
|
||||
self.result['msg'] = ("No state change required for LB ID {} because of its "
|
||||
"current status '{}'.").format(self.lb_id, self.vins_facts['status'])
|
||||
"current status '{}'.").format(self.lb_id, self.lb_facts['status'])
|
||||
else:
|
||||
self.result['msg'] = ("No state change to '{}' can be done for "
|
||||
"non-existent LB instance.").format(self.amodule.params['state'])
|
||||
@@ -181,7 +201,7 @@ class decort_lb(DecortController):
|
||||
# in check mode return immediately with the default values
|
||||
return ret_dict
|
||||
|
||||
if self.vins_facts is None:
|
||||
if self.lb_facts is None:
|
||||
# if void facts provided - change state value to ABSENT and return
|
||||
ret_dict['state'] = "ABSENT"
|
||||
return ret_dict
|
||||
@@ -204,7 +224,7 @@ class decort_lb(DecortController):
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default='Managed by Ansible module decort_lb'),
|
||||
description=dict(type='str', required=False, default='Managed by Ansible module decort_lb'),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -242,10 +262,11 @@ class decort_lb(DecortController):
|
||||
vins_id=dict(type='int', required=False, default=0),
|
||||
verify_ssl=dict(type='bool', required=False, default=True),
|
||||
lb_id=dict(type='int', required=False, default=0),
|
||||
lb_name=dict(type='str', required=True),
|
||||
backends=dict(type='list',required=False,default=[]),
|
||||
frontends=dict(type='list',required=False,default=[]),
|
||||
servers=dict(type='list',required=False,default=[]),
|
||||
lb_name=dict(type='str'),
|
||||
ha_lb=dict(type='bool', required=False, default=False),
|
||||
backends=dict(type='list',required=False),
|
||||
frontends=dict(type='list',required=False),
|
||||
servers=dict(type='list',required=False),
|
||||
permanently=dict(type='bool', required=False, default=False),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),
|
||||
@@ -281,23 +302,24 @@ def main():
|
||||
elif decon.lb_facts['status'] == "DISABLED":
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.delete()
|
||||
elif amodule.params['state'] in ('present', 'disabled'):
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.action()
|
||||
elif amodule.params['state'] == 'enabled':
|
||||
elif amodule.params['state'] in ('enabled', 'present'):
|
||||
decon.action('enabled')
|
||||
elif decon.lb_facts['status'] in ["CREATED", "ENABLED"]:
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.delete()
|
||||
elif amodule.params['state'] in ('present', 'enabled'):
|
||||
decon.action()
|
||||
decon.action(d_state='enabled')
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.action('disabled')
|
||||
elif amodule.params['state'] in ('stopped', 'started','restart'):
|
||||
decon.action(amodule.params['state'])
|
||||
elif decon.lb_facts['status'] == "DELETED":
|
||||
if amodule.params['state'] in ['present', 'enabled']:
|
||||
decon.action(restore=True)
|
||||
elif amodule.params['state'] == 'absent':
|
||||
decon.action(d_state='enabled', restore=True)
|
||||
elif (amodule.params['state'] == 'absent' and
|
||||
amodule.params['permanently']):
|
||||
decon.delete()
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.error()
|
||||
|
||||
@@ -1,289 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Sergey Shubin (sergey.shubin@digitalenergy.online)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_osimage
|
||||
short_description: Locate OS image in DCORT cloud by its name and return image ID
|
||||
description: >
|
||||
This module can be used to obtain image ID of an OS image in DECORT cloud to use with subsequent calls to
|
||||
decort_vm module for batch VM provisioning. It will speed up VM creation and save a bunch of extra calls to
|
||||
DECORT cloud controller on each VM creation act.
|
||||
|
||||
version_added: "2.2"
|
||||
author:
|
||||
- Sergey Shubin <sergey.shubin@digitalenergy.online>
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.6.1 or higher.
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
options:
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to obtain OS image details.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
image_name:
|
||||
description:
|
||||
- Name of the OS image to use. Module will return the ID of this image.
|
||||
- 'The specified image name will be looked up in the target DECORT controller and error will be generated
|
||||
- if no matching image is found.'
|
||||
required: yes
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
pool:
|
||||
description:
|
||||
- 'Name of the storage pool, where the image should be found.'
|
||||
- 'Omit this option if no matching by pool name is required. The first matching image will be returned."
|
||||
required: no
|
||||
sep_id:
|
||||
description:
|
||||
- 'ID of the SEP (Storage End-point Provider), where the image should be found.'
|
||||
- 'Omit this option if no matching by SEP ID is required. The first matching image will be returned."
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account for which the specified OS image will be looked up.'
|
||||
- 'This parameter is required for listing OS images.'
|
||||
required: yes
|
||||
user:
|
||||
description:
|
||||
- 'Name of the legacy user for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required when I(authenticator=legacy) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_USER environment variable.
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Account name. Used to get a unique integer account ID.'
|
||||
required: no
|
||||
virt_id:
|
||||
description:
|
||||
- 'A unique integer identifier for the virtual image.'
|
||||
- 'Can be used to obtain information about a virtual image, as well as to create a virtual image and
|
||||
- bind another operating system image to it.'
|
||||
required: no
|
||||
virt_name:
|
||||
description:
|
||||
- 'Name of the virtual image. Used to get the `virt_id`, and later information about the virtual image,
|
||||
- as well as to create a virtual image and bind another operating system image to it.'
|
||||
required: no
|
||||
state:
|
||||
description:
|
||||
- 'The state of the images. If set to present, operating system images will be created to which
|
||||
- the account specified in `account_Id` or `account_name` is bound. If set to absent, they will be removed.
|
||||
required: no
|
||||
drivers:
|
||||
description:
|
||||
- 'A list of compute types (eg virtual servers) that are appropriate for the operating system image.
|
||||
- Note: `KVM_X86`. Used when creating an operating system image.'
|
||||
required: no
|
||||
architecture:
|
||||
description:
|
||||
- 'Binary architecture of the image. Note. `X86_64` or `PPC64_LE`. Used when creating
|
||||
-an operating system image.'
|
||||
required: no
|
||||
imagetype:
|
||||
description:
|
||||
- 'Image type. `linux`, `windows` or `other`. The default is `linux`. Used when creating
|
||||
- an operating system image.'
|
||||
required: no
|
||||
boottype:
|
||||
description:
|
||||
- 'Image upload type. `bios` or `uefi`. The default is `uefi`. Used when creating an operating
|
||||
-system image.'
|
||||
required: no
|
||||
url:
|
||||
description:
|
||||
- 'Uniform resource locator (URL) pointing to the iso image of the operating system. Used when
|
||||
-creating an operating system image.'
|
||||
required: no
|
||||
sepId:
|
||||
description:
|
||||
- 'The unique integer ID of the storage provider endpoint. Specified in pair with `poolName`.
|
||||
- Used when creating an operating system image.'
|
||||
required: no
|
||||
poolName:
|
||||
description:
|
||||
- 'The pool in which the image will be created. Specified in pair with `sepId`. Used when creating
|
||||
- an operating system image.'
|
||||
required: no
|
||||
hotresize:
|
||||
description:
|
||||
- 'Whether the image supports "hot" resizing. The default is `false`. Used when creating an operating
|
||||
- system image.'
|
||||
required: no
|
||||
image_username:
|
||||
description:
|
||||
- 'An optional username for the image. Used when creating an operating system image.'
|
||||
required: no
|
||||
image_password:
|
||||
description:
|
||||
- 'An optional password for the image. Used when creating an operating system image. Used when creating
|
||||
- an operating system image.'
|
||||
required: no
|
||||
usernameDL:
|
||||
description:
|
||||
- 'The username for loading the binary media. Used in conjunction with `passwordDL`. Used when creating
|
||||
- an operating system image'
|
||||
required: no
|
||||
passwordDL:
|
||||
description:
|
||||
- 'The password for loading the binary media. Used in conjunction with `usernameDL`. Used when creating
|
||||
- an operating system image.'
|
||||
required: no
|
||||
permanently:
|
||||
description:
|
||||
- 'Whether to permanently delete the image. Used when deleting an image. The default is false.'
|
||||
required: no
|
||||
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: create_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
verify_ssl: False
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
state: present
|
||||
image_name: "alpine_linux3.14.0"
|
||||
account_Id: 12345
|
||||
url: "https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-virt-3.14.0-x86_64.iso"
|
||||
boottype: "uefi"
|
||||
imagetype: "linux"
|
||||
hotresize: False
|
||||
image_username: "test"
|
||||
image_password: "p@ssw0rd"
|
||||
usernameDL: "testDL"
|
||||
passwordDL: "p@ssw0rdDL"
|
||||
architecture: "X86_64"
|
||||
drivers: "KVM_X86"
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
|
||||
- name: get_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0"
|
||||
account_Id: 12345
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
|
||||
- name: create_virtual_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0"
|
||||
virt_name: "alpine_last"
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
|
||||
- name: rename_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0v2.0"
|
||||
image_id: 54321
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
|
||||
|
||||
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about the specified OS image
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
id: 100
|
||||
linkto: 80
|
||||
name: "Ubuntu 16.04 v1.0"
|
||||
size: 3
|
||||
sep_id: 1
|
||||
pool: "vmstore"
|
||||
type: Linux
|
||||
arch: x86_64
|
||||
state: CREATED
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
@@ -291,6 +12,7 @@ from ansible.module_utils.basic import env_fallback
|
||||
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_osimage(DecortController):
|
||||
def __init__(self,amodule):
|
||||
super(decort_osimage, self).__init__(amodule)
|
||||
@@ -313,9 +35,17 @@ class decort_osimage(DecortController):
|
||||
amodule.fail_json(**self.result)
|
||||
|
||||
|
||||
if amodule.params['image_id'] != 0 and amodule.params['image_name']:
|
||||
self.validated_image_id = amodule.params['image_id']
|
||||
if amodule.params['image_name']:
|
||||
if amodule.params['virt_id'] != 0 and amodule.params['virt_name']:
|
||||
self.validated_virt_image_id, image_facts =\
|
||||
self.decort_virt_image_find(amodule)
|
||||
if (self.validated_virt_image_id and
|
||||
amodule.params['virt_name'] != image_facts['name']):
|
||||
self.decort_virt_image_rename(amodule)
|
||||
self.result['msg'] = 'Virtual image renamed successfully'
|
||||
elif amodule.params['image_id'] != 0 and amodule.params['image_name']:
|
||||
self.validated_image_id, image_facts = self.decort_image_find(amodule)
|
||||
if (self.validated_image_id and
|
||||
amodule.params['image_name'] != image_facts['name']):
|
||||
decort_osimage.decort_image_rename(self,amodule)
|
||||
self.result['msg'] = ("Image renamed successfully")
|
||||
|
||||
@@ -350,34 +80,33 @@ class decort_osimage(DecortController):
|
||||
hotresize=amodule.params['hotresize'],
|
||||
username=amodule.params['image_username'],
|
||||
password=amodule.params['image_password'],
|
||||
account_Id=amodule.params['account_Id'],
|
||||
account_Id=self.validated_account_id,
|
||||
usernameDL=amodule.params['usernameDL'],
|
||||
passwordDL=amodule.params['passwordDL'],
|
||||
sepId=amodule.params['sepId'],
|
||||
poolName=amodule.params['poolName'],
|
||||
architecture=amodule.params['architecture'],
|
||||
drivers=amodule.params['drivers'])
|
||||
self.result['changed'] = True
|
||||
return image_facts
|
||||
|
||||
def decort_virt_image_link(self,amodule):
|
||||
# function that links an OS image to a virtual one
|
||||
self.virt_image_link(imageId=self.validated_virt_image_id, targetId=self.validated_image_id)
|
||||
self.virt_image_link(imageId=self.validated_virt_image_id, targetId=self.target_image_id)
|
||||
image_id, image_facts = decort_osimage.decort_virt_image_find(self, amodule)
|
||||
self.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
self.result['msg'] = ("Image '{}' linked to virtual image '{}'").format(self.validated_image_id,
|
||||
self.result['msg'] = ("Image '{}' linked to virtual image '{}'").format(self.target_image_id,
|
||||
decort_osimage.decort_osimage_package_facts(image_facts)['id'],)
|
||||
return image_id, image_facts
|
||||
|
||||
def decort_image_delete(self,amodule):
|
||||
# function that removes an image
|
||||
self.image_delete(imageId=amodule.image_id_delete, permanently=amodule.params['permanently'])
|
||||
self.image_delete(imageId=amodule.image_id_delete)
|
||||
self.result['changed'] = True
|
||||
self.result['msg'] = ("Image '{}' deleted").format(amodule.image_id_delete)
|
||||
|
||||
def decort_virt_image_create(self,amodule):
|
||||
# function that creates a virtual image
|
||||
image_facts = self.virt_image_create(name=amodule.params['virt_name'], targetId=self.validated_image_id)
|
||||
image_facts = self.virt_image_create(name=amodule.params['virt_name'], targetId=self.target_image_id)
|
||||
image_id, image_facts = decort_osimage.decort_virt_image_find(self, amodule)
|
||||
self.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
return image_id, image_facts
|
||||
@@ -389,6 +118,12 @@ class decort_osimage(DecortController):
|
||||
image_id, image_facts = decort_osimage.decort_image_find(self, amodule)
|
||||
return image_id, image_facts
|
||||
|
||||
def decort_virt_image_rename(self, amodule):
|
||||
image_facts = self.image_rename(imageId=self.validated_virt_image_id,
|
||||
name=amodule.params['virt_name'])
|
||||
self.result['msg'] = ("Virtual image renamed successfully")
|
||||
image_id, image_facts = self.decort_virt_image_find(amodule)
|
||||
return image_id, image_facts
|
||||
|
||||
def decort_osimage_package_facts(arg_osimage_facts, arg_check_mode=False):
|
||||
"""Package a dictionary of OS image according to the decort_osimage module specification. This
|
||||
@@ -473,7 +208,6 @@ class decort_osimage(DecortController):
|
||||
default='present',
|
||||
choices=['absent', 'present']),
|
||||
drivers=dict(type='str', required=False, default="KVM_X86"),
|
||||
architecture=dict(type='str', required=False, default="X86_64"),
|
||||
imagetype=dict(type='str', required=False, default="linux"),
|
||||
boottype=dict(type='str', required=False, default="uefi"),
|
||||
url=dict(type='str', required=False),
|
||||
@@ -485,7 +219,6 @@ class decort_osimage(DecortController):
|
||||
image_password=dict(type='str', required=False),
|
||||
usernameDL=dict(type='str', required=False),
|
||||
passwordDL=dict(type='str', required=False),
|
||||
permanently=dict(type='bool', required=False, default=False),
|
||||
)
|
||||
|
||||
|
||||
@@ -507,59 +240,54 @@ def main():
|
||||
|
||||
decon = decort_osimage(amodule)
|
||||
|
||||
if amodule.params['image_name'] or amodule.params['image_id']:
|
||||
image_id, image_facts = decort_osimage.decort_image_find(decon, amodule)
|
||||
decon.validated_image_id = decort_osimage.decort_osimage_package_facts(image_facts)['id']
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['id'] > 0:
|
||||
decon.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
|
||||
if amodule.params['state'] == "present" and decon.validated_image_id == 0 and amodule.params['image_name'] and amodule.params['url']:
|
||||
decort_osimage.decort_image_create(decon,amodule)
|
||||
decon.result['changed'] = True
|
||||
image_id, image_facts = decort_osimage.decort_image_find(decon, amodule)
|
||||
decon.result['msg'] = ("OS image '{}' created").format(decort_osimage.decort_osimage_package_facts(image_facts)['id'])
|
||||
decon.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
decon.validated_image_id = decort_osimage.decort_osimage_package_facts(image_facts)['id']
|
||||
|
||||
|
||||
elif amodule.params['state'] == "absent":
|
||||
if amodule.params['image_name'] or amodule.params['image_id'] and\
|
||||
decort_osimage.decort_osimage_package_facts(image_facts)['accountId'] == amodule.params['account_Id']:
|
||||
amodule.image_id_delete = decon.validated_image_id
|
||||
decort_osimage.decort_image_delete(decon,amodule)
|
||||
|
||||
|
||||
|
||||
if amodule.params['virt_name'] or amodule.params['virt_id']:
|
||||
|
||||
image_id, image_facts = decort_osimage.decort_virt_image_find(decon, amodule)
|
||||
if amodule.params['image_name'] or amodule.params['image_id']:
|
||||
decon.target_image_id, _ = decort_osimage.decort_image_find(decon, amodule)
|
||||
else:
|
||||
decon.target_image_id = 0
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['id'] > 0:
|
||||
decon.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
decon.validated_virt_image_id = decort_osimage.decort_osimage_package_facts(image_facts)['id']
|
||||
decon.validated_virt_image_name = decort_osimage.decort_osimage_package_facts(image_facts)['name']
|
||||
|
||||
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['id'] == 0 and amodule.params['state'] == "present" and decon.validated_image_id > 0:
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['id'] == 0 and amodule.params['state'] == "present" and decon.target_image_id > 0:
|
||||
image_id, image_facts = decort_osimage.decort_virt_image_create(decon,amodule)
|
||||
decon.result['msg'] = ("Virtual image '{}' created").format(decort_osimage.decort_osimage_package_facts(image_facts)['id'])
|
||||
decon.result['changed'] = True
|
||||
elif decort_osimage.decort_osimage_package_facts(image_facts)['id'] == 0 and amodule.params['state'] == "present" and decon.validated_image_id == 0:
|
||||
elif decort_osimage.decort_osimage_package_facts(image_facts)['id'] == 0 and amodule.params['state'] == "present" and decon.target_image_id == 0:
|
||||
decon.result['msg'] = ("Cannot find OS image")
|
||||
amodule.fail_json(**decon.result)
|
||||
|
||||
|
||||
if decon.validated_image_id:
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['linkto'] != decon.validated_image_id:
|
||||
if decon.validated_virt_image_id and decon.target_image_id:
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['linkto'] != decon.target_image_id:
|
||||
decort_osimage.decort_virt_image_link(decon,amodule)
|
||||
decon.result['changed'] = True
|
||||
amodule.exit_json(**decon.result)
|
||||
|
||||
|
||||
if decon.validated_virt_image_id > 0 and amodule.params['state'] == "absent":
|
||||
decon.result['msg'] = ("Osimage module cannot delete virtual images.")
|
||||
decon.result['failed'] = True
|
||||
amodule.exit_json(**decon.result)
|
||||
|
||||
elif amodule.params['image_name'] or amodule.params['image_id']:
|
||||
image_id, image_facts = decort_osimage.decort_image_find(decon, amodule)
|
||||
decon.validated_image_id = decort_osimage.decort_osimage_package_facts(image_facts)['id']
|
||||
if decort_osimage.decort_osimage_package_facts(image_facts)['id'] > 0:
|
||||
decon.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
|
||||
if amodule.params['state'] == "present" and decon.validated_image_id == 0 and amodule.params['image_name'] and amodule.params['url']:
|
||||
decort_osimage.decort_image_create(decon,amodule)
|
||||
decon.result['changed'] = True
|
||||
image_id, image_facts = decort_osimage.decort_image_find(decon, amodule)
|
||||
decon.result['msg'] = ("OS image '{}' created").format(decort_osimage.decort_osimage_package_facts(image_facts)['id'])
|
||||
decon.result['facts'] = decort_osimage.decort_osimage_package_facts(image_facts, amodule.check_mode)
|
||||
decon.validated_image_id = decort_osimage.decort_osimage_package_facts(image_facts)['id']
|
||||
|
||||
elif amodule.params['state'] == "absent" and decon.validated_image_id:
|
||||
amodule.image_id_delete = decon.validated_image_id
|
||||
decort_osimage.decort_image_delete(decon,amodule)
|
||||
|
||||
if decon.result['failed'] == True:
|
||||
# we failed to find the specified image - fail the module
|
||||
|
||||
@@ -1,180 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Sergey Shubin (sergey.shubin@digitalenergy.online)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_pfw
|
||||
short_description: Manage network Port Forward rules for Compute instances in DECORT cloud
|
||||
description: >
|
||||
This module can be used to create new port forwarding rules in DECORT cloud platform,
|
||||
modify and delete them.
|
||||
version_added: "2.2"
|
||||
author:
|
||||
- Sergey Shubin <sergey.shubin@digitalenergy.online>
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.6.1 or higher
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
options:
|
||||
account_id:
|
||||
description:
|
||||
- ID of the account, which owns this disk. This is the alternative to I(account_name) option.
|
||||
- If both I(account_id) and I(account_name) specified, then I(account_name) is ignored.
|
||||
default: 0
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account, which will own this disk.'
|
||||
- 'This parameter is ignored if I(account_id) is specified.'
|
||||
default: empty string
|
||||
required: no
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to manage the RG according to the specification.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
compute_id:
|
||||
description:
|
||||
- ID of the Compute instance to manage network port forwarding rules for.
|
||||
required: yes
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- 'If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.'
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
rules:
|
||||
description:
|
||||
- 'Set of rules to configure for the Compute instance identidied by I(compute_id) in the virtual
|
||||
network segment identidied by I(vins_id).'
|
||||
- The set is specified as a list of dictionaries with the following structure:
|
||||
- ' - (int) public_port_start - starting port number on the ViNS external interface.'
|
||||
- ' - (int) public_port_end - optional end port number of the ViNS external interface. If not specified
|
||||
or set equal to I(public_port_start), a one-to-one rule is created. Otherwise a ranged rule will
|
||||
be created, which maps specified external port range to local ports starting from I(local_port).'
|
||||
- ' - (int) local_port - port number on the local interface of the Compute. For ranged rule it is
|
||||
interpreted as a base port to translate public port range to internal port range.'
|
||||
- ' - (string) proto - protocol, specify either I(tcp) or I(udp).'
|
||||
- 'Note that rules are meaningful only if I(state=present). If I(state=absent) is specified, rules set
|
||||
will be ignored, and all rules for the specified Compute will be deleted.'
|
||||
state:
|
||||
description:
|
||||
- 'Specify the desired state of the port forwarding rules set for the Compute instance identified by
|
||||
I(compute_id).'
|
||||
- 'If I(state=present), the rules will be applied according to the I(rules) parameter.'
|
||||
- 'If I(state=absent), all rules for the specified Compute instance will be deleted regardless of
|
||||
I(rules) parameter.'
|
||||
default: present
|
||||
choices: [ absent, present ]
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
vins_id:
|
||||
description:
|
||||
- ID of the virtual network segment (ViNS), where port forwarding rules will be set up.
|
||||
- This ViNS must have connection to external network.
|
||||
- Compute instance specified by I(compute_id) must be connected to this ViNS.
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: configure one-toone rule for SSH protocol on Compute ID 100 connected to ViNS ID 5.
|
||||
decort_pfw:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ MY_APP_ID }}"
|
||||
app_secret: "{{ MY_APP_SECRET }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
compute_id: 100
|
||||
vins_id: 5
|
||||
rules:
|
||||
- public_port_start: 10022
|
||||
local_port: 22
|
||||
proto: tcp
|
||||
state: present
|
||||
delegate_to: localhost
|
||||
register: my_pfw
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about created PFW rules
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
compute_id: 100
|
||||
vins_id: 5
|
||||
rules:
|
||||
-
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
@@ -248,7 +78,7 @@ def decort_pfw_parameters():
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_PASSWORD']),
|
||||
no_log=True),
|
||||
rules=dict(type='list', required=False, default=[]),
|
||||
rules=dict(type='list', required=False),
|
||||
state=dict(type='str',
|
||||
default='present',
|
||||
choices=['absent', 'present']),
|
||||
@@ -314,9 +144,11 @@ def main():
|
||||
if amodule.params['state'] == 'absent':
|
||||
# ignore amodule.params['rules'] and remove all rules associated with this Compute
|
||||
pfw_facts = decon.pfw_configure(comp_facts, vins_facts, None)
|
||||
else:
|
||||
elif amodule.params['rules'] is not None:
|
||||
# manage PFW rules accodring to the module arguments
|
||||
pfw_facts = decon.pfw_configure(comp_facts, vins_facts, amodule.params['rules'])
|
||||
else:
|
||||
pfw_facts = decon._pfw_get(comp_facts['id'], vins_facts['id'])
|
||||
|
||||
#
|
||||
# complete module run
|
||||
|
||||
@@ -1,207 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
#
|
||||
# Author: Sergey Shubin (sergey.shubin@digitalenergy.online)
|
||||
#
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_rg
|
||||
short_description: Manage resource groups (RGs) in DECORT cloud
|
||||
description: >
|
||||
This module can be used to create a new resource group in DECORT cloud platform, modify its
|
||||
characteristics, and delete it.
|
||||
version_added: "2.2"
|
||||
author:
|
||||
- Sergey Shubin <sergey.shubin@digitalenergy.online>
|
||||
requirements:
|
||||
- python >= 2.6
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.6.1 or higher
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
- New RGs provisioned with this module will be deployed to the first location under specified DECORT
|
||||
controller (if there is more than one location).
|
||||
options:
|
||||
account_id:
|
||||
description:
|
||||
- ID of the account under which this RG will be created. This is the alternative to I(account_name)
|
||||
option. If both I(account_id) and I(account_name) specified, the latter is ignored.
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account under which this RG will be created (for new RGs) or is located.'
|
||||
- 'This parameter is ignored if I(account_id) is specified.'
|
||||
required: no
|
||||
annotation:
|
||||
description:
|
||||
- Optional text description of this resource group.
|
||||
default: empty string
|
||||
required: no
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to manage the RG according to the specification.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
quotas:
|
||||
description:
|
||||
- Dictionary that defines resource quotas to be set on a newly created RG.
|
||||
- 'This parameter is optional and only used when creating new RG. It is ignored for any operations on an
|
||||
existing RG.'
|
||||
- 'The following keys are valid to set the resource quotas:'
|
||||
- ' - I(cpu) (integer) - limit on the total number of CPUs that can be consumed by all compute instances
|
||||
in this RG.'
|
||||
- ' - I(ram) (integer) - limit on the total amount of RAM in GB that can be consumed by compute instances
|
||||
in this RG.'
|
||||
- ' - I(disk) (integer) - limit on the total volume of disk space in GB that can be consumed by all
|
||||
compute instances in this RG.'
|
||||
- ' - I(ext_ips) (integer) - maximum number of external IP addresses that can be allocated to the compute
|
||||
instances and virtual network segments (ViNS) in this RG.'
|
||||
- 'Each of the above keys is optional. For example, you may specify I(cpu) and I(ram) while omitting the
|
||||
other two keys. Then the quotas will be set on RAM and CPU leaving disk volume and the number of external
|
||||
IP addresses unlimited.'
|
||||
required: no
|
||||
rg_name:
|
||||
description:
|
||||
- Name of the RG to manage.
|
||||
required: yes
|
||||
state:
|
||||
description:
|
||||
- Specify the desired state of the resource group at the exit of the module.
|
||||
- 'Regardless of I(state), if RG exists and is in one of [DEPLOYING, DESTROYING, MIGRATING, ] states,
|
||||
do nothing.'
|
||||
- 'If desired I(state=present):'
|
||||
- ' - RG does not exist or is in DESTROYED state, create new RG according to the specifications.'
|
||||
- ' - RG is in one of [CREATED, DISABLED] states, change quotas if necessary.'
|
||||
- ' - RG is in DELETED state, restore it and change quotas if necessary. RG will be left in DISABLED state.'
|
||||
- ' - RG in any other state, abort with an error.'
|
||||
- 'If desired I(state=enabled):'
|
||||
- ' - RG does not exist or is in DESTROYED state, create new RG according to the specifications.'
|
||||
- ' - RG is in CREATED state, change quotas if necessary.'
|
||||
- ' - RG is in DELETED state, restore it, change quotas if necessary and enable.'
|
||||
- ' - RG is in any other state, abort with an error.'
|
||||
- 'If desired I(state=absent):'
|
||||
- ' - RG is in one of [CREATED, DISABLED, DELETED] states, destroy it.'
|
||||
- ' - RG in DESTROYED state, do nothing.'
|
||||
- ' - RG in any other state, abort with an error.'
|
||||
- 'If desired I(state=disabled):'
|
||||
- ' - RG does not exist or is in one of [ENABLING, DISABLING, DELETING, DELETED, DESTROYING, DESTROYED]
|
||||
states, abort with an error.'
|
||||
- ' - RG is DISABLED state, change quotas if necessary.'
|
||||
- ' - RG is in CREATED state, change quotas if necessary and disable the RG.'
|
||||
default: present
|
||||
choices: [ absent, disabled, enabled, present ]
|
||||
user:
|
||||
description:
|
||||
- 'Name of the legacy user for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required when I(authenticator=legacy) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_USER environment variable.
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: create a new RG named "MyFirstRG" if it does not exist yet, set quotas on CPU and the number of exteranl IPs.
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ MY_APP_ID }}"
|
||||
app_secret: "{{ MY_APP_SECRET }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
rg_name: "MyFirstRG"
|
||||
account_name: "MyMainAccount"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ext_ips: 4
|
||||
annotation: "My first RG created with Ansible module"
|
||||
state: present
|
||||
delegate_to: localhost
|
||||
register: my_rg
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about the resource group
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
id: 100
|
||||
name: MyFirstRG
|
||||
state: CREATED
|
||||
account_id: 10
|
||||
gid: 1001
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
@@ -209,6 +12,7 @@ from ansible.module_utils.basic import env_fallback
|
||||
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_rg(DecortController):
|
||||
def __init__(self,amodule):
|
||||
super(decort_rg, self).__init__(amodule)
|
||||
@@ -217,31 +21,44 @@ class decort_rg(DecortController):
|
||||
self.validated_rg_id = 0
|
||||
self.validated_rg_facts = None
|
||||
|
||||
if self.amodule.params['account_id']:
|
||||
self.validated_acc_id, _ = self.account_find("", amodule.params['account_id'])
|
||||
elif amodule.params['account_name']:
|
||||
self.validated_acc_id, _ = self.account_find(amodule.params['account_name'])
|
||||
if not self.validated_acc_id:
|
||||
# we failed to locate account by either name or ID - abort with an error
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Current user does not have access to the requested account "
|
||||
"or non-existent account specified.")
|
||||
self.fail_json(**self.result)
|
||||
|
||||
if amodule.params['rg_id'] > 0:
|
||||
self.validated_rg_id = amodule.params['rg_id']
|
||||
if amodule.params['rg_id'] is None:
|
||||
if self.amodule.params['account_id']:
|
||||
self.validated_acc_id, _ = self.account_find("", amodule.params['account_id'])
|
||||
elif amodule.params['account_name']:
|
||||
self.validated_acc_id, _ = self.account_find(amodule.params['account_name'])
|
||||
if not self.validated_acc_id:
|
||||
# we failed to locate account by either name or ID - abort with an error
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("Current user does not have access to the requested account "
|
||||
"or non-existent account specified.")
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
# Check if the RG with the specified parameters already exists
|
||||
self.validated_rg_id, self.rg_facts = self.rg_find(self.validated_acc_id,
|
||||
arg_rg_id = self.validated_rg_id,
|
||||
arg_rg_name=amodule.params['rg_name'],
|
||||
arg_check_state=False)
|
||||
self.get_info()
|
||||
|
||||
if amodule.params['state'] != "absent":
|
||||
self.rg_should_exist = True
|
||||
else:
|
||||
self.rg_should_exist = False
|
||||
|
||||
def get_info(self):
|
||||
# If this is the first getting info
|
||||
if not self.validated_rg_id:
|
||||
self.validated_rg_id, self.rg_facts = self.rg_find(
|
||||
arg_account_id=self.validated_acc_id,
|
||||
arg_rg_id=self.aparams['rg_id'],
|
||||
arg_rg_name=self.aparams['rg_name'],
|
||||
arg_check_state=False,
|
||||
)
|
||||
# If this is a repeated getting info
|
||||
else:
|
||||
# If check mode is enabled, there is no needed to
|
||||
# request info again
|
||||
if self.amodule.check_mode:
|
||||
return
|
||||
|
||||
_, self.rg_facts = self.rg_find(arg_rg_id=self.validated_rg_id)
|
||||
|
||||
def access(self):
|
||||
should_change_access = False
|
||||
acc_granted = False
|
||||
@@ -296,17 +113,37 @@ class decort_rg(DecortController):
|
||||
self.result['msg'] = ("Cannot limit less than already reserved'{}'").format(incorrect_quota)
|
||||
self.result['failed'] = True
|
||||
|
||||
if self.result['failed'] != True:
|
||||
self.rg_update(self.rg_facts, self.amodule.params['quotas'],
|
||||
self.amodule.params['resType'], self.amodule.params['rename'])
|
||||
if not self.result['failed']:
|
||||
self.rg_update(
|
||||
arg_rg_dict=self.rg_facts,
|
||||
arg_quotas=self.amodule.params['quotas'],
|
||||
arg_res_types=self.amodule.params['resType'],
|
||||
arg_newname=self.amodule.params['rename'],
|
||||
arg_sep_pools=self.amodule.params['sep_pools'],
|
||||
)
|
||||
self.rg_should_exist = True
|
||||
return
|
||||
|
||||
def setDefNet(self):
|
||||
if self.amodule.params['def_netId'] != self.rg_facts['def_net_id']:
|
||||
self.rg_setDefNet(self.validated_rg_id,
|
||||
self.amodule.params['def_netType'],
|
||||
self.amodule.params['def_netId'])
|
||||
rg_def_net_type = self.rg_facts['def_net_type']
|
||||
rg_def_net_id = self.rg_facts['def_net_id']
|
||||
aparam_def_net_type = self.aparams['def_netType']
|
||||
aparam_def_net_id = self.aparams['def_netId']
|
||||
|
||||
need_to_reset = (aparam_def_net_type == 'NONE'
|
||||
and rg_def_net_type != aparam_def_net_type)
|
||||
|
||||
need_to_change = False
|
||||
if aparam_def_net_id is not None:
|
||||
need_to_change = (aparam_def_net_id != rg_def_net_id
|
||||
or aparam_def_net_type != rg_def_net_type)
|
||||
|
||||
if need_to_reset or need_to_change:
|
||||
self.rg_setDefNet(
|
||||
arg_rg_id=self.validated_rg_id,
|
||||
arg_net_type=aparam_def_net_type,
|
||||
arg_net_id=aparam_def_net_id,
|
||||
)
|
||||
self.rg_should_exist = True
|
||||
return
|
||||
|
||||
@@ -314,7 +151,7 @@ class decort_rg(DecortController):
|
||||
self.validated_rg_id = self.rg_provision(self.validated_acc_id,
|
||||
self.amodule.params['rg_name'],
|
||||
self.amodule.params['owner'],
|
||||
self.amodule.params['annotation'],
|
||||
self.amodule.params['description'],
|
||||
self.amodule.params['resType'],
|
||||
self.amodule.params['def_netType'],
|
||||
self.amodule.params['ipcidr'],
|
||||
@@ -324,11 +161,14 @@ class decort_rg(DecortController):
|
||||
"", # this is location code. TODO: add module argument
|
||||
)
|
||||
|
||||
self.validated_rg_id, self.rg_facts = self.rg_find(self.validated_acc_id,
|
||||
self.validated_rg_id,
|
||||
arg_rg_name="",
|
||||
arg_check_state=False)
|
||||
self.rg_should_exist = True
|
||||
if self.validated_rg_id:
|
||||
self.validated_rg_id, self.rg_facts = self.rg_find(
|
||||
arg_account_id=self.validated_acc_id,
|
||||
arg_rg_id=self.validated_rg_id,
|
||||
arg_rg_name="",
|
||||
arg_check_state=False
|
||||
)
|
||||
self.rg_should_exist = True
|
||||
return
|
||||
|
||||
def enable(self):
|
||||
@@ -348,8 +188,11 @@ class decort_rg(DecortController):
|
||||
return
|
||||
|
||||
def destroy(self):
|
||||
|
||||
self.rg_delete(self.validated_rg_id, self.amodule.params['permanently'])
|
||||
self.rg_delete(
|
||||
rg_id=self.validated_rg_id,
|
||||
permanently=self.amodule.params['permanently'],
|
||||
recursively=self.aparams['recursive_deletion'],
|
||||
)
|
||||
if self.amodule.params['permanently'] == True:
|
||||
self.rg_facts['status'] = 'DESTROYED'
|
||||
else:
|
||||
@@ -390,6 +233,7 @@ class decort_rg(DecortController):
|
||||
ret_dict['defNetType'] = self.rg_facts['def_net_type']
|
||||
ret_dict['ViNS'] = self.rg_facts['vins']
|
||||
ret_dict['computes'] = self.rg_facts['vms']
|
||||
ret_dict['uniqPools'] = self.rg_facts['uniqPools']
|
||||
|
||||
return ret_dict
|
||||
|
||||
@@ -401,7 +245,7 @@ class decort_rg(DecortController):
|
||||
account_id=dict(type='int', required=False),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
access=dict(type='dict'),
|
||||
annotation=dict(type='str', required=False, default=''),
|
||||
description=dict(type='str', required=False, default=''),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
@@ -415,7 +259,7 @@ class decort_rg(DecortController):
|
||||
controller_url=dict(type='str', required=True),
|
||||
# datacenter=dict(type='str', required=False, default=''),
|
||||
def_netType=dict(type='str', choices=['PRIVATE','PUBLIC', 'NONE'], default='PRIVATE'),
|
||||
def_netId=dict(type='int', default=0),
|
||||
def_netId=dict(type='int'),
|
||||
extNetId=dict(type='int', default=0),
|
||||
extNetIp=dict(type='str', default=""),
|
||||
owner=dict(type='str', default=""),
|
||||
@@ -443,10 +287,29 @@ class decort_rg(DecortController):
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_USER'])),
|
||||
rg_name=dict(type='str', required=False,),
|
||||
rg_id=dict(type='int', required=False, default=0),
|
||||
rg_id=dict(type='int', required=False),
|
||||
verify_ssl=dict(type='bool', required=False, default=True),
|
||||
workflow_callback=dict(type='str', required=False),
|
||||
workflow_context=dict(type='str', required=False),
|
||||
sep_pools=dict(
|
||||
type='list',
|
||||
elements='dict',
|
||||
options=dict(
|
||||
sep_id=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
pool_names=dict(
|
||||
type='list',
|
||||
required=True,
|
||||
elements='str',
|
||||
),
|
||||
),
|
||||
),
|
||||
recursive_deletion=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
)
|
||||
)
|
||||
|
||||
# Workflow digest:
|
||||
@@ -483,18 +346,27 @@ def main():
|
||||
elif amodule.params['state'] == "disabled":
|
||||
decon.enable()
|
||||
if amodule.params['state'] in ['present', 'enabled']:
|
||||
if amodule.params['quotas'] or amodule.params['resType'] or amodule.params['rename'] != "":
|
||||
if (
|
||||
amodule.params['quotas']
|
||||
or amodule.params['resType']
|
||||
or amodule.params['rename'] != ""
|
||||
or amodule.params['sep_pools'] is not None
|
||||
):
|
||||
decon.update()
|
||||
if amodule.params['access']:
|
||||
decon.access()
|
||||
if amodule.params['def_netId'] > 0:
|
||||
if amodule.params['def_netType'] is not None:
|
||||
decon.setDefNet()
|
||||
|
||||
elif decon.rg_facts['status'] == "DELETED":
|
||||
if amodule.params['state'] == 'absent' and amodule.params['permanently'] == True:
|
||||
decon.destroy()
|
||||
elif amodule.params['state'] == 'present':
|
||||
elif (amodule.params['state'] == 'present'
|
||||
or amodule.params['state'] == 'disabled'):
|
||||
decon.restore()
|
||||
elif amodule.params['state'] == 'enabled':
|
||||
decon.restore()
|
||||
decon.enable()
|
||||
elif decon.rg_facts['status'] in ("DISABLED"):
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.destroy()
|
||||
@@ -503,9 +375,16 @@ def main():
|
||||
|
||||
else:
|
||||
if amodule.params['state'] in ('present', 'enabled'):
|
||||
decon.create()
|
||||
if amodule.params['access']:
|
||||
decon.access()
|
||||
if not amodule.params['rg_name']:
|
||||
decon.result['failed'] = True
|
||||
decon.result['msg'] = (
|
||||
'Resource group could not be created because'
|
||||
' the "rg_name" parameter was not specified.'
|
||||
)
|
||||
else:
|
||||
decon.create()
|
||||
if amodule.params['access'] and not amodule.check_mode:
|
||||
decon.access()
|
||||
elif amodule.params['state'] in ('disabled'):
|
||||
decon.error()
|
||||
|
||||
@@ -514,6 +393,8 @@ def main():
|
||||
amodule.fail_json(**decon.result)
|
||||
else:
|
||||
if decon.rg_should_exist:
|
||||
if decon.result['changed']:
|
||||
decon.get_info()
|
||||
decon.result['facts'] = decon.package_facts(amodule.check_mode)
|
||||
amodule.exit_json(**decon.result)
|
||||
else:
|
||||
|
||||
346
library/decort_user_info.py
Normal file
346
library/decort_user_info.py
Normal file
@@ -0,0 +1,346 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_user_info
|
||||
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.decort_utils import DecortController
|
||||
|
||||
|
||||
class DecortUserInfo(DecortController):
|
||||
def __init__(self):
|
||||
super().__init__(AnsibleModule(**self.amodule_init_args))
|
||||
self.check_amodule_args()
|
||||
|
||||
@property
|
||||
def amodule_init_args(self) -> dict:
|
||||
return self.pack_amodule_init_args(
|
||||
argument_spec=dict(
|
||||
accounts=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
deleted=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
),
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
rights=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
e.value
|
||||
for e in self.AccountUserRights
|
||||
],
|
||||
),
|
||||
id=dict(
|
||||
type='int',
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
),
|
||||
status=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
e.value for e in self.AccountStatus
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
resource_consumption=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
),
|
||||
sorting=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
asc=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
field=dict(
|
||||
type='str',
|
||||
choices=[
|
||||
e.value
|
||||
for e in self.AccountSortableField
|
||||
],
|
||||
required=True,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
api_methods=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
),
|
||||
audits=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
filter=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
api_method=dict(
|
||||
type='str',
|
||||
),
|
||||
status_code=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
min=dict(
|
||||
type='int',
|
||||
),
|
||||
max=dict(
|
||||
type='int',
|
||||
),
|
||||
),
|
||||
),
|
||||
time=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
start=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
unix=dict(
|
||||
type='int',
|
||||
),
|
||||
date_time=dict(
|
||||
type='str',
|
||||
),
|
||||
),
|
||||
mutually_exclusive=[
|
||||
('unix', 'date_time'),
|
||||
],
|
||||
),
|
||||
end=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
unix=dict(
|
||||
type='int',
|
||||
),
|
||||
date_time=dict(
|
||||
type='str',
|
||||
),
|
||||
),
|
||||
mutually_exclusive=[
|
||||
('unix', 'date_time'),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
pagination=dict(
|
||||
type='dict',
|
||||
apply_defaults=True,
|
||||
options=dict(
|
||||
number=dict(
|
||||
type='int',
|
||||
default=1,
|
||||
),
|
||||
size=dict(
|
||||
type='int',
|
||||
default=50,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
objects_search=dict(
|
||||
type='str',
|
||||
),
|
||||
resource_consumption=dict(
|
||||
type='bool',
|
||||
default=False,
|
||||
),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
def check_amodule_args(self):
|
||||
"""
|
||||
Additional validation of Ansible Module arguments.
|
||||
This validation cannot be implemented using
|
||||
Ansible Argument spec.
|
||||
"""
|
||||
|
||||
check_error = False
|
||||
|
||||
match self.aparams['audits']:
|
||||
case {'filter': {'time':
|
||||
{'start': {'date_time': str() as dt_str}}
|
||||
}
|
||||
}:
|
||||
if self.dt_str_to_sec(dt_str=dt_str) is None:
|
||||
self.message(self.MESSAGES.str_not_parsed(string=dt_str))
|
||||
check_error = True
|
||||
match self.aparams['audits']:
|
||||
case {'filter': {'time':
|
||||
{'end': {'date_time': str() as dt_str}}
|
||||
}
|
||||
}:
|
||||
if self.dt_str_to_sec(dt_str=dt_str) is None:
|
||||
self.message(self.MESSAGES.str_not_parsed(string=dt_str))
|
||||
check_error = True
|
||||
|
||||
if check_error:
|
||||
self.exit(fail=True)
|
||||
|
||||
@property
|
||||
def mapped_accounts_args(self) -> None | dict:
|
||||
"""
|
||||
Map the module argument `accounts` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.user_accounts`.
|
||||
"""
|
||||
|
||||
input_args = self.aparams['accounts']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
|
||||
mapped_args['deleted'] = input_args['deleted']
|
||||
|
||||
mapped_args['resource_consumption'] = (
|
||||
input_args['resource_consumption']
|
||||
)
|
||||
|
||||
input_args_filter = input_args['filter']
|
||||
if input_args_filter:
|
||||
input_args_filter_rights = input_args_filter['rights']
|
||||
if input_args_filter_rights:
|
||||
mapped_args['account_user_rights'] = (
|
||||
self.AccountUserRights(input_args_filter_rights)
|
||||
)
|
||||
|
||||
mapped_args['account_id'] = input_args_filter['id']
|
||||
|
||||
mapped_args['account_name'] = input_args_filter['name']
|
||||
|
||||
input_args_filter_status = input_args_filter['status']
|
||||
if input_args_filter_status:
|
||||
mapped_args['account_status'] = (
|
||||
self.AccountStatus(input_args_filter_status)
|
||||
)
|
||||
|
||||
input_args_pagination = input_args['pagination']
|
||||
if input_args_pagination:
|
||||
mapped_args['page_number'] = input_args_pagination['number']
|
||||
mapped_args['page_size'] = input_args_pagination['size']
|
||||
|
||||
input_args_sorting = input_args['sorting']
|
||||
if input_args_sorting:
|
||||
mapped_args['sort_by_asc'] = input_args_sorting['asc']
|
||||
|
||||
input_args_sorting_field = input_args_sorting['field']
|
||||
if input_args_sorting_field:
|
||||
mapped_args['sort_by_field'] = (
|
||||
self.AccountSortableField(input_args_sorting_field)
|
||||
)
|
||||
|
||||
return mapped_args
|
||||
|
||||
@property
|
||||
def mapped_audits_args(self):
|
||||
"""
|
||||
Map the module argument `audits` to
|
||||
arguments dictionary for the method
|
||||
`DecortController.user_audits`.
|
||||
"""
|
||||
|
||||
input_args = self.aparams['audits']
|
||||
if not input_args:
|
||||
return input_args
|
||||
|
||||
mapped_args = {}
|
||||
|
||||
input_args_filter = input_args['filter']
|
||||
if input_args_filter:
|
||||
mapped_args['api_method'] = input_args_filter['api_method']
|
||||
|
||||
match input_args_filter['status_code']:
|
||||
case {'min': int() as min_status_code}:
|
||||
mapped_args['min_status_code'] = min_status_code
|
||||
match input_args_filter['status_code']:
|
||||
case {'max': int() as max_status_code}:
|
||||
mapped_args['max_status_code'] = max_status_code
|
||||
|
||||
match input_args_filter['time']:
|
||||
case {'start': {'unix': int() as start_unix_time}}:
|
||||
mapped_args['start_unix_time'] = start_unix_time
|
||||
case {'start': {'date_time': str() as start_dt_str}}:
|
||||
mapped_args['start_unix_time'] = self.dt_str_to_sec(
|
||||
dt_str=start_dt_str
|
||||
)
|
||||
match input_args_filter['time']:
|
||||
case {'end': {'unix': int() as end_unix_time}}:
|
||||
mapped_args['end_unix_time'] = end_unix_time
|
||||
case {'end': {'date_time': str() as end_dt_str}}:
|
||||
mapped_args['end_unix_time'] = self.dt_str_to_sec(
|
||||
dt_str=end_dt_str
|
||||
)
|
||||
|
||||
input_args_pagination = input_args['pagination']
|
||||
if input_args_pagination:
|
||||
mapped_args['page_number'] = input_args_pagination['number']
|
||||
mapped_args['page_size'] = input_args_pagination['size']
|
||||
|
||||
return mapped_args
|
||||
|
||||
def run(self):
|
||||
self.get_info()
|
||||
self.exit()
|
||||
|
||||
def get_info(self):
|
||||
self.facts = self.user_whoami()
|
||||
self.id = self.facts['name']
|
||||
|
||||
user_get = self.user_get(id=self.id)
|
||||
for key in ['emailaddresses', 'data']:
|
||||
self.facts[key] = user_get[key]
|
||||
|
||||
if self.aparams['accounts']:
|
||||
self.facts['accounts'] = self.user_accounts(
|
||||
**self.mapped_accounts_args,
|
||||
)
|
||||
|
||||
if self.aparams['resource_consumption']:
|
||||
self.facts.update(self.user_resource_consumption())
|
||||
|
||||
if self.aparams['audits']:
|
||||
self.facts['audits'] = self.user_audits(**self.mapped_audits_args)
|
||||
|
||||
if self.aparams['api_methods']:
|
||||
self.facts['api_methods'] = self.user_api_methods(id=self.id)
|
||||
|
||||
|
||||
search_string = self.aparams['objects_search']
|
||||
if search_string:
|
||||
self.facts['objects_search'] = self.user_objects_search(
|
||||
search_string=search_string,
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
DecortUserInfo().run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -1,239 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Digital Enegry Cloud Orchestration Technology (DECORT) modules for Ansible
|
||||
# Copyright: (c) 2018-2021 Digital Energy Cloud Solutions LLC
|
||||
#
|
||||
# Apache License 2.0 (see http://www.apache.org/licenses/LICENSE-2.0.txt)
|
||||
#
|
||||
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'}
|
||||
|
||||
DOCUMENTATION = '''
|
||||
DOCUMENTATION = r'''
|
||||
---
|
||||
module: decort_vins
|
||||
short_description: Manage Virtual Network Segments (ViNS) in DECORT cloud
|
||||
description: >
|
||||
This module can be used to create new ViNS in DECORT cloud platform, obtain or
|
||||
modify its characteristics, and delete it.
|
||||
version_added: "2.2"
|
||||
author:
|
||||
requirements:
|
||||
- python >= 3.8
|
||||
- PyJWT Python module
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- decort_utils utility library (module)
|
||||
- DECORT cloud platform version 3.8.6 or higher
|
||||
notes:
|
||||
- Environment variables can be used to pass selected parameters to the module, see details below.
|
||||
- Specified Oauth2 provider must be trusted by the DECORT cloud controller on which JWT will be used.
|
||||
- 'Similarly, JWT supplied in I(authenticator=jwt) mode should be received from Oauth2 provider trusted by
|
||||
the DECORT cloud controller on which this JWT will be used.'
|
||||
options:
|
||||
account_id:
|
||||
description:
|
||||
- 'ID of the account under which this ViNS will be created (for new ViNS) or is located (for already
|
||||
existing ViNS). This is the alternative to I(account_name) option.'
|
||||
- If both I(account_id) and I(account_name) specified, then I(account_name) is ignored.
|
||||
required: no
|
||||
account_name:
|
||||
description:
|
||||
- 'Name of the account under which this ViNS will be created (for new RGs) or is located (for already
|
||||
existing ViNS).'
|
||||
- 'This parameter is ignored if I(account_id) is specified.'
|
||||
required: no
|
||||
annotation:
|
||||
description:
|
||||
- Optional text description of this virtual network segment.
|
||||
default: empty string
|
||||
required: no
|
||||
app_id:
|
||||
description:
|
||||
- 'Application ID for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- 'Required if I(authenticator=oauth2).'
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_ID
|
||||
environment variable.'
|
||||
required: no
|
||||
app_secret:
|
||||
description:
|
||||
- 'Application API secret used for authenticating to the DECORT controller when I(authenticator=oauth2).'
|
||||
- This parameter is required when I(authenticator=oauth2) and ignored in other modes.
|
||||
- 'If not found in the playbook or command line arguments, the value will be taken from DECORT_APP_SECRET
|
||||
environment variable.'
|
||||
required: no
|
||||
authenticator:
|
||||
description:
|
||||
- Authentication mechanism to be used when accessing DECORT controller and authorizing API call.
|
||||
default: jwt
|
||||
choices: [ jwt, oauth2, legacy ]
|
||||
required: yes
|
||||
controller_url:
|
||||
description:
|
||||
- URL of the DECORT controller that will be contacted to manage the RG according to the specification.
|
||||
- 'This parameter is always required regardless of the specified I(authenticator) type.'
|
||||
required: yes
|
||||
ext_net_id:
|
||||
description:
|
||||
- 'Controls ViNS connection to an external network. This argument is optional with default value of -1,
|
||||
which means no external connection.'
|
||||
- Specify 0 to connect ViNS to external network and let platform select external network Id automatically.
|
||||
- Specify positive value to request ViNS connection to the external network with corresponding ID.
|
||||
- You may also control external IP address selection with I(ext_ip_addr) argument.
|
||||
default: -1
|
||||
required: no
|
||||
ext_ip_addr:
|
||||
description:
|
||||
- IP address to assign to the external interface of this ViNS when connecting to the external net.
|
||||
- If empty string is passed, the platform will assign free IP address automatically.
|
||||
- 'Note that if invalid IP address or an address already occupied by another client is specified,
|
||||
the module will abort with an error.'
|
||||
- 'This argument is used only for new connection to the specified network. You cannot select another
|
||||
external IP address without changing external network ID.'
|
||||
- ViNS connection to the external network is controlled by I(ext_net_id) argument.
|
||||
default: empty string
|
||||
required: no
|
||||
ipcidr:
|
||||
description:
|
||||
- Internal ViNS network address in a format XXX.XXX.XXX.XXX/XX (includes address and netmask).
|
||||
- If empty string is passed, the platform will assign network address automatically.
|
||||
- 'When selecting this address manually, note that this address must be unique amomng all ViNSes in
|
||||
the target account.'
|
||||
default: empty string
|
||||
required: no
|
||||
jwt:
|
||||
description:
|
||||
- 'JWT (access token) for authenticating to the DECORT controller when I(authenticator=jwt).'
|
||||
- 'This parameter is required if I(authenticator=jwt) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_JWT environment variable.
|
||||
required: no
|
||||
oauth2_url:
|
||||
description:
|
||||
- 'URL of the oauth2 authentication provider to use when I(authenticator=oauth2).'
|
||||
- 'This parameter is required when when I(authenticator=oauth2).'
|
||||
- 'If not specified in the playbook, the value will be taken from DECORT_OAUTH2_URL environment variable.'
|
||||
password:
|
||||
description:
|
||||
- 'Password for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required if I(authenticator=legacy) and ignored in other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_PASSWORD environment variable.
|
||||
required: no
|
||||
rg_id:
|
||||
description:
|
||||
- 'ID of the resource group (RG), where this ViNS will be created (for a new ViNS) or located
|
||||
(for already existing ViNS).'
|
||||
- If ViNS is created at the account level, I(rg_id) should be omitted or set to 0.
|
||||
- If both I(rg_id) and I(rg_name) are specified, then I(rg_name) is ignored.
|
||||
default: 0
|
||||
required: no
|
||||
rg_name:
|
||||
description:
|
||||
- 'Name of the resource group (RG), where this ViNS will be created (for new ViNS) or
|
||||
located (for already existing ViNS).'
|
||||
- If ViNS is created at the account level, I(rg_name) should be omitted or set to emtpy string.
|
||||
- If both I(rg_name) and I(rg_id) are specified, then I(rg_name) is ignored.
|
||||
default: empty string
|
||||
required: no
|
||||
state:
|
||||
description:
|
||||
- Specify the desired state of the ViNS at the exit of the module.
|
||||
- 'Regardless of I(state), if ViNS exists and is in one of [DEPLOYING, DESTROYING, MIGRATING] states,
|
||||
do nothing.'
|
||||
- 'If desired I(state=present):'
|
||||
- ' - ViNS does not exist or is in DESTROYED state, create new ViNS according to the specifications.'
|
||||
- ' - ViNS is in DELETED state, restore it and change quotas if necessary. Note that on successful
|
||||
restore ViNS will be left in DISABLED state.'
|
||||
- ' - ViNS is in one of [CREATED, ENABLED, DISABLED] states, do nothing.'
|
||||
- ' - ViNS in any other state, abort with an error.'
|
||||
- 'If desired I(state=enabled):'
|
||||
- ' - ViNS does not exist or is in DESTROYED state, create new ViNS according to the specifications.'
|
||||
- ' - ViNS is in DELETED state, restore and enable it.'
|
||||
- ' - ViNS is in one of [CREATED, ENABLED] states, do nothing.'
|
||||
- ' - viNS is in any other state, abort with an error.'
|
||||
- 'If desired I(state=absent):'
|
||||
- ' - ViNS is in one of [CREATED, ENABLED, DISABLED, DELETED] states, destroy it.'
|
||||
- ' - ViNS in DESTROYED state, do nothing.'
|
||||
- ' - ViNS in any other state, abort with an error.'
|
||||
- 'If desired I(state=disabled):'
|
||||
- ' - ViNS is in one of [CREATED, ENABLED] states, disable it.'
|
||||
- ' - ViNS is DISABLED state, do nothing.'
|
||||
- ' - ViNS does not exist or is in one of [ENABLING, DISABLING, DELETING, DELETED, DESTROYING, DESTROYED]
|
||||
states, abort with an error.'
|
||||
default: present
|
||||
choices: [ absent, disabled, enabled, present ]
|
||||
user:
|
||||
description:
|
||||
- 'Name of the legacy user for authenticating to the DECORT controller when I(authenticator=legacy).'
|
||||
- 'This parameter is required when I(authenticator=legacy) and ignored for other authentication modes.'
|
||||
- If not specified in the playbook, the value will be taken from DECORT_USER environment variable.
|
||||
required: no
|
||||
verify_ssl:
|
||||
description:
|
||||
- 'Controls SSL verification mode when making API calls to DECORT controller. Set it to False if you
|
||||
want to disable SSL certificate verification. Intended use case is when you run module in a trusted
|
||||
environment that uses self-signed certificates. Note that disabling SSL verification in any other
|
||||
scenario can lead to security issues, so please know what you are doing.'
|
||||
default: True
|
||||
required: no
|
||||
vins_id:
|
||||
description:
|
||||
- ID of the ViNs to manage. If ViNS is identified by ID it must be present.
|
||||
- If ViNS ID is specified, I(account_id), I(account_name), I(rg_id) and I(rg_name) are ignored.
|
||||
vins_name:
|
||||
description:
|
||||
- Name of the ViNS.
|
||||
- ViNS can exist at either account or resource group level.
|
||||
- ViNS name is unique only within its parent (i.e. account or resource group).
|
||||
- 'To create ViNS at account level omit both I(rg_id) and I(rg_name), or set them to 0 and empty
|
||||
string respectively.'
|
||||
required: yes
|
||||
workflow_callback:
|
||||
description:
|
||||
- 'Callback URL that represents an application, which invokes this module (e.g. up-level orchestrator or
|
||||
end-user portal) and may except out-of-band updates on progress / exit status of the module run.'
|
||||
- API call at this URL will be used to relay such information to the application.
|
||||
- 'API call payload will include module-specific details about this module run and I(workflow_context).'
|
||||
required: no
|
||||
workflow_context:
|
||||
description:
|
||||
- 'Context data that will be included into the payload of the API call directed at I(workflow_callback) URL.'
|
||||
- 'This context data is expected to uniquely identify the task carried out by this module invocation so
|
||||
that up-level orchestrator could match returned information to the its internal entities.'
|
||||
required: no
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: create a new ViNS named "MyViNS" if it does not exist yet under RG "MyRG" in the account "MyAccount".
|
||||
decort_vins:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ MY_APP_ID }}"
|
||||
app_secret: "{{ MY_APP_SECRET }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "MyViNS"
|
||||
rg_name: "MyRG"
|
||||
account_name: "MyAccount"
|
||||
state: present
|
||||
delegate_to: localhost
|
||||
register: my_vins
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
facts:
|
||||
description: facts about the virtual network segment
|
||||
returned: always
|
||||
type: dict
|
||||
sample:
|
||||
facts:
|
||||
id: 5
|
||||
name: MyViNS
|
||||
int_net_addr: 192.168.1.0
|
||||
ext_net_addr: 10.50.11.118
|
||||
state: CREATED
|
||||
account_id: 7
|
||||
rg_id: 19
|
||||
gid: 1001
|
||||
description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
@@ -241,6 +12,7 @@ from ansible.module_utils.basic import env_fallback
|
||||
|
||||
from ansible.module_utils.decort_utils import *
|
||||
|
||||
|
||||
class decort_vins(DecortController):
|
||||
def __init__(self,arg_amodule):
|
||||
super(decort_vins, self).__init__(arg_amodule)
|
||||
@@ -260,7 +32,7 @@ class decort_vins(DecortController):
|
||||
if self.vins_id == 0:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = "Specified ViNS ID {} not found.".format(arg_amodule.params['vins_id'])
|
||||
self.fail_json(**self.result)
|
||||
self.amodule.fail_json(**self.result)
|
||||
self.vins_level = "ID"
|
||||
#raise Exception(self.vins_facts)
|
||||
validated_acc_id = self.vins_facts['accountId']
|
||||
@@ -337,7 +109,7 @@ class decort_vins(DecortController):
|
||||
self.acc_id, self.rg_id,
|
||||
self.amodule.params['ipcidr'],
|
||||
self.amodule.params['ext_net_id'], self.amodule.params['ext_ip_addr'],
|
||||
self.amodule.params['annotation'])
|
||||
self.amodule.params['description'])
|
||||
|
||||
if self.amodule.params['mgmtaddr'] or self.amodule.params['connect_to']:
|
||||
_, self.vins_facts = self.vins_find(self.vins_id)
|
||||
@@ -473,7 +245,7 @@ class decort_vins(DecortController):
|
||||
return dict(
|
||||
account_id=dict(type='int', required=False,default=0),
|
||||
account_name=dict(type='str', required=False, default=''),
|
||||
annotation=dict(type='str', required=False, default=''),
|
||||
description=dict(type='str', required=False, default=''),
|
||||
app_id=dict(type='str',
|
||||
required=False,
|
||||
fallback=(env_fallback, ['DECORT_APP_ID'])),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
20
wiki/5.2.6/Home.md
Normal file
20
wiki/5.2.6/Home.md
Normal file
@@ -0,0 +1,20 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
2. [Обзор облачной платформы DECORT.](./Обзор-облачной-платформы-DECORT.md)
|
||||
- [Основные понятия](./Обзор-облачной-платформы-DECORT.md#основные-понятия)
|
||||
- [Способы авторизации](./Обзор-облачной-платформы-DECORT.md#способы-авторизации)
|
||||
3. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными серверами KVM.
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - получение идентификатора образа ОС.
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисковыми ресурсами.
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - настройки правил трансляции сетевых портов для виртуального сервера.
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами.
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление виртуальными сетевыми сегментами.
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена.
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление Basic сервисами.
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами виртуальных серверов.
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md)- управление кластерами Kubernetes.
|
||||
4. [Полезные советы](./полезные-советы.md)
|
||||
- [Как хранить авторизационную информацию отдельно от плейбука.](./полезные-советы.md#41-как-хранить-авторизационную-информацию-отдельно-от-плейбука)
|
||||
30
wiki/5.2.6/Обзор-облачной-платформы-DECORT.md
Normal file
30
wiki/5.2.6/Обзор-облачной-платформы-DECORT.md
Normal file
@@ -0,0 +1,30 @@
|
||||
## Основные понятия
|
||||
|
||||
Ниже перечислены основные понятия с указанием соответствующих им аргументов в Terraform провайдере DECORT.
|
||||
|
||||
1. Контроллер облачной платформы DECORT – управляющее приложение, которое обеспечивает авторизацию пользователей и оркестрацию облачных ресурсов.
|
||||
- Адрес контроллера задается в обязательном аргументе `controller_url` в Вашем плейбуке. Например, `controller_url= "https://ds1.digitalenergy.online"`
|
||||
2. Авторизационный провайдер – приложение, работающее по протоколу Oauth2, предназначенное для выпуска и валидации токенов доступа к контроллеру облачной платформы в соответствующих режимах авторизации. Все действия в платформе должны выполняться авторизованными пользователями, и авторизационное приложение позволяет получить токен доступа, действующий некоторое ограниченное время, наличие которого подтверждает успешную авторизацию.
|
||||
- Адрес авторизационного провайдера задается в аргументе `oauth2_url` в Вашем плейбуке. Например `oauth2_url= "https://sso.digitalenergy.online"`. При этом необходимо указать тип авторизации `authenticator: oauth2`
|
||||
3. Подписчик (account) – сущность, которая используется для группирования облачных ресурсов по принадлежности к определенному клиенту для целей учета потребления и биллинга.
|
||||
- Имя подписчика задается аргументом `account_name` в Вашем плейбуке. Альтернативой является задание численного идентификатора подписчика в аргументе `account_id`.
|
||||
4. Пользователь (user) – пользователь облачной инфраструктуры, представленный учетной записью. Чтобы получить возможность управлять облачными ресурсами (например, создавать виртуальные серверы или дискт) пользователь должен быть ассоциирован с одним или несколькими подписчиками и иметь соответствующие права, определяемые ролевой моделью, принятой в облачной платформе DECORT. Для доступа к платформе пользователь должен авторизоваться одним из способов, описанных ниже в разделе «Способы авторизации».
|
||||
5. Ресурсная группа (resource group) – способ группирования вычислительных ресурсов (например, виртуальных серверов по функциональному признаку или принадлежности к одному и тому же проекту). Ресурсную группу можно рассматривать как небольшой персональный дата-центр, в котором размещаются один или несколько серверов и виртуальных сетевых сегментов. Ресурсная группа идентифицируется по комбинации параметров `account` и `name`. Обратите внимание, что имя имя ресурсной группы уникально только в рамках одного и того же `account`.
|
||||
6. Вычислительный ресурс (compute) - универсальная абстракция пользовательского сервера в платформе DECORT. Благодаря использованию такой абстракции можно, например, создать одну виртуальную машину на базе KVM Intel x86, а другую - на базе KVM IBM Power, а потом управлять ими - изменять количество CPU/RAM, подключать/отключать диски и т.п. - одинаковым образом, не задумываясь об их архитектурных различиях.
|
||||
7. Ресурс хранения (disk) - универсальная абстракция дискового ресурса в платформе DECORT. Платформа поддерживает различные типы систем хранения данных, но при этом управление созданными на разных системах хранения дисками осуществляется посредством унифицированного набора действий, например, "подключить диск к compute", "увеличить размер диска", "сделать мгновенный снимок диска", "настроить параметры быстродействия диска".
|
||||
8. Виртуальный сервер – экземпляр compute, в основе технической реализации которого лежит виртуальная машина, работающая в облаке DECORT и доступна по сети. Виртуальный сервер характеризуется количеством выделенных ему CPU (аргумент `cpu`), объемом ОЗУ (`ram`), размером загрузочного диска (`boot_disk size`). При создании виртуального сервера на загрузочный диск устанавливается образ операционной системы, заданный в аргументе `image_id`. Помимо загрузочного диска к виртуальному серверу можно подключить несколько дисков для хранения прикладных данных, список которых задается аргументами `extra_disks`. Виртуальный сервер идентифицируется по комбинации аргументов `name` (имя сервера) и `rgid` (идентификатор ресурсной группы). Обратите внимание, что имя виртуального сервера `name` уникально только в рамках одной и той же ресурсной группы.
|
||||
9. Виртуальный сетевой сегмент (Virtual Network Segment или ViNS) - сетевой сегмент и обеспечивающая его функционирование виртуальная инфраструктура, которые пользователь может создавать для своих нужд на уровне ресурсной группы или подписчика (account). ViNS можно создать полностью изолированным от внешних сетей (см. ниже External Network) или с подключением во внешнюю сеть. Внутри ViNS работает DHCP-сервис, обеспечивающий управление IP адресами экземпляров compute, подключённых в этот ViNS.
|
||||
10. Внешняя сеть (External Network) - сетевой сегмент, через который платформа DECORT взаимодействует с внешними по отношению к ней сетевыми ресурсами. Например, в случае с публичным облаком на базе DECORT в качестве внешней сети выступает сеть Интернет. В отличие от ViNS платформа не управляет внешней сетью, а лишь пользуется её ресурсами. В платформе может быть настроено несколько внешних сетей с различными диапазонами IP адресов, и существует механизм управления доступом пользователей к внешним сетям.
|
||||
11. Сетевой доступ к экземпляру compute (виртуальному серверу) реализуется через его подключение к ViNS и/или прямое подключение во внешнюю сеть (External Network). Один и тот же экземпляр compute может одновременно иметь несколько подключений в разные ViNS и/или различные внешние сети.
|
||||
|
||||
## Способы авторизации
|
||||
|
||||
Облачная платформа DECORT поддерживает два базовых типа авторизации:
|
||||
|
||||
1. С использованием авторизационного провайдера, работающего по протоколу Oauth2. Данный способ является предпочтительным, так как обеспечивает бОльшую гибкость и безопасность. Для авторизации в этом режиме в Вашем плейбуке необходимо указать параметры `oauth2_url` и `controller_url`, а также предоставить одно из нижеперечисленного:
|
||||
- Комбинация Application ID & Application secret, соответствующих пользователю, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. В процессе проверки предоставленных Application ID & Application secret модуль получает от авторизационного провайдера токен (JSON Web Token, JWT), который затем используется для доступа к указанному контроллеру DECORT. Для авторизации по данному варианту, в Вашем плейбуке следует установить аргумент `authenticator=oauth2` и задать аргументы `app_id` и `app_secret` (или определить соответствующие переменные окружения `DECORT_APP_ID` и `DECORT_APP_SECRET`).
|
||||
- JSON Web Token – заранее полученный от авторизационного провайдера токен доступа, ассоциированный с определенным пользователем, от имени которого будет осуществляться управление облачными ресурсами в текущей сессии. Для авторизации по данному варианту, при инициализации Terraform провайдера DECORT следует установить аргумент `authenticator=jwt` и задать аргумент `jwt` (или определить переменную окружения `DECORT_JWT`).
|
||||
2. С использованием комбинации имя пользователя : пароль. Данный режим не использует внешних авторизационных провайдеров и подразумевает, что пользователь с такой комбинацией зарегистрирован непосредственно на указанном в параметре `controller_url` контроллере облачной платформы DECORT.
|
||||
- Чтобы провайдер авторизовался по данному варианту, при его инициализации следует установить аргумент `authenticator=legacy` и задать аргументы `user` и `password` (или определить соответствующие переменные окружения `DECORT_USER` и `DECORT_PASSWORD`).
|
||||
|
||||
После успешной авторизации пользователь (или приложение-клиент) получает доступ к ресурсам, находящимся под управлением соответствующего DECORT контроллера. Доступ предоставляется в рамках подписчиков (`account`), с которыми ассоциирован данный пользователь (`user`), и в соответствии с присвоенными ему ролями.
|
||||
90
wiki/5.2.6/введение.md
Normal file
90
wiki/5.2.6/введение.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
У каждого модуля есть свой раздел, в котором Вы можете найти подробную информацию о параметрах, которые использует и возращает данный модуль, а также примеры использования данного модуля.
|
||||
|
||||
В состав библиотеки модулей DECORT для Ansible на текущий момент входят:
|
||||
|
||||
- decort_kvmvm - модуль для управления жизненным циклом виртуальных серверов (экземпляров compute). Платформа DECORT поддерживает виртуальные серверы на базе технологии KVM и аппаратных архитектур Intel x86 и IBM PowerPC.
|
||||
Позволяет:
|
||||
1. Создавать новые виртуальные сервера указанной аппаратной архитектуры. Платформа поддерживает виртуальные сервера архитектуры Intel x86 и IBM PowerPC.
|
||||
2. Изменять конфигурацию существующего виртуального сервера:
|
||||
- Изменять количества выделенных CPU и виртуальной ОЗУ. Следует иметь ввиду, что изменение этих параметров в меньшую сторону может потребовать перезагрузки гостевой ОС.
|
||||
- Увеличивать размера загрузочного диска
|
||||
- Подключать / отключать дополнительные дисковые ресурсы.
|
||||
- Создавать / удалять сетевые подключения.
|
||||
3. Изменять состояние существующего виртуального сервера:
|
||||
- Выключать / включать.
|
||||
- Перезагружать, приостанаваливать / возобновлять работу гостевой ОС.
|
||||
4. Удалять существующий виртуальный сервер.
|
||||
5. Получать информацию о существующем виртуальном сервере без изменения его конфигурации.
|
||||
- decort_disk - модуль для управления жизненным циклом дисковых ресурсов, которые можно подключать к экземплярам compute.
|
||||
Позволяет:
|
||||
1) создавать / удалять диск;
|
||||
2) изменять размер диска.
|
||||
- decort_rg - модуль для управления жизненным циклом ресурсных групп (Resource Groups, RG).
|
||||
Позволяет:
|
||||
1) Создавать\удалять ресурсные группы.
|
||||
2) Запрашивать информацию об уже существующих ресурсных группах.
|
||||
3) Редактировать ресурсные группы.
|
||||
4) Настраивать квоты в ресурсных группах.
|
||||
5) Восстанавливать ресурсные группы.
|
||||
- decort_vins - модуль для управления жизненным циклом виртуальных сетевых сегментов (Virtual Network Segment, ViNS). Экземпляры compute (напр., виртуальные серверы) могут быть подключены к нескольким виртуальным сетевым сегментам.
|
||||
Позволяет:
|
||||
1) Создавать, удалять виртуальные сетевые сегменты.
|
||||
2) Изменять виртуальные сетевые сегменты.
|
||||
3) Запрашивать информацию о виртуальных сетевых сегментах.
|
||||
4) Восстанавливать удалённые виртуальные сетевые сегменты.
|
||||
|
||||
- decort_pfw - модуль для настройки правил трансляции сетевых портов виртуальных серверов.
|
||||
- decort_osimage - модуль для взаимодействия с образами.
|
||||
Позволяет:
|
||||
1) Создавать новый образ операционной системы для виртуальных машин.
|
||||
2) Создавать виртуальный образ для образа операционной системы.
|
||||
3) Изменять имя образа (в случае изменения имени виртуального образа, имя и id виртуального образа указываются как image_name и image_id).
|
||||
4) Привязывать другой образ операционной системы к виртуальному образу.
|
||||
5) Удалять существующий образ, привязанный к аккаунту.
|
||||
6) Получать информацию об образе.
|
||||
- decort_jwt - модуль для получения авторизационного токена (JWT - JSON Web Token), который можно использовать при массовом создании экземпляров compute для ускорения работы playbook-а. Подробности см. в соответствующем разделе.
|
||||
- decort_bservice - модуль для взаимодействия с Basic сервисами (Basic service).
|
||||
Позволяет:
|
||||
1) Создавать Basic Service.
|
||||
2) Удалять Basic Service.
|
||||
3) Включать/выключать Basic Service.
|
||||
4) Запрашивать информацию о Basic Service.
|
||||
- decort_group - модуль для взаимодействия с группами виртуальных серверов(compute).
|
||||
Позволяет:
|
||||
1) Получить информацию о группе виртуальных серверов.
|
||||
2) Запустить/остановить группу виртуальных серверов.
|
||||
3) Изменить параметры группы виртуальных серверов (cpu, ram, disk, и т.д).
|
||||
4) Изменить количество виртуальных серверов в группе.
|
||||
5) Изменить параметры сети (ext_net, VINS).
|
||||
6) Создать группу виртуальных серверов и подключить её к Basic сервису.
|
||||
7) Удалить группу виртуальных серверов.
|
||||
- decort_k8s - модуль для взаимодействия с кластерами Kubernetes.
|
||||
Позволяет:
|
||||
1) Создавать/удалять кластера Kubernetes.
|
||||
2) Enable/Disable кластера Kubernetes.
|
||||
3) Запускать/Останавливать кластера Kubernetes
|
||||
4) Модифицировать кластера Kubernetes
|
||||
5) Получать информацию об уже существующем кластере Kubernetes.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 2.7 or higher
|
||||
- Python 3.7 or higher
|
||||
- PyJWT 2.0.0 Python module or higher
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- DECORT cloud platform version 3.5.0 or higher
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо разместить директории library и module_utils в Вашей рабочей директории, откуда будут запускаться плейбуки, либо указать в ansible.cfg путь до них.
|
||||
|
||||
|
||||
|
||||
|
||||
103
wiki/5.2.6/модуль-decort_bservice.md
Normal file
103
wiki/5.2.6/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 03.08 Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовый сервис (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_disk предназначен для управления basic сервисами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service.
|
||||
- Удалять Basic Service.
|
||||
- Включать/выключать Basic Service.
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя учётной записи (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string) | Текстовое описание диска. Данный аргумент является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения _DECORT_JWT_. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: absent, disabled, enabled, present, check| Состояние Basic сервиса.|
|
||||
| started | (bool) | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. По умолчанию: False. |
|
||||
| name | (string) | Имя, с которым будет создан Basic сервис. Также используется для поиска ID Basic сервиса. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах в группе basic сервиса. Используется в паре с sshkey. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера в группе basic сервиса. Используется в паре с sshuser. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор Basic сервиса, используется для поиска, взаимодействия и удаления Basic сервиса. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, в которой будет работать модуль. |
|
||||
| rg_name | (string) | Имя ресурсной группы, в которой будет работать модуль. |
|
||||
| description | (string) | Описание. По умолчанию: `Created by decort ansible module`|
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения.<br/>Данный параметр является опциональным.<br/>Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL.<br>Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи.<br/>Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`.<br/>Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор данного Basic сервиса.|
|
||||
|name | string | Имя Basic сервиса.|
|
||||
| techStatus | string | Технический статус Basic сервиса. |
|
||||
|state | string | Текущий статус Basic сервиса. Корректные состояния:MODELED, DISABLING, ENABLING, DELETING, DELETED, "DESTROYING, DESTROYED, RESTORYNG, RECONFIGURING|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в котором находится Basic сервис.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор пользователя, к которому привязан данный Basic сервис.|
|
||||
| groupsName | string | Имена групп виртуальных серверов, которые находятся в данном Basic сервисе.|
|
||||
| groupsIds | string | Уникальные целочисленные идентификаторы групп виртуальных серверов, которые находятся в данном Basic сервисе. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт Basic сервис с названием databases.
|
||||
|
||||
```
|
||||
- name: Manage bservice at RG
|
||||
decort_bservice:
|
||||
account_id: 98
|
||||
verify_ssl: false
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
rg_id: 1629
|
||||
state: present
|
||||
name: databases
|
||||
started: True
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет Basic сервис с названием databases.
|
||||
```
|
||||
- name: Manage bservice at RG
|
||||
decort_bservice:
|
||||
account_id: 98
|
||||
verify_ssl: false
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
rg_id: 1629
|
||||
state: absent
|
||||
name: databases
|
||||
started: False
|
||||
register: db_bservice
|
||||
```
|
||||
167
wiki/5.2.6/модуль-decort_disk.md
Normal file
167
wiki/5.2.6/модуль-decort_disk.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# 03.03 Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисковыми ресурсами в платформе DECORT:
|
||||
|
||||
- создание / удаление диска;
|
||||
- изменение размера диска.
|
||||
- переименование диска.
|
||||
- ограничение ввода / вывода диска.
|
||||
- восстановление удаленного диска из корзины.
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- загрузочный диск для виртуального сервера создаётся и подключается автоматически в процессе создания этого сервера. - Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным серверам выполняется с помощью модулей управления compute-ресурсами (например, подробнее см. модуль decort_kvmvm, параметр data_disks).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя учётной записи (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string) | Текстовое описание диска. Данный аргумент является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным.|
|
||||
| description | (string) | Описание диска. Используется при создании диска, по умолчанию установлено: "Disk created with Ansible Decort_disk module." |
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int) | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>`True`<br/>`False` <- default | Задаёт поведение платформы при попытке удалить диск, подключённый к экземпляру _compute_.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: True`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах.|
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его имя name и информация об учётной записи (`account_id` или `account_name`), которой принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool) | Параметр, использующийся при удалении диска, при значении True - диск удалится навсегда, а при False - попадёт в корзину. |
|
||||
|place_with | (int) | Идентификатор образа ОС, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ ОС. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
|pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, значение по умолчанию - пустая строка (в этом случае платформа использует пул, который сконфигурирован на целевой системе хранения как пул по умолчанию). |
|
||||
| reason | (string) | Причина, по которой было выполнено какое-либо действие, в данном модуле используется только при удалении диска. |
|
||||
|sep_id | (int) | Идентификатор провайдера системы хранения данных (Storage End-point Provider). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный загрузочный образ, на базе которого создаётся экземпляр compute.|
|
||||
|size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующих дисков, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | Значения:<br/>`present` <- default<br/>`absent`<br/> | Целевое состояние диска. |
|
||||
| type | (string) | Тип создаваемого диска. Возможные значения: B-Boot, D-Data, T-Temp. По умолчанию установлено значение D.|
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения.<br/>Данный параметр является опциональным.<br/>Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL.<br>Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи.<br/>Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`.<br/>Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|account_id | int | Уникальный целочисленный идентификатор учётной записи (account), которой принадлежит диск.|
|
||||
|attached_to | int | Идентификатор экземпляра Compute (напр., виртуального сервера), к которому в настоящий момент подключён диск. Если диск не подключён, то attached_to=0|
|
||||
|gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
|id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничение ввода / вывода диска. |
|
||||
|name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
|pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения (Storage Endpoint Provider), на которой размещаются ресурсы данного диска.|
|
||||
|size | int | Размер диска в ГБ.|
|
||||
|state | string | Текущий статус диска. Корректные состояния: CREATED, ASSIGNED, DELETED, DESTROYED, PURGED.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (size: 50), с ограничением ввода / вывода в 2000 iops, на ресурсах системы хранения, доступной через Storage Endpoint provider под номером 1 (sep_id: 1) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: manage data disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
description: "Disk example"
|
||||
pool: data01
|
||||
state: present
|
||||
register: my_data_disk01
|
||||
delegate_to: localhost
|
||||
```
|
||||
В данном примере ограничивается уже существующий диск с именем "DataDisk01", ограничивается как чтение/запись в iops, так и в байтах, также задаётся их максимальное чтение / запись(read/write_*_sec_max).
|
||||
|
||||
```
|
||||
- name: manage data disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 100
|
||||
read_bytes_sec_max: 100
|
||||
read_iops_sec: 100
|
||||
read_iops_sec_max: 100
|
||||
size_iops_sec: 100
|
||||
write_bytes_sec: 100
|
||||
write_bytes_sec_max: 100
|
||||
write_iops_sec: 100
|
||||
write_iops_sec_max: 100
|
||||
total_bytes_sec: 0
|
||||
total_iops_sec: 0
|
||||
total_bytes_sec_max: 0
|
||||
total_iops_sec_max: 0
|
||||
state: present
|
||||
register: my_data_disk01
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: manage data disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
state: present
|
||||
register: my_data_disk01
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: manage data disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
state: present
|
||||
register: my_data_disk01
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальному серверу, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: manage virtual server
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
103
wiki/5.2.6/модуль-decort_group.md
Normal file
103
wiki/5.2.6/модуль-decort_group.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 03.09 Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль decort_group позволяет взаимодействовать с группами виртуальных серверов, которые находятся в Basic сервисе. `Взаимодействие с Basic сервисами происходит в модуле decort_bservice.`
|
||||
|
||||
Модуль decort_group позволяет:
|
||||
- Получить информацию о группе виртуальных серверов.
|
||||
- Запустить/остановить группу виртуальных серверов.
|
||||
- Изменить параметры группы виртуальных серверов (cpu, ram, disk, role, name).
|
||||
- Изменить количество виртуальных серверов в группе.
|
||||
- Изменить параметры сети (ext_net, VINS).
|
||||
- Создать группу виртуальных серверов и подключить её к Basic сервису.
|
||||
- Удалить группу виртуальных серверов.
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля decort_group.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя учётной записи (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя учётной записи (account), которой принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`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`.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор группы виртуальных серверов.|
|
||||
| image_id | (int) | Уникальный целочисленный идентификатор образа операционной системы. Используется для создания виртуальных серверов в группе. |
|
||||
| image_name | (string) | Имя образа операционной системы. Используется для создания виртуальных серверов в группе.|
|
||||
| driver | (string) | Тип виртуального сервера. Прим. `KVM_X86` |
|
||||
| boot_disk | (int) | Обьём виртуального диска на виртуальных серверах. |
|
||||
| bservice_id | (int) | Уникальный целочисленный идентификатор Basic серфиса, в который необходимо добавить группу виртуальных серверов. |
|
||||
| count | (int) | Количество виртуальных серверов в группе. |
|
||||
| timeoutStart | (int) | Задержка в секундах до отображения группы виртуальных серверов. |
|
||||
| role | (string) | Роль группы виртуальных серверов. |
|
||||
| cpu | (int) | Количество ядер процессора на каждом виртуальном сервере в группе. |
|
||||
| ram | (int) | Объём оперативной памяти на каждом виртуальном сервере в группе. |
|
||||
| networks | (list) | Список сетей, которые необходимо подключить к каждому виртуальному серверу в группе |
|
||||
| description | (string) | Описание группы виртуальных серверов. |
|
||||
|verify_ssl | (bool) | True <- default False Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах.|
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована. |
|
||||
|workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`.|
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль decort_group возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, к которому привязана данная группа виртуальных серверов. |
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится данная группа виртуальных серверов. |
|
||||
| id | int | Уникальный целочисленный идентификатор данной группы виртуальных серверов.|
|
||||
| name | string | Имя данной группы виртуальных серверов.|
|
||||
| techStatus | string | Технический статус данной группы виртуальных серверов. |
|
||||
| state | string | Текущее состояние группы виртуальных серверов. Корректные состояния: absent, started, stopped, present, check.|
|
||||
| Computes | string | Уникальные целочисленные идентификаторы виртуальных серверов, входящих в группу. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу виртуальных серверов с названием test_group.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: create
|
||||
decort_group:
|
||||
authenticator: oauth2
|
||||
verify_ssl: False
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
state: present
|
||||
bservice_id: 1823
|
||||
count: 2
|
||||
name: "test_group"
|
||||
cpu: 2
|
||||
ram: 2
|
||||
boot_disk: 10
|
||||
image_id: 518
|
||||
driver: "KVM_X86"
|
||||
timeoutStart: 5
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
delegate_to: localhost
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу виртуальных серверов с названием test_group.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: create
|
||||
decort_group:
|
||||
authenticator: oauth2
|
||||
verify_ssl: False
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
state: absent
|
||||
bservice_id: 1823
|
||||
name: "test_group"
|
||||
delegate_to: localhost
|
||||
register: group_test
|
||||
```
|
||||
56
wiki/5.2.6/модуль-decort_jwt.md
Normal file
56
wiki/5.2.6/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 03.07 Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль decort_jwt предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании виртуальных серверов на базе одного и того же образа, так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает changed: False).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_jwt. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|validity | (int) | Срок действия JWT в секундах. Данный параметр является опциональным, значение по умолчанию - 3600 сек.|
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов workflow_callback данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль decort_jwt возвращает словарь, в котором по ключу jwt находится значение JWT-токена (тип string).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала получается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуального сервера в режиме авторизации jwt (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: ansible_master
|
||||
tasks:
|
||||
- name: obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
delegate_to: localhost
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: manage KVM VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
state: present
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании нового виртуального сервера (в предположении, что результат выполнения task для модуля decort_jwt был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
102
wiki/5.2.6/модуль-decort_k8s.md
Normal file
102
wiki/5.2.6/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# 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 | Значения:<br/>`legacy`<br/>`oauth2`<br/>`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
|
||||
|
||||
```
|
||||
112
wiki/5.2.6/модуль-decort_kvmvm.md
Normal file
112
wiki/5.2.6/модуль-decort_kvmvm.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# 03.01 Модуль decort_kvmvm
|
||||
## Обзор модуля decort_kvmvm
|
||||
|
||||
Модуль decort_kvmvm предназначен для предназначен для выполнения следующих действий над виртуальными серверами, созданными на базе технологии виртуализации KVM, в облачной платформе DECORT:
|
||||
|
||||
1. Создание нового виртуального сервера указанной аппаратной архитектуры. Платформа поддерживает виртуальные сервера архитектуры Intel x86 и IBM PowerPC.
|
||||
2. Изменение конфигурации существующего виртуального сервера:
|
||||
- Изменение количества выделенных CPU и виртуальной ОЗУ. Следует иметь ввиду, что изменение этих параметров в меньшую сторону может потребовать перезагрузки гостевой ОС.
|
||||
- Увеличение размера загрузочного диска
|
||||
- Подключение / отключение дополнительных дисковых ресурсов.
|
||||
- Создание / удаление сетевых подлкючений.
|
||||
3. Изменение состояния существующего виртуального сервера:
|
||||
- Выключение / включение.
|
||||
- Перезагрузка, приостановка / возобновление работы гостевой ОС.
|
||||
4. Удаление существующего виртуального сервера.
|
||||
5. Получение информации о существующем виртуальном сервере без изменения его конфигурации.
|
||||
|
||||
## Параметры модуля decort_kvmvm
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_kvmvm. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_kvmvm`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный цифровой идентификатор подписчика, владеющего данным виртуальным сервером.Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя подписчика, которому будет принадлежать новый виртуальный сервер (или уже принадлежит существующий). Параметр должен задаваться в точном соответствии с тем, как назван нужный подписчик в облачной инфраструктуре (с соблюдением заглавных и строчных символов, а также пробелов). Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией account_name и rg_name. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| annotation | (string) | Опциональное описание виртуального сервера. Этот параметр используется только в момент создания нового виртуального сервера и игнорируется при любых действиях над существующими серверами.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DCORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| arch | Значения:<br/>`KVM_X86` <- default <br/>`KVM_PPC`<br/> | Аппаратная архитектура виртуального сервера. Данный параметр является обязательным при создании нового вирутального сервера и игнорируется для уже существующего сервера.<br/>Платформа DECORT поддерживает виртуальные серверы KVM аппаратных архитектур Intel x86 и IBM PowerPC. |
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
|boot_disk | (int) | Размер загрузочного диска виртуального сервера в ГБ. Загрузочный диск всегда создаётся на той же системе хранения и в том же пуле, где размещён образ ОС (см. параметры `image_name` или `image_id`), на базе которого создаётся данный виртуальный сервер. Если данный параметр не указан на момент создания виртуального сервера, то размер загрузочного диска будет установлен равным размеру образа ОС.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным.|
|
||||
| cpu | (int) | Количество виртуальных CPU, выделенных виртуальному серверу. Параметр является обязательным при создании нового сервера, во всех других случаях он опциональный. Если указать его для уже существующего сервера, то будет выполнена попытка изменить количество CPU. Следует иметь ввиду, что уменьшение количества CPU у работающего сервера, как правило, потребует его перезагрузки.|
|
||||
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данному виртуальному серверу как дополнительные (помимо загрузочного диска, который создаётся автоматически вместе с виртуальным сервером).|
|
||||
| id | (int) | Уникальный цифровой идентификатор виртуального сервера внутри платформы. Этот параметр используется как один из методов идентификации существующего сервера (альтернатива – по комбинации name, `rg_name` и `account_name`) и игнорируется при создании нового сервера, так как для нового сервера облачная платформа назначает этот идентификатор автоматически. Если при вызове модуля `decort_kvmvm` существующий виртуальный сервер идентифицируется по своему id, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются.|
|
||||
| image_id | (int) | Уникальный цифровой идентификатор образа ОС, на базе которого следует создать виртуальный сервер. При создании нового виртуального сервера требуется задать этот параметр или параметр image_name. При любых других операциях данные параметры игнорируются. Если заданы оба этих параметра (`image_id` и `image_name`), то `image_name` игнорируется. Для получения `image_id` по `image_name` можно использовать модуль `decort_osimage`.|
|
||||
| image_name | (string) | Название образа ОС, на базе которого следует создать виртуальный сервер. При создании нового виртуального сервера требуется задать этот параметр или параметр `image_id`. При любых других операциях данные параметры игнорируются. Параметр `image_name` должен задаваться в точном соответствии с тем, как назван нужный образ ОС в облачной инфраструктуре (с соблюдением заглавных и строчных символов, а также пробелов).|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_JWT`.
|
||||
| name | (string) | Название виртуального сервера. Чтобы модуль `decort_kvmvm` мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или идентификатор `rg_id`. Параметр должен задаваться в точном соответствии с тем, как назван сервер в облачной инфраструктуре (с соблюдением заглавных и строчных символов, а также пробелов). Если для существующего виртуального сервера указаны и name, и id, то параметр name игнорируется и идентификация сервера выполняется по его id.|
|
||||
| networks | (list of dicts) | Опциональный список словарей, задающих сетевые подключения для данного виртуального сервера. Структура словаря:- (string) type - тип сетевого подключения, одно из VINS или EXTNET; - (int) id - идентификатор сетевого сегмента данного подключения; для type: VINS это VINS ID, для type: EXTNET это ID внешнего сетевого сегмента; - (string) ip_addr - опциональный IP адрес, который надлежит присвоить данному подключению; если данный параметр не указан, то платформа назначит свободный IP адрес из нужного диапазона автоматически. Если этот параметр не задан, то будет создан сервер без сетевых подключений, а если модуль вызван для уже существуюшего сервера, то все его сетевые подключения будут удалены.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| password | (string) | Пароль для подключения к контроллеру облачной инфраструктуры DECORT в режиме `authenticator: legacy`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать в playbook. Если параметр не задан в playbook, то модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_PASSWORD`.|
|
||||
| ram | (int) | Объем оперативной памяти (RAM) в MB, выделенной данному виртуальному серверу. Параметр является обязательным при создании нового сервера. Если указать его для уже существующего сервера, то будет выполнена попытка изменить объем выделенной серверу памяти. Следует иметь ввиду, что уменьшение объема памяти работающего сервера в большинстве случаев потребует его перезагрузки.|
|
||||
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы (RG), в которой будет создан новый или находится уже существующий виртуальный сервер. Данный параметр является одним из методов идентификации существующей RG (альтернативой является задание комбинации `account_name` и `rg_name`).|
|
||||
| rg_name | (string) | Имя уже существующей ресурсной группы (RG), в которой будет создан новый или находится уже существующий виртуальный сервер. Данный параметр является одним из методов идентификации существующей RG, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`, который можно получить с помощью модуля `decort_rg`). Параметр должен задаваться в точном соответствии с тем, как нужная ресурсная группа названа в облачной инфраструктуре (с соблюдением заглавных и строчных символов, а также пробелов). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
|
||||
| ssh_key | (string) | Открытая часть SSH ключа, который необходимо авторизовать на создаваемом виртуальном сервере для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для Linux серверов, является опциональным, используется только при создании нового сервера и игнорируется при других операциях.|
|
||||
| ssh_key_user | (string) | Имя пользователя на уровне гостевой ОС (только для Linux серверов) для которого авторизуется SSH ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`, используется только при создании нового сервера и игнорируется при других операциях.|
|
||||
| state | Значения:<br/>`present` <- default<br/>`absent`<br/>`poweredon`<br/>`poweredoff`<br/>`halted`<br/>`paused`<br/>`check` | Целевое состояние виртуального сервера на выходе из модуля _decort_kvmvm_.<br/> Значение 'halted' - синоним к 'poweredoff'.<br/>Значение 'check' вызывает модуль в _read-only_ режиме и считывает характеристики существующего виртуального сервера. |
|
||||
| tags | (string) | Строка, содержащая набор текстовых меток, которые надлежит присвоить данному виртуальному серверу. Данные текстовые метки представляют собой произвольный текст, который можно использовать для группировки и индексирования виртуальных серверов во внешних приложениях. Параметр является опциональным.|
|
||||
| user | (string) | Имя пользователя, непосредственно зарегистрированного на контроллере облачной инфраструктуры DECORT, которое используется для подключения к контроллеру в режиме `authenticator: legacy`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль `decort_kvmvm` будет использовать значение переменной окружения `DECORT_USER`.|
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля `decort_kvmvm` не реализована.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_kvmvm
|
||||
|
||||
Модуль decort_kvmvm возвращает информацию о виртуальном сервере в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int |Цифровой идентификатор подписчика, владеющего данным виртуальным сервером.|
|
||||
| account_name | string | Имя подписчика, владеющего данным виртуальным сервером.|
|
||||
| arch | string | Аппаратная архитектура данного виртуального сервера. Допустимые значения: KVM_X86 для Intel x86 и KVM_PPC для IBM PowerPC.|
|
||||
| cpu | int | Количество виртуальных CPU, выделенных данному виртуальному серверу.|
|
||||
| data_disks | list of ints | Список идентификаторов data-дисков, в настоящий момент подключенных к данному серверу.|
|
||||
| disk_size | int | Размер загрузочного диска в ГБ.|
|
||||
| id | int | Уникальный цифровой идентификатор данного виртуального сервера (экземпляра compute) в платформе DECORT.|
|
||||
| name | string | Имя виртуального сервера. Имя уникально только в рамках одной и той же ресурсной группы.|
|
||||
| password | string | Пароль системного пользователя по умолчанию.|
|
||||
| private_ips | list of strings | Список IP адресов на сетевых интерфейсах сервера, которые подключены к виртуальным сетевым сегментам (Virtual Network Segments, ViNS).|
|
||||
| public_ips | list of strings | Список IP адресов на сетевых интерфейсах сервера, которые подключены непосредственно к внешним сетевым сегментам (external network segments).|
|
||||
| ram | int | Объём ОЗУ в МБ, выделенный виртуальному серверу.|
|
||||
| rg_id | int | Уникальный цифровой идентификатор ресурсной группы (RG), к которой принадлежит данный сервер.|
|
||||
| state | string | Состояние виртуального сервера.|
|
||||
| username | string |Имя системного пользователя по умолчанию.|
|
||||
|
||||
## Пример использования модуля decort_kvmvm
|
||||
|
||||
В данном примере создается виртуальный сервер KVM VM по имени MyFirstVM с аппаратной архитектурой Intel x86.
|
||||
```
|
||||
- name: create new x86 KVM VM according to the specs
|
||||
decort_kvmvm:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: MyFirstVM
|
||||
arch: KVM_X86
|
||||
state: present
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
boot_disk: 10
|
||||
image_id: "{{ my_img.facts.id }}"
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
annotation: "My 1st VM created and managed with DECORT KVMVM module"
|
||||
delegate_to: localhost
|
||||
register: new_vm
|
||||
```
|
||||
|
||||
Виртуальный сервер создаётся на базе некоторого системного образа (дискового ресурса, содержащего операционную систему). В данном примере системный образ задаётся по его идентификатору (image_id: "{{ my_img.facts.id }}"). Для получения такого идентификатора можно использовать модуль decort_osimage.
|
||||
|
||||
Виртуальный сервер всегда создаётся в принадлежности к некоторой ресурсной группе. В данном примере соответствующая ресурсная группа задаётся по её идентификатору (rg_id: "{{ my_rg.facts.id }}"). Для управления ресурсными группами предназначен модуль decort_rg. С помощью этого модуля можно также получит идентификатор ресурсной группы, чтобы использовать его при создании виртуального сервера.
|
||||
|
||||
Для управления сетевыми подключениями виртуального сервера в модуле decort_kvmvm используется параметр networks, представляющий собой список с описанием требующихся подключений. В данном примере задано одно подключение в виртуальному сетевому сегменту (type: VINS) с указанным идентификатором (id: "{{ my_vins.facts.id }}"). Для управления виртуальными сетевыми сегментами и получения их идентификаторов служит модуль decort_vins.
|
||||
135
wiki/5.2.6/модуль-decort_osimage.md
Normal file
135
wiki/5.2.6/модуль-decort_osimage.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# 03.02 Модуль decort_osimage
|
||||
## Обзор модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
|
||||
|
||||
1. Создание нового образа операционной системы для виртуальных машин.
|
||||
2. Создание виртуального образа для образа операционной системы.
|
||||
3. Изменение имени образа (в случае изменения имени виртуального образа, имя и id виртуального образа указываются как image_name и image_id.
|
||||
4. Привязка другого образа операционной системы к виртуальному образу.
|
||||
5. Удаление существующего образа, привязанного к аккаунту.
|
||||
6. Получение информации об образе.
|
||||
|
||||
Также данный модуль может быть полезен при массовом создании экземпляров compute (напр., виртуальных серверов) на базе одного и того же образа, так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
## Параметры модуля decort_osimage
|
||||
Ниже приведен полный список параметров для модуля decort_osimage. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения DECORT_APP_ID. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`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 | (string) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
|
||||
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
|
||||
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа операционной системы.|
|
||||
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последвии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа операционной системы.|
|
||||
| state | (string) | Состояние образов. При значении present идет создание образов операционной системы, к которым привязан указанный в `account_Id` или `account_name` аккаунт. При значении absent идет их удаление. |
|
||||
| drivers | (string) | Список типов compute (напр., виртуальных серверов), подходящих для образа операционной системы. Прим. `KVM_X86`. Используется при создании образа операционной системы.|
|
||||
| architecture | (string) | Бинарная архитектура образа. Прим. `X86_64` или `PPC64_LE`. Используется при создании образа операционной системы.|
|
||||
| imagetype | (string) | Тип образа. `linux`, `windows` или `other`. По умолчанию установлено `linux`. Используется при создании образа операционной системы.|
|
||||
| boottype | (string) | Тип загрузки образа. `bios` или `uefi`. По умолчанию установлено `uefi`. Используется при создании образа операционной системы.|
|
||||
| url | (string) | Унифицированный указатель ресурса (URL), указывающий на образ iso операционной системы. Используется при создании образа операционной системы.|
|
||||
| sepId | (integer) | Уникальный целочисленный идентификатор конечной точки провайдера хранения. Указывается в паре с `poolName`. Используется при создании образа операционной системы.|
|
||||
| poolName | (string) | Пул, в котором будет создан образ. Указывается в паре с `sepId`. Используется при создании образа операционной системы.|
|
||||
| hotresize | (bool) | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы.|
|
||||
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа операционной системы. |
|
||||
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа операционной системы. Используется при создании образа операционной системы.|
|
||||
| usernameDL | (string) | Имя пользователя для загрузки бинарного носителя. Используется в паре с `passwordDL`. Используется при создании образа операционной системы. |
|
||||
| passwordDL | (string)| Пароль для загрузки бинарного носителя. Используется в паре с `usernameDL`. Используется при создании образа операционной системы. |
|
||||
| permanently | (bool) | Навсегда ли удалить образ. Используется при удалении убраза. По умолчанию установлено false.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage возвращает информацию о XXX в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| arch | string | Аппаратная архитектура, с которой совместим данный образ. Возможные значения: X86_64 (Intel x86), PPC64_LE (IBM PowerPC). |
|
||||
| id | int | Уникальный целочисленный идентификатор данного образа. |
|
||||
| linkto | int | Уникальный целочисленный идентификатор образа операционной системы, который привязан к данному виртуальному. |
|
||||
| name | string | Имя образа. Обратите внимание, что имя образа может содержать пробелы. |
|
||||
| pool | string | Пул на системе хранения данных, в котором находится данный образ.|
|
||||
| sep_id |int | Идентификатор системы хранения (Storage Endpoint Provider), на которой хранится данный образ. |
|
||||
| size |int | Размер образа в ГБ. Загрузочный диск экземпляра compute, создаваемого на базе данного образа, должен иметь как минимум такой же размер. |
|
||||
| state | string | Текущий статус образа. Возможные значения: CREATED, DISABLED, DESTROYED. Экземпляры compute можно создавать только на базе образов, которые находятся в статусе CREATED.|
|
||||
| type | string | Тип операционной системы внутри данного образа. Возможные значения: Linux, Windows.|
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_osimage
|
||||
|
||||
|
||||
Пример создания образа операционной системы Alpine Linux.
|
||||
```
|
||||
- name: create_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
verify_ssl: False
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
state: present
|
||||
image_name: "alpine_linux3.14.0"
|
||||
account_Id: 12345
|
||||
url: "https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-virt-3.14.0-x86_64.iso"
|
||||
boottype: "uefi"
|
||||
imagetype: "linux"
|
||||
hotresize: False
|
||||
image_username: "test"
|
||||
image_password: "p@ssw0rd"
|
||||
usernameDL: "testDL"
|
||||
passwordDL: "p@ssw0rdDL"
|
||||
architecture: "X86_64"
|
||||
drivers: "KVM_X86"
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример получения образа операционной системы по имени образа.
|
||||
|
||||
```
|
||||
- name: get_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0"
|
||||
account_Id: 12345
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой образ операционной системы, он привяжет к себе указанный в примере образ операционной системы.
|
||||
|
||||
```
|
||||
- name: create_virtual_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0"
|
||||
virt_name: "alpine_last"
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
```
|
||||
Обратите внимание, что в данным примере можно использовать как image_name, так и image_id. Также можно использовать либо virt_name, либо virt_id.
|
||||
|
||||
Пример переименования образа.
|
||||
|
||||
```
|
||||
- name: rename_osimage
|
||||
decort_osimage:
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: "alpine_linux_3.14.0v2.0"
|
||||
image_id: 54321
|
||||
delegate_to: localhost
|
||||
register: osimage
|
||||
```
|
||||
|
||||
73
wiki/5.2.6/модуль-decort_pfw.md
Normal file
73
wiki/5.2.6/модуль-decort_pfw.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 03.04 Модуль decort_pfw
|
||||
## Обзор модуля decort_pfw
|
||||
|
||||
Модуль decort_pfw предназначен для управления правилами трансляции сетевых портов для указанного экземпляра Compute (например, для виртуального сервера, созданного с помощью decort_kvmvm).
|
||||
|
||||
##Параметры модуля decort_pfw
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_pfw. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_pfw`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
|compute_id | (int) | Идентификатор экземпляра Compute (напр., виртуального сервера), для которого требуется настроит правила.|
|
||||
|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`.|
|
||||
|rules | (list of dicts) | Список словарей, задающих правила трансляции сетевых портов. Правила могут задавать как трансляцию "один к одному", так и "диапазон в диапазон". Структура словаря: (int) public_port_start - номер внешнего порта (на публичном интерфейсе ViNS, заданного параметром vins_id) для начала диапазона. (int) public_port_end - номер внешнего порта для конца диапазона. Если требуется правило "один к одному", то public_port_end можно не указывать или указать равным public_port_start. (int) local_port - номер порта на интерфейсе экземпляра Compute, заданного параметром compute_id. Если задаётся правило "диапазон в диапазон", то local_port становится началом диапазона для трансляции. В случае правила "один к одному" public_port_start просто транслируется в local_port (string) proto - протокол, tcp или udp.|
|
||||
| state | Значения:<br/>`present` <- default<br/>`absent`<br/>`check`<br/> | Целевое состояние правил.<br/>Если `state=absent`, то будут удалены все правила для указанного `compute_id` независимо от содержания параметра `rules`. В противном случае набор правил на выходе из модуля будет соответствовать тому, который содержится в параметре `rules`.<br/>Если задан `state=check`, то модуль запускается в режиме read-only и возвращает текущие настройки правил трансляции сетевых портов для указанных `compute_id` и `vins_id`. |
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|vins_id | (int) | Идентификатор виртуального сетевого сегмента (Virtual Network Segment, ViNS), в рамках которого настраиваются правила трансляции сетевых портов. Экземпляр Compute, заданный в параметре `compute_id`, должен быть уже подключён к данному ViNS.|
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована. |
|
||||
|workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|
||||
## Возвращаемые значения модуля decort_pfw
|
||||
|
||||
Модуль decort_pfw возвращает информацию о правилах трансляции сетевых портов и сопутсвтующую информацию в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|compute_id | int | Идентификатор compute, для которого настроены перечисленные правила трансляции.|
|
||||
|public_ip | string |IP адрес на внешнем сетевом интерфейсе ViNS. Перечисленные ниже правила трансляции настраиваются на этом интерфейсе.|
|
||||
|rules | list of dict | Список словарей, описывающих правила трансляции сетевых портов. Структура словаря: (int) id - идентификатор правила. (int) publicPortStart - номер внешнего порта (на публичном интерфейсе ViNS, см. public_ip) для начала диапазона. (int) publicPortEnd - номер внешнего порта для конца диапазона. Если требуется правило "один к одному", то publicPortEnd можно не указывать или указать равным publicPortStart. (int) localPort - номер порта на интерфейсе экземпляра Compute, заданного параметром compute_id. Если задаётся правило "диапазон в диапазон", то localPort указывает начало диапазона для трансляции. В случае правила "один к одному" publicPortStart просто транслируется в localPort. (string) protocol - протокол, tcp или udp.|
|
||||
|state | string | Статус правил. Для корректно отработавшего модуля это поле должно иметь значение "PRESENT".|
|
||||
|vins_id | int | Идентификатор виртуального сетевого сегмента (ViNS), в котором настроены перечисленные выше правила трансляции.|
|
||||
|
||||
## Пример использования модуля decort_pfw
|
||||
|
||||
В данном примере для ранее созданного экземпляра KVM VM compute (идентифицируется по compute_id), подключённого к указанному виртуальному сетевому сегменту (идентифицируется по vins_id) настраиваются два правила трансляции сетевых портов:
|
||||
|
||||
- Правило "один к одному": внешний порт 30022 -> внутренний порт 22, протокол tcp.
|
||||
- Правило "диапазон в диапазон": внешние порты с 30080 по 30085 включительно -> внутренние порты начиная с 30080, протокол tcp.
|
||||
|
||||
```
|
||||
- name: manage port forwarding rules
|
||||
decort_pfw:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
compute_id: "{{ my_kvmvm.facts.id }}"
|
||||
vins_id: "{{ my_vins01.facts.id }}"
|
||||
rules:
|
||||
- public_port_start: 30022
|
||||
local_port: 22
|
||||
proto: tcp
|
||||
- public_port_start: 30080
|
||||
public_port_end: 30085
|
||||
local_port: 30080
|
||||
proto: tcp
|
||||
state: present
|
||||
register: my_pfw
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат выполнения модуля decort_pfw записывается в переменную my_pfw. Для доступа к списку правил используйте следующую конструкцию:
|
||||
|
||||
`"{{ my_pfw.facts.rules }}"`
|
||||
223
wiki/5.2.6/модуль-decort_rg.md
Normal file
223
wiki/5.2.6/модуль-decort_rg.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# 03.05 Модуль decort_rg
|
||||
|
||||
## Обзор модуля decort_rg
|
||||
|
||||
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
|
||||
|
||||
- Создавать\\удалять ресурсные группы.
|
||||
- Запрашивать информацию об уже существующих ресурсных группах.
|
||||
- Редактировать ресурсные группы.
|
||||
- Настраивать квоты в ресурсных группах.
|
||||
- Восстанавливать ресурсные группы.
|
||||
- Задавать стандартную сеть ресурсной группы.
|
||||
- Настраивать доступ к ресурсным группам.
|
||||
|
||||
## Параметры модуля decort_rg
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_rg. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_rg`
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
|----------|--------------------------|----------|
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор учётной записи (account), в рамках которой создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя учётной записи (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
|
||||
| account_name | (string) | Имя учётной записи (account), в рамках которой создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| access | (dict) | Параметр, позволяющий выдать,забрать, изменить права у пользователя в ресурсной группе. |
|
||||
| annotation | (string) | Текстовое описание ресурсной группы. Данный аргумент является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br>`legacy`<br>`oauth2`<br>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным. |
|
||||
| def_netType | (string) <br>Значения:<br>`PRIVATE` <- default<br>`PUBLIC`<br>`NONE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также, чтобы изменить ресурсную группу по умолчанию. Не обязателен. |
|
||||
| def_netId | (int) | Уникальный целочисленный идентификатор сети (ViNS), используется для изменения сети по умолчанию в ресурсной группе. |
|
||||
| extNetIp | (string) | IP-адрес внешней сети, к которой ресурсная группа будет подключена при создании. |
|
||||
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
|
||||
| ipcidr | (string) | IP-адрес приватной сети. Используется при создании ресурсной группы, чтобы задать ip адрес ViNS, который создастся вместе с ресурсной группой. Задаётся при параметре `def_netType` в значении `PRIVATE`. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br>Данный параметр является обязательным для указанного режима.<br>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения _DECORT_JWT_. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| rename | (string) | Новое имя ресурсной группы. Используется при переименовании ресурсной группы. |
|
||||
| quotas | (dict) | Зарезервировано для будущих расширений, предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
|
||||
| resType | (list) | Типы ресурсов, которые можно создать в ресурсной группе. |
|
||||
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| state | Значения:<br>`present` <- default<br>`absent`<br>`enabled`<br>`disabled` | Целевое состояние ресурсной группы. |
|
||||
| permanently | (bool)<br>`False` <- default<br>`True` | Параметр, использующийся при удалении ресурсной группы, при значении True - ресурсная группа удалится навсегда, а при False - попадёт в корзину. |
|
||||
| verify_ssl | (bool)<br>`True` <- default<br>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения.<br>Данный параметр является опциональным.<br>Функциональность callbacks в текущей версии модуля не реализована. |
|
||||
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL.<br>Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи.<br>Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`.<br>Функциональность callbacks в текущей версии модуля не реализована. |
|
||||
|
||||
## Возвращаемые значения модуля decort_rg
|
||||
|
||||
Модуль decort_rg возвращает информацию о XXX в виде словаря facts со следующими ключами:
|
||||
| Ключ | Тип данных | Описание |
|
||||
|------|------------|----------|
|
||||
| account_id | int | Уникальный целочисленный идентификатор учётной записи (account), которому принадлежит данная ресурсная группа. |
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
|
||||
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках учётной записи, которой принадлежит данная ресурсная группа. |
|
||||
| state | string | Текущее состояние ресурсной группы. Корректные состояния: CREATED, DISABLED, DELETED, DESTROYED |
|
||||
| quota | dict | Текущие квоты ресурсной группы. |
|
||||
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
|
||||
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
|
||||
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. Корректные типы сети по умолчанию: NONE, PRIVATE, PUBLIC. |
|
||||
|
||||
## Пример использования модуля decort_rg
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в учётной записи MyAccount, также ограничить в ней доступ к ресурсам, задать квоты и выдать права на чтение пользователю MyUser.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "R"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "RCX"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
resType:
|
||||
- vins
|
||||
- compute
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
def_netType: "PRIVATE"
|
||||
def_netId: 99
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
rename: "NewRg"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как ограничить типы создаваемых ресурсов в ресурсной группе MyRG в учётной записи MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
resType:
|
||||
- vins
|
||||
- compute
|
||||
- k8s
|
||||
- openshift
|
||||
- lb
|
||||
- flipgroup
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
|
||||
|
||||
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
|
||||
|
||||
```
|
||||
<прочие детали опущены>
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
```
|
||||
120
wiki/5.2.6/модуль-decort_vins.md
Normal file
120
wiki/5.2.6/модуль-decort_vins.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# 03.06 Модуль decort_vins
|
||||
## Обзор модуля decort_vins
|
||||
|
||||
Модуль decort_vins предназначен для создания, изменения, получения текущих характеристик и удаления виртуального сетевого сегмента (Virtual Network Segment, ViNS).
|
||||
Позволяет:
|
||||
- Создавать, удалять виртуальные сетевые сегменты.
|
||||
- Изменять виртуальные сетевые сегменты.
|
||||
- Запрашивать информацию о виртуальных сетевых сегментах.
|
||||
- Восстанавливать удалённые виртуальные сетевые сегменты.
|
||||
- Соединять виртуальные сетевые сегменты.
|
||||
|
||||
## Параметры модуля decort_vins
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_vins. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_vins`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|account_id | (int) | Уникальный целочисленный идентификатор учётной записи (account), которой принадлежит данный ViNS. При идентификации виртуального сетевого сегмента по имени (см. параметр `vins_name`) должно быть задан либо идентификатор, либо имя учётной записи (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя учётной записи (account), которой принадлежит данный ViNS. При идентификации виртуального сетевого сегмента по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|annotation | (string)| Текстовое описание виртуального сетевого сегмента. Данный аргумент является опциональным и учитывается только при создании ViNS, а при всех прочих операциях игнорируется.|
|
||||
|app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`legacy`<br/>`oauth2`<br/>`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным. ext_net_id (int) Данный аргумент контролирует подключение виртуального сетевого сегмента во внешнюю сеть: * -1 (default) - ViNS не подключён ко внешней сети; * 0 - ViNS подключён ко внешней сети, которую платформа выбирает по умолчанию; * >0 - ViNS подключён ко внешней сети с заданным идентификатором;|
|
||||
|ext_ip_addr | (string) | Данный аргумент позволяет выбрать IP адрес для подключения виртуального сетевого сегмента ко внешней сети (когда значение аргумента ext_net_id больше либо равно 0) и учитывается только при новых подключених - в рамках модуля `decort_vins` вы не можете изменить внешний IP адрес не меняя идентификатор внешней сети. Параметр является опциональным: если он не задан, то в случае ViNS, подключённого во внешнюю сеть, платформа назначит IP адрес автоматически.| При ручном задании данного параметра следует иметь ввиду, что если будет задан неверный или уже занятый IP адрес, то модуль вернёт ошибку.
|
||||
|ipcidr | string | Адрес, которые надлежит присвоить внутренней сети сетевого сегмента. Данный аргумент является опциональным и используется только при создании нового виртуального сетевого сегмента, а при всех прочих операциях игнорируется. Если этот аргумент не задан, то платформа назначит адрес автоматически. Обратите внимание, что виртуальные сетевые сегменты, принадлежащие одной и той же учётной записи, не могут иметь пересекающихся диапазонов внутренних адресов.|
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу _Oauth2_, который должен использоваться в режиме `authenticator: oauth2`.<br/>Данный параметр является обязательным для указанного режима.<br/>Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения _DECORT_OAUTH2_URL_. |
|
||||
|rg_id | (int) | Идентификатор ресурсной группы, в которой должен быть создан или уже существует ViNS. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
|
||||
|rg_name | (string) | Имя ресурсной группы, в которой должен быть создан или уже существует ViNS. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
|
||||
| state | Значения:<br/>`present` <- default<br/>`absent`<br/>`enabled`<br/>`disabled`<br/> | Целевое состояние ViNS. |
|
||||
| verify_ssl | (bool)<br/>`True` <- default<br/>`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|vins_id | (int) | Идентификатор виртуального сетевого сегмента. Соответствующий сетевой сегмент должен существовать (таким образом, с помощью `vins_id` нельзя создать новый сегмент, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
|
||||
|vins_name| (string) | Имя виртуального сетевого сегмента. Для идентификации виртуального сетевого сегмента требуется либо vins_name и информация об учётной записи/ресурсной группе, которой принадлежит сегмент, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или учетной записи, на уровне которой существует данный сетевой сегмент.|
|
||||
| ext_net_id | (int) | Уникальный целочисленный идентификатор внешней сети. |
|
||||
| mgmtaddr | (str) | Адрес менеджмента интерфейса. В данный параметр указывается ip адрес менеджмента интерфейса, который предоставляет доступ по SSH. |
|
||||
| custom_config | (bool) | Параметр, отвечающий за использование пользовательской конфигурации. По умолчанию: `False` |
|
||||
| config_save | (bool) | Параметр, отвечающий за сохранение файла конфигурации. По умолчанию: `False` |
|
||||
| connect_to | (list) | Список, в котором необходимо указывать виртуальные сетевые сегменты, которые Вы хотите соединить. См. примеры.
|
||||
|workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль desc_vm будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов workflow_callback данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована.|
|
||||
|
||||
## Возвращаемые значения модуля decort_vins
|
||||
|
||||
Модуль decort_vins возвращает информацию о виртуальном сетевом сегменте (Virtual Network Segment, ViNS) в виде словаря facts со следующими ключами:
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| --- | --- | --- |
|
||||
| account_id | int | Уникальный целочисленный идентификатор учётной записи (_account_), которой принадлежит ViNS. |
|
||||
| ext_ip_addr | (string) | IP адрес интерфейса, которым ViNS подключён во внешнюю сеть. Если ViNS не подключён к внешней сети, то пустая строка. |
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключён ViNS. -1 означает, что ViNS в данный момент не подключён к внешней сети. |
|
||||
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данного ViNS. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор ViNS. |
|
||||
| name | (string) | Имя ViNS. Обратите внимание, что это имя уникально только в рамках учётной записи или ресурсной группы, на уровне которых создан ViNS. |
|
||||
| int_net_addr | (string) | Адрес внутренней сети ViNS. Обратите внимание, что адреса внутренних сетей всех ViNS, принадлежащих одной и той же учётной записи (независимо от того, создан ли ViNS на уровне учётной записи или ресурсной группы), не пересекаются. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор учётной ресурсной группы, которой принадлежит данный ViNS. Если данный ViNS создан на уровне учётной записи, то `rg_id=0`. |
|
||||
| state | (string) | Текущее состояние ViNS.<br/>Корректные состояния: `CREATED`, `ENABLED`, `DISABLED`, `DELETED`, `DESTROYED`. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_vins
|
||||
|
||||
В данном примере создаётся виртуальный сетевой сегмент с именем "MyVins01" (vins_name: "MyVins01").
|
||||
|
||||
Сетевой сегмент создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей учётной записи "MyMainAccount" (account_name: "MyMainAccount"). Виртуальный сетевой сегмент будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
|
||||
```
|
||||
- name: Manage ViNS at resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
vins_name: "vins_created_by_decort_VINS_module"
|
||||
state: present
|
||||
rg_id: 198
|
||||
ext_net_id: -1
|
||||
ipcidr: "10.20.30.0/24"
|
||||
mgmtaddr: "10.20.30.1"
|
||||
custom_config: false
|
||||
config_save: false
|
||||
verify_ssl: false
|
||||
register: my_vins
|
||||
```
|
||||
|
||||
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор ViNS для подключения к нему виртуального сервера.
|
||||
```
|
||||
- name: manage virtual server
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
|
||||
В данном примере идёт создание виртуального сетевого сегмента, а потом его привязка к виртуальным сетевым сегментам с id 864 и 196.
|
||||
```
|
||||
- name: Manage ViNS at resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "vins_connected_by_decort_vins_module"
|
||||
state: present
|
||||
rg_id: 98
|
||||
connect_to:
|
||||
- type: VINS
|
||||
id: 864
|
||||
ipaddr: 192.168.5.66
|
||||
netmask: 24
|
||||
- type: VINS
|
||||
id: 196
|
||||
ipaddr: 192.168.9.133
|
||||
netmask: 24
|
||||
register: managed_vins
|
||||
|
||||
```
|
||||
|
||||
|
||||
16
wiki/5.2.6/полезные-советы.md
Normal file
16
wiki/5.2.6/полезные-советы.md
Normal file
@@ -0,0 +1,16 @@
|
||||
## 4.1 Как хранить авторизационную информацию отдельно от плейбука.
|
||||
|
||||
В зависимости от метода авторизации нужная информация может передаваться в аргументах app_id & app_secret (пара аргументов), jwt (единичный аргумент) или user & password (пара аргументов). Однако, помещать данную информацию непосредственно в плейбук или роль может быть небезопасным, так как она позволяет любому, кто получил этот файл, осуществить доступ к контроллеру облачной инфраструктуры от лица данного пользователя.
|
||||
|
||||
Если вышеперечисленные параметры не указаны в плейбуке или роли, то Ansible модуль DECORT попытается использовать значения, заданные в соответствующих переменных окружения:
|
||||
|
||||
|
||||
| Аргумент | Переменная окружения|
|
||||
| ------ | ------ |
|
||||
| app_id | DECORT_APP_ID |
|
||||
| app_secret | DECORT_APP_SECRET |
|
||||
| jwt | DECORT_JWT |
|
||||
| user | DECORT_USER |
|
||||
| password | DECORT_PASSWORD |
|
||||
|
||||
Поэтому для использования плейбука, не содержащего секретной информации, рекомендуется вместо внесения значений непосредственно в файл перед запуском провайдера установить нужные переменные окружения.
|
||||
16
wiki/5.3.0/Home.md
Normal file
16
wiki/5.3.0/Home.md
Normal file
@@ -0,0 +1,16 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
1. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
|
||||
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
|
||||
27
wiki/5.3.0/введение.md
Normal file
27
wiki/5.3.0/введение.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 2.16.5 or higher
|
||||
- Python 3.10.12 or higher
|
||||
- PyJWT 1.7.1 Python module or higher
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- DECORT cloud platform version 4.0.0
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей. Для этого необходимо:
|
||||
- либо разместить директории **library** и **module_utils** в одной директории с плейбуками
|
||||
- либо в рабочей директории, из которой будет запускаться Ansible, разместить файл **ansible.cfg**, в котором задать пути к файлам модулей, например:
|
||||
```
|
||||
[defaults]
|
||||
library=./library
|
||||
module_utils=./module_utils
|
||||
```
|
||||
92
wiki/5.3.0/модуль-decort_bservice.md
Normal file
92
wiki/5.3.0/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service
|
||||
- Удалять Basic Service (безвозвратно).
|
||||
- Включать/выключать Basic Service
|
||||
- Запускать Basic Service
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная базовая служба. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`. <br> Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
|
||||
| started | (bool) <br> Default: `true` | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. |
|
||||
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
|
||||
| rg_name | (string) | Имя ресурсной группы базовой службы. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|
||||
|name | string | Имя базовой службы.|
|
||||
| techStatus | string | Технический статус базовой службы. |
|
||||
|state | string | Статус базовой службы.|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
|
||||
| groups | list | Список словарей с информацией о группах базовой службы.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт базовую службу с именем databases.
|
||||
|
||||
```
|
||||
- name: Create Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет базовую службу с названием databases.
|
||||
```
|
||||
- name: Delete Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
state: absent
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
177
wiki/5.3.0/модуль-decort_disk.md
Normal file
177
wiki/5.3.0/модуль-decort_disk.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисками и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- удалять (в корзину или безвозвратно)
|
||||
- восстановливать из корзины
|
||||
- изменять:
|
||||
- имя
|
||||
- размер
|
||||
- лимиты ввода/вывода
|
||||
- включать/отключать общий доступ
|
||||
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- Загрузочный диск для виртуальной машины создаётся и подключается автоматически в процессе создания этой машины.
|
||||
- Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- Подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным машинам выполняется с помощью модуля управления виртуальными машинами (см. модуль decort_kvmvm).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string)<br>Default: `Disk by decort_disk` | Текстовое описание диска. Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int)<br>Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: true`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах. |
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его `name` и информация об аккаунте (`account_id` или `account_name`), которому принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
|
||||
| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
|
||||
| reason | (string)<br>Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
|
||||
| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
|
||||
| shareable | (bool)<br>Default: `false` | Включение/отключение общего доступа к диску.
|
||||
| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние диска. |
|
||||
| type | (string)<br>Значения:<br>`B`<br>`D`<br>Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
|
||||
| verify_ssl | (bool)<br/>Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.|
|
||||
| attached_to | int | Идентификатор виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то `attached_to: 0`|
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
| id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничения ввода/вывода диска. |
|
||||
| name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
| pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.|
|
||||
| size | int | Размер диска в ГБ.|
|
||||
| state | string | Текущий статус диска. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (`size: 50`), с ограничением ввода/вывода в 2000 iops, на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
annotation: "Disk example"
|
||||
pool: data01
|
||||
register: my_data_disk01
|
||||
```
|
||||
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 10000
|
||||
write_bytes_sec: 5000
|
||||
read_iops_sec и write_iops_sec
|
||||
read_iops_sec: 2500
|
||||
write_iops_sec: 1000
|
||||
read_bytes_sec_max: 11000
|
||||
write_bytes_sec_max: 6000
|
||||
read_iops_sec_max: 3000
|
||||
write_iops_sec_max: 1500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
total_bytes_sec: 15000
|
||||
total_iops_sec: 3500
|
||||
total_bytes_sec_max: 17000
|
||||
total_iops_sec_max: 4500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: Manage compute
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
105
wiki/5.3.0/модуль-decort_group.md
Normal file
105
wiki/5.3.0/модуль-decort_group.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- запустить/остановить
|
||||
- подключить/отключить сети (для существующей группы только внутренние сети)
|
||||
- изменить
|
||||
- имя
|
||||
- объём загрузочного диска
|
||||
- количество ВМ
|
||||
- роль
|
||||
- количество виртуальных процессоров
|
||||
- объём ОЗУ
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля **decort_group**.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. При идентификации диска по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта. При идентификации диска по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Обьём загрузочного диска. |
|
||||
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| count | (int) | Количество виртуальных машин. Обязательный параметр. |
|
||||
| cpu | (int) | Количество виртуальных процессоров. |
|
||||
| driver | (string)<br>Default: `KVM_X86` | Драйвер. |
|
||||
| id | (int) | Идентификатор группы. |
|
||||
| image_id | (int) | Идентификатор образа. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| name | (str) | Имя группы. Обязательный параметр.
|
||||
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| ram | (int) | Объём оперативной памяти. |
|
||||
| role | (string) | Тег роли. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
|
||||
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>• `id` (int) - идентификатор ВМ<br>• `ipAddresses` (list) - список IP-адресов ВМ<br>• `name` (str) - имя ВМ<br>• `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
|
||||
| id | int | Идентификатор группы.|
|
||||
| name | string | Имя группы.|
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Состояние группы. |
|
||||
| techStatus | string | Технический статус группы. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу с именем `test_group`.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Create BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
boot_disk: 10
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
count: 2
|
||||
cpu: 2
|
||||
image_id: 518
|
||||
name: test_group
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 2
|
||||
verify_ssl: false
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу с именем `test_group`.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Delete BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: test_group
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
state: absent
|
||||
verify_ssl: False
|
||||
register: group_test
|
||||
```
|
||||
53
wiki/5.3.0/модуль-decort_jwt.md
Normal file
53
wiki/5.3.0/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_jwt**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| validity | (int)<br>Default: `3600` | Срок действия JWT в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль **decort_jwt** возвращает JWT-токен, который доступен по ключу `jwt` (str).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала запрашивается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуальной машины в режиме авторизации `jwt` (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: Create VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании новой ВМ (в предположении, что результат выполнения task для модуля **decort_jwt** был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
108
wiki/5.3.0/модуль-decort_k8s.md
Normal file
108
wiki/5.3.0/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Модуль decort_k8s
|
||||
## Обзор модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить
|
||||
- изменить группы Worker-узлов
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_k8s
|
||||
Ниже приведен полный список параметров для модуля **decort_k8s**:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. |
|
||||
| account_name | (string) | Имя аккаунта. |
|
||||
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| description | (string)<br>Default: `Created by decort ansible module` | Описание кластера. |
|
||||
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
|
||||
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
|
||||
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
|
||||
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
|
||||
| id | (int) | Идентификатор кластера Kubernetes. |
|
||||
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
|
||||
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. Обязательный параметр. |
|
||||
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
|
||||
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
|
||||
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
|
||||
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
|
||||
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
|
||||
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
|
||||
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
|
||||
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
|
||||
| name | (string) | Имя кластера Kubernetes. |
|
||||
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
|
||||
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
|
||||
| rg_id | (int) | Идентификатор ресурсной группы. |
|
||||
| rg_name | (str) | Имя ресурсной группы. |
|
||||
| started | (bool)<br>Default: `true` | Автоматический запуск кластера после его создания. |
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
|
||||
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
|
||||
| workers | (list) | Обязательный параметр. Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`<br>• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init<br>• `cpu` (int) (обязательный) - количество виртуальных процессоров на узле<br>• `disk` (int) (обязательный) - объём загрузочного диска на узле<br>• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`<br>• `name` (string) (обязательный) - имя группы Worker-узлов<br>• `num` (int) (обязательный) - количество узлов<br>• `pool` (str) (обязательный) - пул СХД, заданной ключом `sep_id`<br>• `ram` (int) (обязательный) - объём оперативной памяти на узле<br>• `sep_id` (int) (обязательный) - идентификатор СХД; если задать `null`, то используется СХД образа узла<br>• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| config | str | Kuber config кластера.
|
||||
| id | int | Идентификатор кластера. |
|
||||
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти
|
||||
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `labels` (list) - список строк с labels<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти<br>• `taints` (list) - список строк с taints
|
||||
| name | string | Имя кластера. |
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Статус кластера. |
|
||||
| techStatus | string | Технический статус кластера. |
|
||||
| vins_id | int | Идентификатор внутренней сети кластера. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_k8s
|
||||
|
||||
|
||||
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
|
||||
```
|
||||
- name: Create a k8s cluster named cluster-test
|
||||
decort_k8s:
|
||||
authenticator: jwt
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
getConfig: true
|
||||
jwt: "{{ token.jwt }}"
|
||||
k8ci_id: 18
|
||||
name: cluster-test
|
||||
rg_id: 125
|
||||
workers:
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg1
|
||||
num: 1
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg2
|
||||
num: 2
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
register: k8s_cluster
|
||||
```
|
||||
106
wiki/5.3.0/модуль-decort_kvmvm.md
Normal file
106
wiki/5.3.0/модуль-decort_kvmvm.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Модуль decort_kvmvm
|
||||
## Обзор модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** предназначен для выполнения следующих действий над виртуальными машинами:
|
||||
- создать
|
||||
- получить информацию
|
||||
- остановить/приостановить/запустить
|
||||
- подключить/отключить диски с данными
|
||||
- подключить/отключить сети
|
||||
- изменить
|
||||
- объём загрузочного диска в большую сторону
|
||||
- количество CPU
|
||||
- объём ОЗУ
|
||||
- тэги
|
||||
- affinity метку
|
||||
- affinity правила
|
||||
- anti-affinity правила
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_kvmvm
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_kvmvm**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_kvmvm`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| aaff_rule | (list) | Список словарей, описывающих anti-affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| account_id | (int) | Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_name` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется. |
|
||||
| aff_rule | (list) | Список словарей, описывающих affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| affinity_label | (str) | Метка affinity.
|
||||
| annotation | (string) | Опциональное описание виртуальной машины. Этот параметр используется только при создании.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DCORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| arch | (str)<br>Значения:<br/>`X86_64`<br>`PPC64_LE`<br>Default: `X86_64` | Архитектура виртуальной машины. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Объём загрузочного диска виртуальной машины в ГБ. |
|
||||
| ci_user_data | (dict) | конфигурация для cloud-init
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данная виртуальная машина. Данный параметр является обязательным. |
|
||||
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
|
||||
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данной виртуальной машине как дополнительные. |
|
||||
| id | (int) | Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива – по комбинации `name`, `rg_name` и `account_name`). Если при вызове модуля **decort_kvmvm** существующая ВМ идентифицируется по `id`, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются. |
|
||||
| image_id | (int) | Уникальный цифровой идентификатор образа, на базе которого следует создать виртуальную машину. При создании задать этот параметр или параметр `image_name`. При любых других операциях данные параметры игнорируются. Если заданы оба этих параметра (`image_id` и `image_name`), то `image_name` игнорируется. |
|
||||
| image_name | (string) | Название образа, на базе которого следует создать ВМ. При создании требуется задать этот параметр или параметр `image_id`. При любых других операциях данные параметры игнорируются. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_JWT`.
|
||||
| name | (string) | Имя ВМ. Чтобы модуль **decort_kvmvm** мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или `rg_id`. Если для существующей ВМ указаны и `name`, и `id`, то параметр `name` игнорируется и идентификация сервера выполняется по `id`.|
|
||||
| networks | (list) | Список словарей, описывающих сети для подключения к ВМ.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети<br>• `ip_addr` (string) (необязательный) - IP-адрес, используемый для подключения к данной сети. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| pool | (str) | Пул СХД, заданной параметром `sep_id`. Если пул не задан, то он будет выбран платформой.
|
||||
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
|
||||
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
|
||||
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
|
||||
| sep_id | (int) | Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
|
||||
| ssh_key | (string) | Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях. |
|
||||
| ssh_key_user | (string) | Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`. Используется только при создании и игнорируется при других операциях. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`poweredon`<br>`poweredoff`<br>`halted`<br>`paused`<br>`check`<br>Default: `present` | Целевое состояние ВМ.<br> Значение `halted` - синоним к `poweredoff`. Значения `present` и `poweredon` равнозначны. <br>Значение `check` вызывает модуль в _read-only_ режиме и считывает характеристики существующей ВМ. |
|
||||
| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** возвращает информацию о виртуальной машине в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| arch | string | Архитектура ВМ. |
|
||||
| cpu | int | Количество виртуальных процессоров. |
|
||||
| data_disks | list | Список идентификаторов дисков с данными, подключенных к ВМ. |
|
||||
| disk_size | int | Размер загрузочного диска в ГБ. |
|
||||
| id | int | Идентификатор ВМ. |
|
||||
| image_id | id | Идентификатор образа.
|
||||
| name | string | Имя ВМ. |
|
||||
| password | string | Пароль пользователя ОС по умолчанию. |
|
||||
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
|
||||
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
|
||||
| ram | int | Объём ОЗУ ВМ в МБ. |
|
||||
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
|
||||
| state | string | Состояние ВМ.|
|
||||
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
|
||||
| tech_status | str | Технический статус ВМ.
|
||||
| username | string | Имя пользователя ОС по умолчанию. |
|
||||
|
||||
## Пример использования модуля decort_kvmvm
|
||||
|
||||
В данном примере создается ВМ с именем MyFirstVM.
|
||||
```
|
||||
- name: Сreate VM
|
||||
decort_kvmvm:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
cpu: 2
|
||||
image_id: "{{ my_img.facts.id }}"
|
||||
name: MyFirstVM
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 4096
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
register: my_vm
|
||||
```
|
||||
893
wiki/5.3.0/модуль-decort_lb.md
Normal file
893
wiki/5.3.0/модуль-decort_lb.md
Normal file
@@ -0,0 +1,893 @@
|
||||
# Модуль decort_lb
|
||||
## Обзор модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить/перезапустить
|
||||
- изменить конфигурации backend и frontend
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_lb
|
||||
Ниже приведен полный список параметров для модуля **decort_lb**:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="3">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя аккаунта.
|
||||
<br> Может быть альтернативой параметру <code>account_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
annotation
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Default: <code>Managed by Ansible module decort_lb</code>
|
||||
</td>
|
||||
<td>
|
||||
Описание балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>leastconn</code>
|
||||
<br><code>roundrobin</code>
|
||||
<br><code>static-rr</code>
|
||||
<br>Default: <code>roundrobin</code>
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
<a name="backend_default_settings">
|
||||
default_settings
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
downinter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>1000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается недоступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
fall
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество последовательных неудачных проверок доступности, после
|
||||
которых сервер, ранее считавшийся доступным, начинает считаться
|
||||
недоступным и временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
inter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>5000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается доступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxconn
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>250</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит одновременных подключений к серверу. При достижении этого лимита
|
||||
сервер временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxqueue
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>256</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит соединений, ожидающих в очереди. Когда этот предел будет
|
||||
достигнут, все последующие подключения будут перенаправлены
|
||||
на другие серверы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
rise
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество проверок, которые должен пройти сервер, считавшийся
|
||||
недоступным, чтобы начать считаться доступным и снова быть
|
||||
включенным в схему балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
slowstart
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>60000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах с момента когда сервер начинает считаться
|
||||
доступным, по истечении которого количество фактически разрешенных
|
||||
подключений к этому серверу будет возвращено до 100% от
|
||||
установленного лимита.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
weight
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>100</code>
|
||||
</td>
|
||||
<td>
|
||||
Вес сервера для использования в алгоритмах балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ext_net_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внешней сети.
|
||||
<br>Может быть не задан, если задан <code>vins_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<a name="frontends">
|
||||
frontends
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backend
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название используемого backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
bindings
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации binding.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
<br>Если не задан, то будет использоваться основной IP-адрес
|
||||
балансировщика во внешней сети или, если подключена только
|
||||
внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ha_lb
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Использовать схему высокой доступности для создаваемого балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика нагрузки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
permanently
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Если выполняется удаление, то выполнить безвозвратное удаление
|
||||
(минуя корзину).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя ресурсной группы.
|
||||
<br> В комбинации с заданным аккаунтов может быть альтернативой
|
||||
параметру <code>rg_id</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих параметры backend-сервера для разных
|
||||
конфигураций backend.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br>Default: <code>enabled</code>
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
server_settings
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Словарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>present</code>
|
||||
<br><code>absent</code>
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>restart</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние балансировщика нагрузки.
|
||||
<br>Выполнение с <code>state=restart</code> позволяет выполнить
|
||||
перезапуск балансировщика, соответственно, всегда возвращает
|
||||
<code>changed: true</code>.
|
||||
<br>Значения <code>present</code> и <code>enabled</code> равнозначны
|
||||
и соответствуют включённому и запущенному балансировщику.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внутренней сети.
|
||||
<br>Может быть не задан, если задан <code>ext_net_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внешней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя внутренней сети.
|
||||
<br> В комбинации с заданной РГ может быть альтернативой для
|
||||
параметра <code>vins_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
serverDefaultSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Порт.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
serverSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
frontends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
<br> Ключи данного словаря аналогичны ключам словарей списка
|
||||
<a href=#frontends>
|
||||
frontends
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
gid
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор физического кластера (Grid ID).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
132
wiki/5.3.0/модуль-decort_osimage.md
Normal file
132
wiki/5.3.0/модуль-decort_osimage.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Модуль decort_osimage
|
||||
## Обзор модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
|
||||
- шаблонные образы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить имя
|
||||
- удалить
|
||||
- виртуальные образы
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить
|
||||
- имя
|
||||
- целевой образ
|
||||
|
||||
## Параметры модуля decort_osimage
|
||||
Ниже приведен полный список параметров для модуля decort_osimage.
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_Id | (int) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
|
||||
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| architecture | (string)<br>Default: `X86_64` | Архитектура микропроцессора, для которой предназначен образ. Используется при создании образа.|
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boottype | (string)<br>Default: `uefi` | Тип загрузки образа. Используется при создании образа.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) образ. Данный параметр является обязательным. |
|
||||
| drivers | (string)<br>Default: `KVM_X86` | Тип виртуальных машин, подходящих для образа. Используется при создании образа.|
|
||||
| hotresize | (bool)<br>Default: `false` | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы. |
|
||||
| image_id | (int) | Идентификатор шаблонного образа.
|
||||
| image_name | (str) | Имя шаблонного образа.
|
||||
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
|
||||
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
|
||||
| imagetype | (string)<br>Default: `linux` | Тип образа. Используется при создании образа.|
|
||||
| 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`. |
|
||||
| passwordDL | (string) | Пароль для скачивания по URL-адресу. Используется при создании образа. |
|
||||
| pool | (str) | Имя пула СХД. Используется для поиска существующего образа.
|
||||
| poolName | (string) | Имя пула СХД. Используется при создании образа. |
|
||||
| sepId | (integer) | Уникальный целочисленный идентификатор СХД. Используется при создании образа. |
|
||||
| sep_id | (int) | Идентификатор СХД. Используется для поиска существующего образа.
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
|
||||
| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
|
||||
| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа.|
|
||||
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последствии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage возвращает информацию об образе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| accountId | int | Идентификатор аккаунта.
|
||||
| id | int | Уникальный целочисленный идентификатор данного образа. |
|
||||
| linkto | int | Уникальный целочисленный идентификатор образа, который привязан к данному виртуальному. |
|
||||
| name | string | Имя образа. |
|
||||
| pool | string | Имя пула на системе хранения данных, в котором находится данный образ.|
|
||||
| sep_id | int | Идентификатор системы хранения данных, на которой хранится данный образ. |
|
||||
| size | int | Размер образа в ГБ. |
|
||||
| state | string | Текущий статус образа. |
|
||||
| type | string | Тип образа. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_osimage
|
||||
|
||||
|
||||
Пример создания шаблонного образа с операционной системой Alpine Linux.
|
||||
```
|
||||
- name: Create template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
url: https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.1-x86_64-uefi-cloudinit-r0.qcow2
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример получения информации о существующем шаблонном образе по его имени.
|
||||
|
||||
```
|
||||
- name: Get template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой шаблонный образ, он привяжет к себе указанный в примере шаблонный образ.
|
||||
|
||||
```
|
||||
- name: Create virtual image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
virt_name: alpine_last
|
||||
register: osimage
|
||||
```
|
||||
Обратите внимание, что в данном примере можно использовать как `image_name`, так и `image_id`. Также можно использовать либо `virt_name`, либо `virt_id`.
|
||||
|
||||
Пример переименования образа.
|
||||
|
||||
```
|
||||
- name: Rename template image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1_new_name
|
||||
image_id: 54321
|
||||
register: osimage
|
||||
```
|
||||
|
||||
76
wiki/5.3.0/модуль-decort_pfw.md
Normal file
76
wiki/5.3.0/модуль-decort_pfw.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Модуль decort_pfw
|
||||
## Обзор модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** предназначен для настройки правил переадресации портов (port forwarding, destination NAT) на виртуальном маршрутизаторе заданной внутренней сети для заданной виртуальной машины.
|
||||
Модуль поддерживает выполнение следующих действий над правилами:
|
||||
- добавить
|
||||
- получить информацию
|
||||
- удалить
|
||||
|
||||
## Параметры модуля decort_pfw
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_pfw**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_pfw`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| compute_id | (int) | Идентификатор виртуальной машины. IP-адрес, который данная ВМ имеет во внутренней сети, заданной параметром `vins_id`, будет использоваться как внутренний IP-адрес в правилах. Обязательный параметр. |
|
||||
| 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`. |
|
||||
| rules | (list) | Список словарей, описывающих правила переадресации портов для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`).<br>Ключи словаря:<br>• `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`<br>• `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`<br>• `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;<br>• `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
|
||||
| state | (str)<br>Значения:<br/>`present`<br/>`absent`<br>Default: `present` | Целевое состояние правил.<br>Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| compute_id | int | Идентификатор ВМ. |
|
||||
| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
|
||||
| rules | list | Список словарей, описывающих правила переадресации портов.<br>Ключи словаря:<br>• `id` (int) - идентификатор правила<br>• `localIp` (str) - IP-адрес ВМ<br>• `localPort` (int) - внутренний порт<br>• `protocol` (str) - протокол<br>• `publicPortEnd` (int) - верхняя граница диапазона внешних портов<br>• `publicPortStart` (int) - нижняя граница диапазона внешних портов<br>• `vmId` (int) - идентификатор ВМ<br>• `vmName` (str) - имя ВМ |
|
||||
| state | string | Статус правил. Значения: `PRESENT` или `ABSENT`. |
|
||||
| vins_id | int | Идентификатор внутренней сети. |
|
||||
|
||||
## Пример использования модуля decort_pfw
|
||||
|
||||
В данном примере для существующей ВМ (параметр `compute_id`), подключённой к внутренней сети (параметр `vins_id`), настраиваются два правила переадресации портов:
|
||||
|
||||
- Правило для одного порта: внешний порт `30022` на внутренний порт `22` по протоколу `tcp`.
|
||||
- Правило для диапазона портов: внешние порты с `30080` по `30085` на внутренние порты с `30080` по протоколу `udp`.
|
||||
|
||||
```
|
||||
- name: Add port forwarding rules
|
||||
decort_pfw:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
compute_id: "{{ my_vm.facts.id }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
rules:
|
||||
- local_port: 22
|
||||
proto: tcp
|
||||
public_port_start: 30022
|
||||
- local_port: 30080
|
||||
proto: udp
|
||||
public_port_end: 30085
|
||||
public_port_start: 30080
|
||||
vins_id: "{{ my_vins.facts.id }}"
|
||||
register: my_pfw_rules
|
||||
```
|
||||
|
||||
В данном примере результат выполнения модуля **decort_pfw** записывается в переменную `my_pfw_rules`. Для доступа к списку правил используйте следующую конструкцию:
|
||||
|
||||
```
|
||||
"{{ my_pfw_rules.facts.rules }}"
|
||||
```
|
||||
200
wiki/5.3.0/модуль-decort_rg.md
Normal file
200
wiki/5.3.0/модуль-decort_rg.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# Модуль decort_rg
|
||||
|
||||
## Обзор модуля decort_rg
|
||||
|
||||
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
|
||||
|
||||
- создавать ресурсные группы
|
||||
- удалять ресурсные группы (в корзину или безвозвратно)
|
||||
- восстанавливать ресурсные группы из корзины
|
||||
- включать/отключать ресурсные группы
|
||||
- запрашивать информацию об уже существующих ресурсных группах
|
||||
- изменять ресурсные группы:
|
||||
- переименовывать
|
||||
- настраивать квоты
|
||||
- задавать стандартную сеть
|
||||
- настраивать права доступа для пользователей
|
||||
|
||||
## Параметры модуля decort_rg
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_rg. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_rg`
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
|----------|--------------------------|----------|
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| access | (dict) | Параметр, позволяющий выдать, забрать или изменить права у пользователя в ресурсной группе. |
|
||||
| annotation | (string) | Текстовое описание ресурсной группы. Данный параметр является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br>`oauth2`<br>`jwt`| Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная ресурсная группа. Данный параметр является обязательным. |
|
||||
| def_netType | (string) <br>Значения:<br>`PRIVATE`<br>`PUBLIC`<br>`NONE`<br>Default: `PRIVATE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также при изменении. |
|
||||
| def_netId | (int) | Уникальный целочисленный идентификатор внутренней или внешней сети. Используется для изменения сети по умолчанию в ресурсной группе. |
|
||||
| extNetId | (int) | Уникальный целочисленный идентификатор внешней сети. Используется при создании РГ для подключения внешней сети к внутренней сети, которая будет создана и задана как сеть по умолчанию для РГ. |
|
||||
| extNetIp | (string) | IP-адрес для внешней сети, которая задана в параметре `extNetId`. |
|
||||
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
|
||||
| ipcidr | (string) | IP-адрес внутренней сети. Используется при создании ресурсной группы, чтобы задать IP-адрес сети для создаваемой внутренней сети, которая создастся вместе с ресурсной группой. Используется при параметре `def_netType` в значении `PRIVATE`. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br>Данный параметр является обязательным для указанного режима.<br>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| rename | (string) | Новое имя ресурсной группы. Используется при переименовании ресурсной группы. |
|
||||
| quotas | (dict) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
|
||||
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. Является обязательным при изменении РГ если не заданы `rg_name` и `account_id`/`account_name` |
|
||||
| state | Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>Default: `present` | Целевое состояние ресурсной группы. |
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_rg
|
||||
|
||||
Модуль decort_rg возвращает информацию о ресурсной группе в виде словаря facts со следующими ключами:
|
||||
| Ключ | Тип данных | Описание |
|
||||
|------|------------|----------|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
|
||||
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| state | string | Текущее состояние ресурсной группы. |
|
||||
| quota | dict | Текущие квоты ресурсной группы. |
|
||||
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
|
||||
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
|
||||
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
|
||||
| ViNS | list | Список идентификаторов внутренних сетей ресурсной группы. |
|
||||
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
|
||||
|
||||
## Пример использования модуля decort_rg
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount, также задать квоты и выдать права на чтение пользователю MyUser.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "R"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "RCX"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
def_netType: "PRIVATE"
|
||||
def_netId: 99
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
rename: "NewRg"
|
||||
rg_id: 27
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
|
||||
|
||||
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
|
||||
|
||||
```
|
||||
<прочие детали опущены>
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
```
|
||||
120
wiki/5.3.0/модуль-decort_vins.md
Normal file
120
wiki/5.3.0/модуль-decort_vins.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Модуль decort_vins
|
||||
## Обзор модуля decort_vins
|
||||
|
||||
Модуль decort_vins предназначен для управления внутренними сетями (Virtual Network Segment, ViNS) и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- на уровне ресурсной группы (если РГ задана)
|
||||
- на уровне аккаунта (если РГ не задана)
|
||||
- удалять (безвозвратно)
|
||||
- восстанавливать из корзины
|
||||
- запрашивать информацию
|
||||
- включать/отключать
|
||||
- соединять (необходимы права администратора)
|
||||
- изменять:
|
||||
- включать/отключать SSH-доступ к виртуальному маршрутизатору (необходимы права администратора)
|
||||
- включать/отключать режим **Custom Config** для виртуального маршрутизатора (необходимы права администратора)
|
||||
- сохранять конфигурацию виртуального маршрутизатора для возможности последующего отката к ней (необходимы права администратора)
|
||||
|
||||
## Параметры модуля decort_vins
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_vins. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_vins`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная внутреняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта, которому принадлежит данная внутренняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|annotation | (string)| Текстовое описание внутренней сети. Данный аргумент является опциональным и учитывается только при создании внутренней сети, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данный внутренняя сеть. Данный параметр является обязательным.
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой должна быть подключена внутренняя сеть. Если задать значение `0`, то платформой будет выбрана внешняя сеть по умолчанию. |
|
||||
| ext_ip_addr | (string) | IP-адрес внешней сети, заданной через параметр `ext_net_id`. Если не задан, то IP-адрес для внешней сети будет выбран платформой автоматически.
|
||||
| ipcidr | (string) | Адрес сети для создаваемой внутренней сети. Если этот параметр не задан, то платформа назначит адрес автоматически. Обратите внимание, что внутренние сети, принадлежащие одному и тому же аккаунту, не могут иметь пересекающихся сетей.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу _Oauth2_, который должен использоваться в режиме `authenticator: oauth2`.<br/>Данный параметр является обязательным для указанного режима.<br/>Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
|
||||
| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
|
||||
| state | (string)<br>Значения:<br/>`present`<br/>`absent`<br/>`enabled`<br/>`disabled`<br/>Default: `present` | Целевое состояние внутренней сети. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Соответствующая внутренная сеть должна существовать. Таким образом, с помощью `vins_id` нельзя создать новую внутреннюю сеть, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
|
||||
| vins_name| (string) | Имя внутренней сети. Для идентификации внутренней сети требуется либо `vins_name` и информация об аккаунте/ресурсной группе, которой принадлежит сеть, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или аккаунта, на уровне которого существует данная внутренняя сеть.|
|
||||
| mgmtaddr | (list) | Список существующих IP-адресов виртуального маршрутизатора во внутренней сети, через которые необходимо разрешить SSH-доступ к виртуальному маршрутизатору.
|
||||
| custom_config | (bool)<br>Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
|
||||
| config_save | (bool)<br>Default: `false` | Выполнить сохранение текущей конфигурации виртуального маршрутизатора для возможности последующего отката к ней. |
|
||||
| connect_to | (list) | Список словарей, содержащих информацию о внутренних сетях, к которым необходимо подключить данную. См. примеры.
|
||||
|
||||
## Возвращаемые значения модуля decort_vins
|
||||
|
||||
Модуль decort_vins возвращает информацию о внутренней сети в виде словаря facts со следующими ключами:
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| --- | --- | --- |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит внутренняя сеть. |
|
||||
| custom_net_addr | (list) | Список IP-адресов пользовательских интерфейсов виртуального маршрутизатора
|
||||
| ext_ip_addr | (string) | IP-адрес интерфейса, которым виртуальный маршрутизатор подключён к внешней сети. |
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключена внутренняя сеть. `-1` означает, что внутренняя сеть не подключёна к внешней сети. |
|
||||
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данной внутренней сети. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор внутренней сети. |
|
||||
| name | (string) | Имя внутренней сети. |
|
||||
| int_net_addr | (string) | Адрес внутренней сети. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, которой принадлежит данная внутренняя сеть. Если данная внутренняя сеть создана на уровне аккаунта, то `rg_id=0`. |
|
||||
| ssh_ipaddr | (list) | Список IP-адресов виртуального маршрутизатора во внутренней сети, на которых включён SSH-доступ к нему.
|
||||
| ssh_password | (str) | Пароль для SSH-доступа к виртуальному маршрутизатору.
|
||||
| ssh_port | (int) | Номер порта для SSH-подключения к виртуальному маршрутизатору.
|
||||
| state | (string) | Состояние внутренней сети. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_vins
|
||||
|
||||
В данном примере создаётся внутренняя сеть с именем "MyVins01" (vins_name: "MyVins01").
|
||||
|
||||
Внутренняя сеть создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей аккаунту "MyMainAccount" (account_name: "MyMainAccount"). Внутренняя сеть будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
account_name: "MyMainAccount"
|
||||
rg_name: "MyRg01"
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
ext_net_id: 0
|
||||
vins_name: "MyVins01"
|
||||
register: my_vins
|
||||
```
|
||||
|
||||
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор внутренней сети для подключения к нему виртуального сервера.
|
||||
```
|
||||
- name: Manage virtual machine
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
|
||||
В данном примере идёт создание внутренней сети, а потом её привязка к внутренним сетям с id 864 и 196.
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "ViNS_connected_by_decort_vins_module"
|
||||
rg_id: 98
|
||||
connect_to:
|
||||
- id: 864
|
||||
ipaddr: 192.168.5.66
|
||||
netmask: 24
|
||||
- id: 196
|
||||
ipaddr: 192.168.9.133
|
||||
netmask: 24
|
||||
register: managed_vins
|
||||
|
||||
```
|
||||
|
||||
|
||||
21
wiki/5.4.0/Home.md
Normal file
21
wiki/5.4.0/Home.md
Normal file
@@ -0,0 +1,21 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
- [Авторизация](./введение.md#авторизация)
|
||||
- [Общие параметры модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации)
|
||||
- [Пример авторизации с помощью app_id и app_secret](./введение.md#пример-авторизации-с-помощью-app_id-и-app_secret)
|
||||
- [Пример авторизации с помощью JSON Web Token](./введение.md#пример-авторизации-с-помощью-json-web-token)
|
||||
1. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
|
||||
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
|
||||
- [Модуль decort_account_info](./модуль-decort_account_info.md) - получение информации об аккаунте
|
||||
182
wiki/5.4.0/введение.md
Normal file
182
wiki/5.4.0/введение.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 2.16.5 or higher
|
||||
- Python 3.10.12 or higher
|
||||
- PyJWT 1.7.1 Python module or higher
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- DECORT cloud platform version 4.0.0
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей. Для этого необходимо:
|
||||
- либо разместить директории **library** и **module_utils** в одной директории с плейбуками
|
||||
- либо в рабочей директории, из которой будет запускаться Ansible, разместить файл **ansible.cfg**, в котором задать пути к файлам модулей, например:
|
||||
```
|
||||
[defaults]
|
||||
library=./library
|
||||
module_utils=./module_utils
|
||||
```
|
||||
|
||||
## Авторизация
|
||||
|
||||
### Общие параметры модулей для авторизации
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Пример авторизации с помощью app_id и app_secret
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with app_id and app_secret
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
app_id: "{{ app_id }}"
|
||||
app_secret: "{{ app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "{{ controller_url }}"
|
||||
oauth2_url: "{{ oauth2_url }}"
|
||||
```
|
||||
|
||||
### Пример авторизации с помощью JSON Web Token
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with JWT
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ jwt }}"
|
||||
```
|
||||
3840
wiki/5.4.0/модуль-decort_account_info.md
Normal file
3840
wiki/5.4.0/модуль-decort_account_info.md
Normal file
File diff suppressed because it is too large
Load Diff
92
wiki/5.4.0/модуль-decort_bservice.md
Normal file
92
wiki/5.4.0/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service
|
||||
- Удалять Basic Service (безвозвратно).
|
||||
- Включать/выключать Basic Service
|
||||
- Запускать Basic Service
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная базовая служба. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`. <br> Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
|
||||
| started | (bool) <br> Default: `true` | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. |
|
||||
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
|
||||
| rg_name | (string) | Имя ресурсной группы базовой службы. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|
||||
|name | string | Имя базовой службы.|
|
||||
| techStatus | string | Технический статус базовой службы. |
|
||||
|state | string | Статус базовой службы.|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
|
||||
| groups | list | Список словарей с информацией о группах базовой службы.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт базовую службу с именем databases.
|
||||
|
||||
```
|
||||
- name: Create Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет базовую службу с названием databases.
|
||||
```
|
||||
- name: Delete Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
state: absent
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
177
wiki/5.4.0/модуль-decort_disk.md
Normal file
177
wiki/5.4.0/модуль-decort_disk.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисками и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- удалять (в корзину или безвозвратно)
|
||||
- восстановливать из корзины
|
||||
- изменять:
|
||||
- имя
|
||||
- размер
|
||||
- лимиты ввода/вывода
|
||||
- включать/отключать общий доступ
|
||||
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- Загрузочный диск для виртуальной машины создаётся и подключается автоматически в процессе создания этой машины.
|
||||
- Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- Подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным машинам выполняется с помощью модуля управления виртуальными машинами (см. модуль decort_kvmvm).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string)<br>Default: `Disk by decort_disk` | Текстовое описание диска. Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int)<br>Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: true`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах. |
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его `name` и информация об аккаунте (`account_id` или `account_name`), которому принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
|
||||
| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
|
||||
| reason | (string)<br>Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
|
||||
| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
|
||||
| shareable | (bool)<br>Default: `false` | Включение/отключение общего доступа к диску.
|
||||
| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние диска. |
|
||||
| type | (string)<br>Значения:<br>`B`<br>`D`<br>Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
|
||||
| verify_ssl | (bool)<br/>Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.|
|
||||
| attached_to | int | Идентификатор виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то `attached_to: 0`|
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
| id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничения ввода/вывода диска. |
|
||||
| name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
| pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.|
|
||||
| size | int | Размер диска в ГБ.|
|
||||
| state | string | Текущий статус диска. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (`size: 50`), с ограничением ввода/вывода в 2000 iops, на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
annotation: "Disk example"
|
||||
pool: data01
|
||||
register: my_data_disk01
|
||||
```
|
||||
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 10000
|
||||
write_bytes_sec: 5000
|
||||
read_iops_sec и write_iops_sec
|
||||
read_iops_sec: 2500
|
||||
write_iops_sec: 1000
|
||||
read_bytes_sec_max: 11000
|
||||
write_bytes_sec_max: 6000
|
||||
read_iops_sec_max: 3000
|
||||
write_iops_sec_max: 1500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
total_bytes_sec: 15000
|
||||
total_iops_sec: 3500
|
||||
total_bytes_sec_max: 17000
|
||||
total_iops_sec_max: 4500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: Manage compute
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
105
wiki/5.4.0/модуль-decort_group.md
Normal file
105
wiki/5.4.0/модуль-decort_group.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- запустить/остановить
|
||||
- подключить/отключить сети (для существующей группы только внутренние сети)
|
||||
- изменить
|
||||
- имя
|
||||
- объём загрузочного диска
|
||||
- количество ВМ
|
||||
- роль
|
||||
- количество виртуальных процессоров
|
||||
- объём ОЗУ
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля **decort_group**.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. При идентификации диска по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта. При идентификации диска по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Обьём загрузочного диска. |
|
||||
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| count | (int) | Количество виртуальных машин. Обязательный параметр. |
|
||||
| cpu | (int) | Количество виртуальных процессоров. |
|
||||
| driver | (string)<br>Default: `KVM_X86` | Драйвер. |
|
||||
| id | (int) | Идентификатор группы. |
|
||||
| image_id | (int) | Идентификатор образа. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| name | (str) | Имя группы. Обязательный параметр.
|
||||
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| ram | (int) | Объём оперативной памяти. |
|
||||
| role | (string) | Тег роли. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
|
||||
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>• `id` (int) - идентификатор ВМ<br>• `ipAddresses` (list) - список IP-адресов ВМ<br>• `name` (str) - имя ВМ<br>• `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
|
||||
| id | int | Идентификатор группы.|
|
||||
| name | string | Имя группы.|
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Состояние группы. |
|
||||
| techStatus | string | Технический статус группы. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу с именем `test_group`.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Create BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
boot_disk: 10
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
count: 2
|
||||
cpu: 2
|
||||
image_id: 518
|
||||
name: test_group
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 2
|
||||
verify_ssl: false
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу с именем `test_group`.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Delete BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: test_group
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
state: absent
|
||||
verify_ssl: False
|
||||
register: group_test
|
||||
```
|
||||
53
wiki/5.4.0/модуль-decort_jwt.md
Normal file
53
wiki/5.4.0/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_jwt**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| validity | (int)<br>Default: `3600` | Срок действия JWT в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль **decort_jwt** возвращает JWT-токен, который доступен по ключу `jwt` (str).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала запрашивается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуальной машины в режиме авторизации `jwt` (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: Create VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании новой ВМ (в предположении, что результат выполнения task для модуля **decort_jwt** был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
108
wiki/5.4.0/модуль-decort_k8s.md
Normal file
108
wiki/5.4.0/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Модуль decort_k8s
|
||||
## Обзор модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить
|
||||
- изменить группы Worker-узлов
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_k8s
|
||||
Ниже приведен полный список параметров для модуля **decort_k8s**:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. |
|
||||
| account_name | (string) | Имя аккаунта. |
|
||||
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| description | (string)<br>Default: `Created by decort ansible module` | Описание кластера. |
|
||||
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
|
||||
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
|
||||
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
|
||||
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
|
||||
| id | (int) | Идентификатор кластера Kubernetes. |
|
||||
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
|
||||
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. Обязательный параметр. |
|
||||
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
|
||||
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
|
||||
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
|
||||
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
|
||||
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
|
||||
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
|
||||
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
|
||||
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
|
||||
| name | (string) | Имя кластера Kubernetes. |
|
||||
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
|
||||
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
|
||||
| rg_id | (int) | Идентификатор ресурсной группы. |
|
||||
| rg_name | (str) | Имя ресурсной группы. |
|
||||
| started | (bool)<br>Default: `true` | Автоматический запуск кластера после его создания. |
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
|
||||
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
|
||||
| workers | (list) | Обязательный параметр. Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`<br>• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init<br>• `cpu` (int) (обязательный) - количество виртуальных процессоров на узле<br>• `disk` (int) (обязательный) - объём загрузочного диска на узле<br>• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`<br>• `name` (string) (обязательный) - имя группы Worker-узлов<br>• `num` (int) (обязательный) - количество узлов<br>• `pool` (str) (обязательный) - пул СХД, заданной ключом `sep_id`<br>• `ram` (int) (обязательный) - объём оперативной памяти на узле<br>• `sep_id` (int) (обязательный) - идентификатор СХД; если задать `null`, то используется СХД образа узла<br>• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| config | str | Kuber config кластера.
|
||||
| id | int | Идентификатор кластера. |
|
||||
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти
|
||||
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `labels` (list) - список строк с labels<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти<br>• `taints` (list) - список строк с taints
|
||||
| name | string | Имя кластера. |
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Статус кластера. |
|
||||
| techStatus | string | Технический статус кластера. |
|
||||
| vins_id | int | Идентификатор внутренней сети кластера. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_k8s
|
||||
|
||||
|
||||
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
|
||||
```
|
||||
- name: Create a k8s cluster named cluster-test
|
||||
decort_k8s:
|
||||
authenticator: jwt
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
getConfig: true
|
||||
jwt: "{{ token.jwt }}"
|
||||
k8ci_id: 18
|
||||
name: cluster-test
|
||||
rg_id: 125
|
||||
workers:
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg1
|
||||
num: 1
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg2
|
||||
num: 2
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
register: k8s_cluster
|
||||
```
|
||||
106
wiki/5.4.0/модуль-decort_kvmvm.md
Normal file
106
wiki/5.4.0/модуль-decort_kvmvm.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Модуль decort_kvmvm
|
||||
## Обзор модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** предназначен для выполнения следующих действий над виртуальными машинами:
|
||||
- создать
|
||||
- получить информацию
|
||||
- остановить/приостановить/запустить
|
||||
- подключить/отключить диски с данными
|
||||
- подключить/отключить сети
|
||||
- изменить
|
||||
- объём загрузочного диска в большую сторону
|
||||
- количество CPU
|
||||
- объём ОЗУ
|
||||
- тэги
|
||||
- affinity метку
|
||||
- affinity правила
|
||||
- anti-affinity правила
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_kvmvm
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_kvmvm**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_kvmvm`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| aaff_rule | (list) | Список словарей, описывающих anti-affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| account_id | (int) | Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_name` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется. |
|
||||
| aff_rule | (list) | Список словарей, описывающих affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| affinity_label | (str) | Метка affinity.
|
||||
| annotation | (string) | Опциональное описание виртуальной машины. Этот параметр используется только при создании.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DCORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| arch | (str)<br>Значения:<br/>`X86_64`<br>`PPC64_LE`<br>Default: `X86_64` | Архитектура виртуальной машины. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Объём загрузочного диска виртуальной машины в ГБ. |
|
||||
| ci_user_data | (dict) | конфигурация для cloud-init
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данная виртуальная машина. Данный параметр является обязательным. |
|
||||
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
|
||||
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данной виртуальной машине как дополнительные. |
|
||||
| id | (int) | Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива – по комбинации `name`, `rg_name` и `account_name`). Если при вызове модуля **decort_kvmvm** существующая ВМ идентифицируется по `id`, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются. |
|
||||
| image_id | (int) | Уникальный цифровой идентификатор образа, на базе которого следует создать виртуальную машину. При создании задать этот параметр или параметр `image_name`. При любых других операциях данные параметры игнорируются. Если заданы оба этих параметра (`image_id` и `image_name`), то `image_name` игнорируется. |
|
||||
| image_name | (string) | Название образа, на базе которого следует создать ВМ. При создании требуется задать этот параметр или параметр `image_id`. При любых других операциях данные параметры игнорируются. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_JWT`.
|
||||
| name | (string) | Имя ВМ. Чтобы модуль **decort_kvmvm** мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или `rg_id`. Если для существующей ВМ указаны и `name`, и `id`, то параметр `name` игнорируется и идентификация сервера выполняется по `id`.|
|
||||
| networks | (list) | Список словарей, описывающих сети для подключения к ВМ.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети<br>• `ip_addr` (string) (необязательный) - IP-адрес, используемый для подключения к данной сети. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| pool | (str) | Пул СХД, заданной параметром `sep_id`. Если пул не задан, то он будет выбран платформой.
|
||||
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
|
||||
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
|
||||
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
|
||||
| sep_id | (int) | Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
|
||||
| ssh_key | (string) | Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях. |
|
||||
| ssh_key_user | (string) | Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`. Используется только при создании и игнорируется при других операциях. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`poweredon`<br>`poweredoff`<br>`halted`<br>`paused`<br>`check`<br>Default: `present` | Целевое состояние ВМ.<br> Значение `halted` - синоним к `poweredoff`. Значения `present` и `poweredon` равнозначны. <br>Значение `check` вызывает модуль в _read-only_ режиме и считывает характеристики существующей ВМ. |
|
||||
| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** возвращает информацию о виртуальной машине в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| arch | string | Архитектура ВМ. |
|
||||
| cpu | int | Количество виртуальных процессоров. |
|
||||
| data_disks | list | Список идентификаторов дисков с данными, подключенных к ВМ. |
|
||||
| disk_size | int | Размер загрузочного диска в ГБ. |
|
||||
| id | int | Идентификатор ВМ. |
|
||||
| image_id | id | Идентификатор образа.
|
||||
| name | string | Имя ВМ. |
|
||||
| password | string | Пароль пользователя ОС по умолчанию. |
|
||||
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
|
||||
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
|
||||
| ram | int | Объём ОЗУ ВМ в МБ. |
|
||||
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
|
||||
| state | string | Состояние ВМ.|
|
||||
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
|
||||
| tech_status | str | Технический статус ВМ.
|
||||
| username | string | Имя пользователя ОС по умолчанию. |
|
||||
|
||||
## Пример использования модуля decort_kvmvm
|
||||
|
||||
В данном примере создается ВМ с именем MyFirstVM.
|
||||
```
|
||||
- name: Сreate VM
|
||||
decort_kvmvm:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
cpu: 2
|
||||
image_id: "{{ my_img.facts.id }}"
|
||||
name: MyFirstVM
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 4096
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
register: my_vm
|
||||
```
|
||||
893
wiki/5.4.0/модуль-decort_lb.md
Normal file
893
wiki/5.4.0/модуль-decort_lb.md
Normal file
@@ -0,0 +1,893 @@
|
||||
# Модуль decort_lb
|
||||
## Обзор модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить/перезапустить
|
||||
- изменить конфигурации backend и frontend
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_lb
|
||||
Ниже приведен полный список параметров для модуля **decort_lb**:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="3">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя аккаунта.
|
||||
<br> Может быть альтернативой параметру <code>account_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
annotation
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Default: <code>Managed by Ansible module decort_lb</code>
|
||||
</td>
|
||||
<td>
|
||||
Описание балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>leastconn</code>
|
||||
<br><code>roundrobin</code>
|
||||
<br><code>static-rr</code>
|
||||
<br>Default: <code>roundrobin</code>
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
<a name="backend_default_settings">
|
||||
default_settings
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
downinter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>1000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается недоступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
fall
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество последовательных неудачных проверок доступности, после
|
||||
которых сервер, ранее считавшийся доступным, начинает считаться
|
||||
недоступным и временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
inter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>5000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается доступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxconn
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>250</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит одновременных подключений к серверу. При достижении этого лимита
|
||||
сервер временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxqueue
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>256</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит соединений, ожидающих в очереди. Когда этот предел будет
|
||||
достигнут, все последующие подключения будут перенаправлены
|
||||
на другие серверы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
rise
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество проверок, которые должен пройти сервер, считавшийся
|
||||
недоступным, чтобы начать считаться доступным и снова быть
|
||||
включенным в схему балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
slowstart
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>60000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах с момента когда сервер начинает считаться
|
||||
доступным, по истечении которого количество фактически разрешенных
|
||||
подключений к этому серверу будет возвращено до 100% от
|
||||
установленного лимита.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
weight
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>100</code>
|
||||
</td>
|
||||
<td>
|
||||
Вес сервера для использования в алгоритмах балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ext_net_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внешней сети.
|
||||
<br>Может быть не задан, если задан <code>vins_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<a name="frontends">
|
||||
frontends
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backend
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название используемого backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
bindings
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации binding.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
<br>Если не задан, то будет использоваться основной IP-адрес
|
||||
балансировщика во внешней сети или, если подключена только
|
||||
внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ha_lb
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Использовать схему высокой доступности для создаваемого балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика нагрузки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
permanently
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Если выполняется удаление, то выполнить безвозвратное удаление
|
||||
(минуя корзину).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя ресурсной группы.
|
||||
<br> В комбинации с заданным аккаунтов может быть альтернативой
|
||||
параметру <code>rg_id</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих параметры backend-сервера для разных
|
||||
конфигураций backend.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br>Default: <code>enabled</code>
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
server_settings
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Словарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>present</code>
|
||||
<br><code>absent</code>
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>restart</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние балансировщика нагрузки.
|
||||
<br>Выполнение с <code>state=restart</code> позволяет выполнить
|
||||
перезапуск балансировщика, соответственно, всегда возвращает
|
||||
<code>changed: true</code>.
|
||||
<br>Значения <code>present</code> и <code>enabled</code> равнозначны
|
||||
и соответствуют включённому и запущенному балансировщику.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внутренней сети.
|
||||
<br>Может быть не задан, если задан <code>ext_net_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внешней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя внутренней сети.
|
||||
<br> В комбинации с заданной РГ может быть альтернативой для
|
||||
параметра <code>vins_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
serverDefaultSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Порт.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
serverSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
frontends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
<br> Ключи данного словаря аналогичны ключам словарей списка
|
||||
<a href=#frontends>
|
||||
frontends
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
gid
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор физического кластера (Grid ID).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
132
wiki/5.4.0/модуль-decort_osimage.md
Normal file
132
wiki/5.4.0/модуль-decort_osimage.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Модуль decort_osimage
|
||||
## Обзор модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
|
||||
- шаблонные образы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить имя
|
||||
- удалить
|
||||
- виртуальные образы
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить
|
||||
- имя
|
||||
- целевой образ
|
||||
|
||||
## Параметры модуля decort_osimage
|
||||
Ниже приведен полный список параметров для модуля decort_osimage.
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_Id | (int) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
|
||||
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| architecture | (string)<br>Default: `X86_64` | Архитектура микропроцессора, для которой предназначен образ. Используется при создании образа.|
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boottype | (string)<br>Default: `uefi` | Тип загрузки образа. Используется при создании образа.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) образ. Данный параметр является обязательным. |
|
||||
| drivers | (string)<br>Default: `KVM_X86` | Тип виртуальных машин, подходящих для образа. Используется при создании образа.|
|
||||
| hotresize | (bool)<br>Default: `false` | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы. |
|
||||
| image_id | (int) | Идентификатор шаблонного образа.
|
||||
| image_name | (str) | Имя шаблонного образа.
|
||||
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
|
||||
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
|
||||
| imagetype | (string)<br>Default: `linux` | Тип образа. Используется при создании образа.|
|
||||
| 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`. |
|
||||
| passwordDL | (string) | Пароль для скачивания по URL-адресу. Используется при создании образа. |
|
||||
| pool | (str) | Имя пула СХД. Используется для поиска существующего образа.
|
||||
| poolName | (string) | Имя пула СХД. Используется при создании образа. |
|
||||
| sepId | (integer) | Уникальный целочисленный идентификатор СХД. Используется при создании образа. |
|
||||
| sep_id | (int) | Идентификатор СХД. Используется для поиска существующего образа.
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
|
||||
| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
|
||||
| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа.|
|
||||
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последствии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage возвращает информацию об образе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| accountId | int | Идентификатор аккаунта.
|
||||
| id | int | Уникальный целочисленный идентификатор данного образа. |
|
||||
| linkto | int | Уникальный целочисленный идентификатор образа, который привязан к данному виртуальному. |
|
||||
| name | string | Имя образа. |
|
||||
| pool | string | Имя пула на системе хранения данных, в котором находится данный образ.|
|
||||
| sep_id | int | Идентификатор системы хранения данных, на которой хранится данный образ. |
|
||||
| size | int | Размер образа в ГБ. |
|
||||
| state | string | Текущий статус образа. |
|
||||
| type | string | Тип образа. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_osimage
|
||||
|
||||
|
||||
Пример создания шаблонного образа с операционной системой Alpine Linux.
|
||||
```
|
||||
- name: Create template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
url: https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.1-x86_64-uefi-cloudinit-r0.qcow2
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример получения информации о существующем шаблонном образе по его имени.
|
||||
|
||||
```
|
||||
- name: Get template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой шаблонный образ, он привяжет к себе указанный в примере шаблонный образ.
|
||||
|
||||
```
|
||||
- name: Create virtual image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
virt_name: alpine_last
|
||||
register: osimage
|
||||
```
|
||||
Обратите внимание, что в данном примере можно использовать как `image_name`, так и `image_id`. Также можно использовать либо `virt_name`, либо `virt_id`.
|
||||
|
||||
Пример переименования образа.
|
||||
|
||||
```
|
||||
- name: Rename template image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1_new_name
|
||||
image_id: 54321
|
||||
register: osimage
|
||||
```
|
||||
|
||||
76
wiki/5.4.0/модуль-decort_pfw.md
Normal file
76
wiki/5.4.0/модуль-decort_pfw.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Модуль decort_pfw
|
||||
## Обзор модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** предназначен для настройки правил переадресации портов (port forwarding, destination NAT) на виртуальном маршрутизаторе заданной внутренней сети для заданной виртуальной машины.
|
||||
Модуль поддерживает выполнение следующих действий над правилами:
|
||||
- добавить
|
||||
- получить информацию
|
||||
- удалить
|
||||
|
||||
## Параметры модуля decort_pfw
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_pfw**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_pfw`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| compute_id | (int) | Идентификатор виртуальной машины. IP-адрес, который данная ВМ имеет во внутренней сети, заданной параметром `vins_id`, будет использоваться как внутренний IP-адрес в правилах. Обязательный параметр. |
|
||||
| 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`. |
|
||||
| rules | (list) | Список словарей, описывающих правила переадресации портов для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`).<br>Ключи словаря:<br>• `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`<br>• `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`<br>• `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;<br>• `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
|
||||
| state | (str)<br>Значения:<br/>`present`<br/>`absent`<br>Default: `present` | Целевое состояние правил.<br>Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| compute_id | int | Идентификатор ВМ. |
|
||||
| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
|
||||
| rules | list | Список словарей, описывающих правила переадресации портов.<br>Ключи словаря:<br>• `id` (int) - идентификатор правила<br>• `localIp` (str) - IP-адрес ВМ<br>• `localPort` (int) - внутренний порт<br>• `protocol` (str) - протокол<br>• `publicPortEnd` (int) - верхняя граница диапазона внешних портов<br>• `publicPortStart` (int) - нижняя граница диапазона внешних портов<br>• `vmId` (int) - идентификатор ВМ<br>• `vmName` (str) - имя ВМ |
|
||||
| state | string | Статус правил. Значения: `PRESENT` или `ABSENT`. |
|
||||
| vins_id | int | Идентификатор внутренней сети. |
|
||||
|
||||
## Пример использования модуля decort_pfw
|
||||
|
||||
В данном примере для существующей ВМ (параметр `compute_id`), подключённой к внутренней сети (параметр `vins_id`), настраиваются два правила переадресации портов:
|
||||
|
||||
- Правило для одного порта: внешний порт `30022` на внутренний порт `22` по протоколу `tcp`.
|
||||
- Правило для диапазона портов: внешние порты с `30080` по `30085` на внутренние порты с `30080` по протоколу `udp`.
|
||||
|
||||
```
|
||||
- name: Add port forwarding rules
|
||||
decort_pfw:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
compute_id: "{{ my_vm.facts.id }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
rules:
|
||||
- local_port: 22
|
||||
proto: tcp
|
||||
public_port_start: 30022
|
||||
- local_port: 30080
|
||||
proto: udp
|
||||
public_port_end: 30085
|
||||
public_port_start: 30080
|
||||
vins_id: "{{ my_vins.facts.id }}"
|
||||
register: my_pfw_rules
|
||||
```
|
||||
|
||||
В данном примере результат выполнения модуля **decort_pfw** записывается в переменную `my_pfw_rules`. Для доступа к списку правил используйте следующую конструкцию:
|
||||
|
||||
```
|
||||
"{{ my_pfw_rules.facts.rules }}"
|
||||
```
|
||||
200
wiki/5.4.0/модуль-decort_rg.md
Normal file
200
wiki/5.4.0/модуль-decort_rg.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# Модуль decort_rg
|
||||
|
||||
## Обзор модуля decort_rg
|
||||
|
||||
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
|
||||
|
||||
- создавать ресурсные группы
|
||||
- удалять ресурсные группы (в корзину или безвозвратно)
|
||||
- восстанавливать ресурсные группы из корзины
|
||||
- включать/отключать ресурсные группы
|
||||
- запрашивать информацию об уже существующих ресурсных группах
|
||||
- изменять ресурсные группы:
|
||||
- переименовывать
|
||||
- настраивать квоты
|
||||
- задавать стандартную сеть
|
||||
- настраивать права доступа для пользователей
|
||||
|
||||
## Параметры модуля decort_rg
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_rg. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_rg`
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
|----------|--------------------------|----------|
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| access | (dict) | Параметр, позволяющий выдать, забрать или изменить права у пользователя в ресурсной группе. |
|
||||
| annotation | (string) | Текстовое описание ресурсной группы. Данный параметр является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br>`oauth2`<br>`jwt`| Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная ресурсная группа. Данный параметр является обязательным. |
|
||||
| def_netType | (string) <br>Значения:<br>`PRIVATE`<br>`PUBLIC`<br>`NONE`<br>Default: `PRIVATE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также при изменении. |
|
||||
| def_netId | (int) | Уникальный целочисленный идентификатор внутренней или внешней сети. Используется для изменения сети по умолчанию в ресурсной группе. |
|
||||
| extNetId | (int) | Уникальный целочисленный идентификатор внешней сети. Используется при создании РГ для подключения внешней сети к внутренней сети, которая будет создана и задана как сеть по умолчанию для РГ. |
|
||||
| extNetIp | (string) | IP-адрес для внешней сети, которая задана в параметре `extNetId`. |
|
||||
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
|
||||
| ipcidr | (string) | IP-адрес внутренней сети. Используется при создании ресурсной группы, чтобы задать IP-адрес сети для создаваемой внутренней сети, которая создастся вместе с ресурсной группой. Используется при параметре `def_netType` в значении `PRIVATE`. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br>Данный параметр является обязательным для указанного режима.<br>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| rename | (string) | Новое имя ресурсной группы. Используется при переименовании ресурсной группы. |
|
||||
| quotas | (dict) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
|
||||
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. Является обязательным при изменении РГ если не заданы `rg_name` и `account_id`/`account_name` |
|
||||
| state | Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>Default: `present` | Целевое состояние ресурсной группы. |
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_rg
|
||||
|
||||
Модуль decort_rg возвращает информацию о ресурсной группе в виде словаря facts со следующими ключами:
|
||||
| Ключ | Тип данных | Описание |
|
||||
|------|------------|----------|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
|
||||
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| state | string | Текущее состояние ресурсной группы. |
|
||||
| quota | dict | Текущие квоты ресурсной группы. |
|
||||
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
|
||||
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
|
||||
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
|
||||
| ViNS | list | Список идентификаторов внутренних сетей ресурсной группы. |
|
||||
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
|
||||
|
||||
## Пример использования модуля decort_rg
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount, также задать квоты и выдать права на чтение пользователю MyUser.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "R"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "RCX"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
def_netType: "PRIVATE"
|
||||
def_netId: 99
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
rename: "NewRg"
|
||||
rg_id: 27
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
|
||||
|
||||
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
|
||||
|
||||
```
|
||||
<прочие детали опущены>
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
```
|
||||
120
wiki/5.4.0/модуль-decort_vins.md
Normal file
120
wiki/5.4.0/модуль-decort_vins.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Модуль decort_vins
|
||||
## Обзор модуля decort_vins
|
||||
|
||||
Модуль decort_vins предназначен для управления внутренними сетями (Virtual Network Segment, ViNS) и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- на уровне ресурсной группы (если РГ задана)
|
||||
- на уровне аккаунта (если РГ не задана)
|
||||
- удалять (безвозвратно)
|
||||
- восстанавливать из корзины
|
||||
- запрашивать информацию
|
||||
- включать/отключать
|
||||
- соединять (необходимы права администратора)
|
||||
- изменять:
|
||||
- включать/отключать SSH-доступ к виртуальному маршрутизатору (необходимы права администратора)
|
||||
- включать/отключать режим **Custom Config** для виртуального маршрутизатора (необходимы права администратора)
|
||||
- сохранять конфигурацию виртуального маршрутизатора для возможности последующего отката к ней (необходимы права администратора)
|
||||
|
||||
## Параметры модуля decort_vins
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_vins. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_vins`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная внутреняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта, которому принадлежит данная внутренняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|annotation | (string)| Текстовое описание внутренней сети. Данный аргумент является опциональным и учитывается только при создании внутренней сети, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данный внутренняя сеть. Данный параметр является обязательным.
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой должна быть подключена внутренняя сеть. Если задать значение `0`, то платформой будет выбрана внешняя сеть по умолчанию. |
|
||||
| ext_ip_addr | (string) | IP-адрес внешней сети, заданной через параметр `ext_net_id`. Если не задан, то IP-адрес для внешней сети будет выбран платформой автоматически.
|
||||
| ipcidr | (string) | Адрес сети для создаваемой внутренней сети. Если этот параметр не задан, то платформа назначит адрес автоматически. Обратите внимание, что внутренние сети, принадлежащие одному и тому же аккаунту, не могут иметь пересекающихся сетей.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу _Oauth2_, который должен использоваться в режиме `authenticator: oauth2`.<br/>Данный параметр является обязательным для указанного режима.<br/>Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
|
||||
| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
|
||||
| state | (string)<br>Значения:<br/>`present`<br/>`absent`<br/>`enabled`<br/>`disabled`<br/>Default: `present` | Целевое состояние внутренней сети. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Соответствующая внутренная сеть должна существовать. Таким образом, с помощью `vins_id` нельзя создать новую внутреннюю сеть, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
|
||||
| vins_name| (string) | Имя внутренней сети. Для идентификации внутренней сети требуется либо `vins_name` и информация об аккаунте/ресурсной группе, которой принадлежит сеть, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или аккаунта, на уровне которого существует данная внутренняя сеть.|
|
||||
| mgmtaddr | (list) | Список существующих IP-адресов виртуального маршрутизатора во внутренней сети, через которые необходимо разрешить SSH-доступ к виртуальному маршрутизатору.
|
||||
| custom_config | (bool)<br>Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
|
||||
| config_save | (bool)<br>Default: `false` | Выполнить сохранение текущей конфигурации виртуального маршрутизатора для возможности последующего отката к ней. |
|
||||
| connect_to | (list) | Список словарей, содержащих информацию о внутренних сетях, к которым необходимо подключить данную. См. примеры.
|
||||
|
||||
## Возвращаемые значения модуля decort_vins
|
||||
|
||||
Модуль decort_vins возвращает информацию о внутренней сети в виде словаря facts со следующими ключами:
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| --- | --- | --- |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит внутренняя сеть. |
|
||||
| custom_net_addr | (list) | Список IP-адресов пользовательских интерфейсов виртуального маршрутизатора
|
||||
| ext_ip_addr | (string) | IP-адрес интерфейса, которым виртуальный маршрутизатор подключён к внешней сети. |
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключена внутренняя сеть. `-1` означает, что внутренняя сеть не подключёна к внешней сети. |
|
||||
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данной внутренней сети. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор внутренней сети. |
|
||||
| name | (string) | Имя внутренней сети. |
|
||||
| int_net_addr | (string) | Адрес внутренней сети. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, которой принадлежит данная внутренняя сеть. Если данная внутренняя сеть создана на уровне аккаунта, то `rg_id=0`. |
|
||||
| ssh_ipaddr | (list) | Список IP-адресов виртуального маршрутизатора во внутренней сети, на которых включён SSH-доступ к нему.
|
||||
| ssh_password | (str) | Пароль для SSH-доступа к виртуальному маршрутизатору.
|
||||
| ssh_port | (int) | Номер порта для SSH-подключения к виртуальному маршрутизатору.
|
||||
| state | (string) | Состояние внутренней сети. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_vins
|
||||
|
||||
В данном примере создаётся внутренняя сеть с именем "MyVins01" (vins_name: "MyVins01").
|
||||
|
||||
Внутренняя сеть создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей аккаунту "MyMainAccount" (account_name: "MyMainAccount"). Внутренняя сеть будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
account_name: "MyMainAccount"
|
||||
rg_name: "MyRg01"
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
ext_net_id: 0
|
||||
vins_name: "MyVins01"
|
||||
register: my_vins
|
||||
```
|
||||
|
||||
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор внутренней сети для подключения к нему виртуального сервера.
|
||||
```
|
||||
- name: Manage virtual machine
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
|
||||
В данном примере идёт создание внутренней сети, а потом её привязка к внутренним сетям с id 864 и 196.
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "ViNS_connected_by_decort_vins_module"
|
||||
rg_id: 98
|
||||
connect_to:
|
||||
- id: 864
|
||||
ipaddr: 192.168.5.66
|
||||
netmask: 24
|
||||
- id: 196
|
||||
ipaddr: 192.168.9.133
|
||||
netmask: 24
|
||||
register: managed_vins
|
||||
|
||||
```
|
||||
|
||||
|
||||
22
wiki/5.5.0/Home.md
Normal file
22
wiki/5.5.0/Home.md
Normal file
@@ -0,0 +1,22 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
- [Авторизация](./введение.md#авторизация)
|
||||
- [Общие параметры модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации)
|
||||
- [Пример авторизации с помощью app_id и app_secret](./введение.md#пример-авторизации-с-помощью-app_id-и-app_secret)
|
||||
- [Пример авторизации с помощью JSON Web Token](./введение.md#пример-авторизации-с-помощью-json-web-token)
|
||||
1. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
|
||||
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
|
||||
- [Модуль decort_account_info](./модуль-decort_account_info.md) - получение информации об аккаунте
|
||||
- [Модуль decort_account](./модуль-decort_account.md) - управление аккаунтами
|
||||
182
wiki/5.5.0/введение.md
Normal file
182
wiki/5.5.0/введение.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 2.16.5 or higher
|
||||
- Python 3.10.12 or higher
|
||||
- PyJWT 1.7.1 Python module or higher
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- DECORT cloud platform version 4.0.0
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей. Для этого необходимо:
|
||||
- либо разместить директории **library** и **module_utils** в одной директории с плейбуками
|
||||
- либо в рабочей директории, из которой будет запускаться Ansible, разместить файл **ansible.cfg**, в котором задать пути к файлам модулей, например:
|
||||
```
|
||||
[defaults]
|
||||
library=./library
|
||||
module_utils=./module_utils
|
||||
```
|
||||
|
||||
## Авторизация
|
||||
|
||||
### Общие параметры модулей для авторизации
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Пример авторизации с помощью app_id и app_secret
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with app_id and app_secret
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
app_id: "{{ app_id }}"
|
||||
app_secret: "{{ app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "{{ controller_url }}"
|
||||
oauth2_url: "{{ oauth2_url }}"
|
||||
```
|
||||
|
||||
### Пример авторизации с помощью JSON Web Token
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with JWT
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ jwt }}"
|
||||
```
|
||||
951
wiki/5.5.0/модуль-decort_account.md
Normal file
951
wiki/5.5.0/модуль-decort_account.md
Normal file
@@ -0,0 +1,951 @@
|
||||
# Модуль decort_account
|
||||
## Обзор модуля
|
||||
|
||||
Модуль **decort_account** предназначен для выполнения следующих действий над аккаунтом:
|
||||
- **удалить в корзину** (см. [параметр state](#state) и [примеры](#в-корзину))
|
||||
- **удалить безвозвратно** (см. [параметр state](#state) и [примеры](#безвозвратно))
|
||||
- **восстановить из корзины** (см. [параметр state](#state) и [примеры](#восстановить-из-корзины))
|
||||
- **выключить/включить** (см. [параметр state](#state) и [примеры](#выключитьвключить))
|
||||
- **изменить права доступа** (см. [параметр acl](#acl) и [примеры](#изменить-права-доступа))
|
||||
- **изменить имя** (см. [параметр name](#name) и [примеры](#переименовать))
|
||||
- **изменить квоты** (см. [параметр quotas](#quotas) и [примеры](#изменить-квоты))
|
||||
- **выключить/включить отправку уведомлений о предоставлении доступа к ресурсам** (см. [параметр access_emails](#access_emails) и [примеры](#выключитьвключить-отправку-уведомлений-о-предоставлении-доступа-к-ресурсам))
|
||||
|
||||
## Параметры модуля
|
||||
Ниже приведен список параметров для модуля **decort_account** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="access_emails">
|
||||
access_emails
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
</td>
|
||||
<td>
|
||||
Выключение/включение отправки пользователям на эл. почту уведомлений о предоставлении доступа к ресурсам.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="acl">
|
||||
acl
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые права доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
mode
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>match</code>
|
||||
<br><code>revoke</code>
|
||||
<br><code>update</code>
|
||||
<br>Default: <code>update</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим изменения прав доступа для указанных пользователей.
|
||||
<br><code>match</code> - привести в соответствие для указанных
|
||||
пользователей, удалить предоставленные для других.
|
||||
<br><code>revoke</code> - отозвать для указанных пользователей,
|
||||
если предоставлены.
|
||||
<br><code>update</code> - привести в соответствие для указанных
|
||||
пользователей, оставить без изменения предоставленные для
|
||||
других.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
users
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих права доступа пользователей.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
rights
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>R</code>
|
||||
<br><code>RCX</code>
|
||||
<br><code>ARCXDU</code>
|
||||
<br>Default: <code>R</code>
|
||||
</td>
|
||||
<td>
|
||||
Права доступа.
|
||||
<br>При <code>mode: revoke</code> не используется.
|
||||
<br>При <code>mode: match</code> и <code>mode: update</code>
|
||||
права <code>ARCXDU</code> считаются соответствующими
|
||||
правам <code>CXDRAU</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор целевого аккаунта.
|
||||
<br>Обязательный параметр, если не задан параметр
|
||||
<code>name</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="name">
|
||||
name
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя целевого аккаунта.
|
||||
<br>Может быть альтернативой параметру <code>id</code>,
|
||||
за исключением случая, когда необходимо получить
|
||||
информацию о безвозвратно удалённом объекте.
|
||||
<br>Если задан совместно с параметром <code>id</code>,
|
||||
то используется для переименования (целевое имя).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="quotas">
|
||||
quotas
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые квоты.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
cpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
disks_size
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ext_traffic
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
public_ip
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ram
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="state">
|
||||
state
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>absent</code>
|
||||
<br><code>absent_permanently</code>
|
||||
<br><code>confirmed</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>present</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние.
|
||||
<br><code>absent</code> - удалён в корзину, безвозвратно удалён
|
||||
или не существует. Если существует и не удалён, то будет удалён
|
||||
в корзину.
|
||||
<br><code>absent_permanently</code> - безвозвратно удалён или
|
||||
не существует. Если существует и не удалён или удалён в корзину,
|
||||
то будет безвозвратно удалён.
|
||||
<br> При значениях <code>absent</code> и <code>absent_permanently</code>
|
||||
использование других параметров модуля, вызывающих изменение объекта,
|
||||
не допускается.
|
||||
<br><code>confirmed</code> - включён. Если выключен, то будет включён.
|
||||
Если удалён в корзину, то будет восстановлен из корзины.
|
||||
<br><code>disabled</code> - выключен. Если включён, то будет выключен.
|
||||
Если удалён в корзину, то будет восстановлен из корзины и выключен.
|
||||
<br><code>present</code> - существует и не удалён. Если удалён в
|
||||
корзину, то будет восстановлен из корзины.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения
|
||||
|
||||
Модуль **decort_account** возвращает информацию об аккаунте в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
acl
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих доступы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
canBeDeleted
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Может ли быть удалён.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
explicit
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Видимость аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
right
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Права.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
type
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Тип.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
userGroupId
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя или группы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
company
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
companyurl
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
URL компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computeFeatures
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список дополнительных возможностей гипервизора, доступных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computes_amount
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Количество ВМ по состоянию.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
started
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество запущенных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
stopped
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество остановленных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_parameter
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Режим выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_ratio
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Коэффициент для режима выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который создал.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который удалил.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
displayname
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Отображаемое имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
resourceLimits
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Квоты на ресурсы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_C
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_D
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём диска в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_DM
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_I
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_M
|
||||
</td>
|
||||
<td>
|
||||
float
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_NP
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu_units
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
sendAccessEmails
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Отправка пользователям на эл. почту уведомлений о предоставлении доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
uniqPools
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список доступных пулов СХД.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vins
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список идентификаторов внутренних сетей на уровне аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vinses_amount
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внутренних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Удалить
|
||||
|
||||
#### В корзину
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent
|
||||
```
|
||||
|
||||
#### Безвозвратно
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent_permanently
|
||||
```
|
||||
|
||||
### Восстановить из корзины
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Restore account from recycle bin
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: present
|
||||
```
|
||||
|
||||
### Выключить/включить
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: disabled
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: confirmed
|
||||
```
|
||||
|
||||
### Изменить права доступа
|
||||
|
||||
#### Отозвать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Revoke user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: revoke
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
- id: "{{ user2_id }}"
|
||||
```
|
||||
|
||||
#### Обновить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: update
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: R
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
#### Привести в соответствие
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Match user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: match
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: ARCXDU
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
### Переименовать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Rename account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
name: "{{ account_new_name }}"
|
||||
```
|
||||
|
||||
### Изменить квоты
|
||||
|
||||
#### На объём дисков
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of disks size
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
disks_size: 500
|
||||
```
|
||||
|
||||
#### На количество внешних IP-адресов
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of public IP amount
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
public_ip: 10
|
||||
```
|
||||
|
||||
### Выключить/включить отправку уведомлений о предоставлении доступа к ресурсам
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: false
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: true
|
||||
```
|
||||
3843
wiki/5.5.0/модуль-decort_account_info.md
Normal file
3843
wiki/5.5.0/модуль-decort_account_info.md
Normal file
File diff suppressed because it is too large
Load Diff
92
wiki/5.5.0/модуль-decort_bservice.md
Normal file
92
wiki/5.5.0/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service
|
||||
- Удалять Basic Service (безвозвратно).
|
||||
- Включать/выключать Basic Service
|
||||
- Запускать Basic Service
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная базовая служба. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`. <br> Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
|
||||
| started | (bool) <br> Default: `true` | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. |
|
||||
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
|
||||
| rg_name | (string) | Имя ресурсной группы базовой службы. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|
||||
|name | string | Имя базовой службы.|
|
||||
| techStatus | string | Технический статус базовой службы. |
|
||||
|state | string | Статус базовой службы.|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
|
||||
| groups | list | Список словарей с информацией о группах базовой службы.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт базовую службу с именем databases.
|
||||
|
||||
```
|
||||
- name: Create Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет базовую службу с названием databases.
|
||||
```
|
||||
- name: Delete Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
state: absent
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
177
wiki/5.5.0/модуль-decort_disk.md
Normal file
177
wiki/5.5.0/модуль-decort_disk.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисками и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- удалять (в корзину или безвозвратно)
|
||||
- восстановливать из корзины
|
||||
- изменять:
|
||||
- имя
|
||||
- размер
|
||||
- лимиты ввода/вывода
|
||||
- включать/отключать общий доступ
|
||||
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- Загрузочный диск для виртуальной машины создаётся и подключается автоматически в процессе создания этой машины.
|
||||
- Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- Подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным машинам выполняется с помощью модуля управления виртуальными машинами (см. модуль decort_kvmvm).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string)<br>Default: `Disk by decort_disk` | Текстовое описание диска. Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int)<br>Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: true`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах. |
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его `name` и информация об аккаунте (`account_id` или `account_name`), которому принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
|
||||
| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
|
||||
| reason | (string)<br>Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
|
||||
| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
|
||||
| shareable | (bool)<br>Default: `false` | Включение/отключение общего доступа к диску.
|
||||
| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние диска. |
|
||||
| type | (string)<br>Значения:<br>`B`<br>`D`<br>Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
|
||||
| verify_ssl | (bool)<br/>Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.|
|
||||
| attached_to | int | Идентификатор виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то `attached_to: 0`|
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
| id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничения ввода/вывода диска. |
|
||||
| name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
| pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.|
|
||||
| size | int | Размер диска в ГБ.|
|
||||
| state | string | Текущий статус диска. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (`size: 50`), с ограничением ввода/вывода в 2000 iops, на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
annotation: "Disk example"
|
||||
pool: data01
|
||||
register: my_data_disk01
|
||||
```
|
||||
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 10000
|
||||
write_bytes_sec: 5000
|
||||
read_iops_sec и write_iops_sec
|
||||
read_iops_sec: 2500
|
||||
write_iops_sec: 1000
|
||||
read_bytes_sec_max: 11000
|
||||
write_bytes_sec_max: 6000
|
||||
read_iops_sec_max: 3000
|
||||
write_iops_sec_max: 1500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
total_bytes_sec: 15000
|
||||
total_iops_sec: 3500
|
||||
total_bytes_sec_max: 17000
|
||||
total_iops_sec_max: 4500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: Manage compute
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
105
wiki/5.5.0/модуль-decort_group.md
Normal file
105
wiki/5.5.0/модуль-decort_group.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- запустить/остановить
|
||||
- подключить/отключить сети (для существующей группы только внутренние сети)
|
||||
- изменить
|
||||
- имя
|
||||
- объём загрузочного диска
|
||||
- количество ВМ
|
||||
- роль
|
||||
- количество виртуальных процессоров
|
||||
- объём ОЗУ
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля **decort_group**.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. При идентификации диска по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта. При идентификации диска по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Обьём загрузочного диска. |
|
||||
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| count | (int) | Количество виртуальных машин. Обязательный параметр. |
|
||||
| cpu | (int) | Количество виртуальных процессоров. |
|
||||
| driver | (string)<br>Default: `KVM_X86` | Драйвер. |
|
||||
| id | (int) | Идентификатор группы. |
|
||||
| image_id | (int) | Идентификатор образа. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| name | (str) | Имя группы. Обязательный параметр.
|
||||
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| ram | (int) | Объём оперативной памяти. |
|
||||
| role | (string) | Тег роли. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
|
||||
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>• `id` (int) - идентификатор ВМ<br>• `ipAddresses` (list) - список IP-адресов ВМ<br>• `name` (str) - имя ВМ<br>• `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
|
||||
| id | int | Идентификатор группы.|
|
||||
| name | string | Имя группы.|
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Состояние группы. |
|
||||
| techStatus | string | Технический статус группы. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу с именем `test_group`.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Create BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
boot_disk: 10
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
count: 2
|
||||
cpu: 2
|
||||
image_id: 518
|
||||
name: test_group
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 2
|
||||
verify_ssl: false
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу с именем `test_group`.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Delete BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: test_group
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
state: absent
|
||||
verify_ssl: False
|
||||
register: group_test
|
||||
```
|
||||
53
wiki/5.5.0/модуль-decort_jwt.md
Normal file
53
wiki/5.5.0/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_jwt**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| validity | (int)<br>Default: `3600` | Срок действия JWT в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль **decort_jwt** возвращает JWT-токен, который доступен по ключу `jwt` (str).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала запрашивается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуальной машины в режиме авторизации `jwt` (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: Create VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании новой ВМ (в предположении, что результат выполнения task для модуля **decort_jwt** был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
108
wiki/5.5.0/модуль-decort_k8s.md
Normal file
108
wiki/5.5.0/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Модуль decort_k8s
|
||||
## Обзор модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить
|
||||
- изменить группы Worker-узлов
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_k8s
|
||||
Ниже приведен полный список параметров для модуля **decort_k8s**:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. |
|
||||
| account_name | (string) | Имя аккаунта. |
|
||||
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| description | (string)<br>Default: `Created by decort ansible module` | Описание кластера. |
|
||||
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
|
||||
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
|
||||
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
|
||||
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
|
||||
| id | (int) | Идентификатор кластера Kubernetes. |
|
||||
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
|
||||
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. Обязательный параметр. |
|
||||
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
|
||||
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
|
||||
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
|
||||
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
|
||||
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
|
||||
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
|
||||
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
|
||||
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
|
||||
| name | (string) | Имя кластера Kubernetes. |
|
||||
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
|
||||
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
|
||||
| rg_id | (int) | Идентификатор ресурсной группы. |
|
||||
| rg_name | (str) | Имя ресурсной группы. |
|
||||
| started | (bool)<br>Default: `true` | Автоматический запуск кластера после его создания. |
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
|
||||
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
|
||||
| workers | (list) | Обязательный параметр. Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`<br>• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init<br>• `cpu` (int) (обязательный) - количество виртуальных процессоров на узле<br>• `disk` (int) (обязательный) - объём загрузочного диска на узле<br>• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`<br>• `name` (string) (обязательный) - имя группы Worker-узлов<br>• `num` (int) (обязательный) - количество узлов<br>• `pool` (str) (обязательный) - пул СХД, заданной ключом `sep_id`<br>• `ram` (int) (обязательный) - объём оперативной памяти на узле<br>• `sep_id` (int) (обязательный) - идентификатор СХД; если задать `null`, то используется СХД образа узла<br>• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| config | str | Kuber config кластера.
|
||||
| id | int | Идентификатор кластера. |
|
||||
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти
|
||||
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `labels` (list) - список строк с labels<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти<br>• `taints` (list) - список строк с taints
|
||||
| name | string | Имя кластера. |
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Статус кластера. |
|
||||
| techStatus | string | Технический статус кластера. |
|
||||
| vins_id | int | Идентификатор внутренней сети кластера. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_k8s
|
||||
|
||||
|
||||
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
|
||||
```
|
||||
- name: Create a k8s cluster named cluster-test
|
||||
decort_k8s:
|
||||
authenticator: jwt
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
getConfig: true
|
||||
jwt: "{{ token.jwt }}"
|
||||
k8ci_id: 18
|
||||
name: cluster-test
|
||||
rg_id: 125
|
||||
workers:
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg1
|
||||
num: 1
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg2
|
||||
num: 2
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
register: k8s_cluster
|
||||
```
|
||||
106
wiki/5.5.0/модуль-decort_kvmvm.md
Normal file
106
wiki/5.5.0/модуль-decort_kvmvm.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Модуль decort_kvmvm
|
||||
## Обзор модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** предназначен для выполнения следующих действий над виртуальными машинами:
|
||||
- создать
|
||||
- получить информацию
|
||||
- остановить/приостановить/запустить
|
||||
- подключить/отключить диски с данными
|
||||
- подключить/отключить сети
|
||||
- изменить
|
||||
- объём загрузочного диска в большую сторону
|
||||
- количество CPU
|
||||
- объём ОЗУ
|
||||
- тэги
|
||||
- affinity метку
|
||||
- affinity правила
|
||||
- anti-affinity правила
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_kvmvm
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_kvmvm**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_kvmvm`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| aaff_rule | (list) | Список словарей, описывающих anti-affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| account_id | (int) | Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_name` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется. |
|
||||
| aff_rule | (list) | Список словарей, описывающих affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| affinity_label | (str) | Метка affinity.
|
||||
| annotation | (string) | Опциональное описание виртуальной машины. Этот параметр используется только при создании.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DCORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| arch | (str)<br>Значения:<br/>`X86_64`<br>`PPC64_LE`<br>Default: `X86_64` | Архитектура виртуальной машины. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Объём загрузочного диска виртуальной машины в ГБ. |
|
||||
| ci_user_data | (dict) | конфигурация для cloud-init
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данная виртуальная машина. Данный параметр является обязательным. |
|
||||
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
|
||||
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данной виртуальной машине как дополнительные. |
|
||||
| id | (int) | Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива – по комбинации `name`, `rg_name` и `account_name`). Если при вызове модуля **decort_kvmvm** существующая ВМ идентифицируется по `id`, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются. |
|
||||
| image_id | (int) | Уникальный цифровой идентификатор образа, на базе которого следует создать виртуальную машину. При создании задать этот параметр или параметр `image_name`. При любых других операциях данные параметры игнорируются. Если заданы оба этих параметра (`image_id` и `image_name`), то `image_name` игнорируется. |
|
||||
| image_name | (string) | Название образа, на базе которого следует создать ВМ. При создании требуется задать этот параметр или параметр `image_id`. При любых других операциях данные параметры игнорируются. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_JWT`.
|
||||
| name | (string) | Имя ВМ. Чтобы модуль **decort_kvmvm** мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или `rg_id`. Если для существующей ВМ указаны и `name`, и `id`, то параметр `name` игнорируется и идентификация сервера выполняется по `id`.|
|
||||
| networks | (list) | Список словарей, описывающих сети для подключения к ВМ.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети<br>• `ip_addr` (string) (необязательный) - IP-адрес, используемый для подключения к данной сети. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| pool | (str) | Пул СХД, заданной параметром `sep_id`. Если пул не задан, то он будет выбран платформой.
|
||||
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
|
||||
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
|
||||
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
|
||||
| sep_id | (int) | Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
|
||||
| ssh_key | (string) | Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях. |
|
||||
| ssh_key_user | (string) | Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`. Используется только при создании и игнорируется при других операциях. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`poweredon`<br>`poweredoff`<br>`halted`<br>`paused`<br>`check`<br>Default: `present` | Целевое состояние ВМ.<br> Значение `halted` - синоним к `poweredoff`. Значения `present` и `poweredon` равнозначны. <br>Значение `check` вызывает модуль в _read-only_ режиме и считывает характеристики существующей ВМ. |
|
||||
| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** возвращает информацию о виртуальной машине в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| arch | string | Архитектура ВМ. |
|
||||
| cpu | int | Количество виртуальных процессоров. |
|
||||
| data_disks | list | Список идентификаторов дисков с данными, подключенных к ВМ. |
|
||||
| disk_size | int | Размер загрузочного диска в ГБ. |
|
||||
| id | int | Идентификатор ВМ. |
|
||||
| image_id | id | Идентификатор образа.
|
||||
| name | string | Имя ВМ. |
|
||||
| password | string | Пароль пользователя ОС по умолчанию. |
|
||||
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
|
||||
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
|
||||
| ram | int | Объём ОЗУ ВМ в МБ. |
|
||||
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
|
||||
| state | string | Состояние ВМ.|
|
||||
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
|
||||
| tech_status | str | Технический статус ВМ.
|
||||
| username | string | Имя пользователя ОС по умолчанию. |
|
||||
|
||||
## Пример использования модуля decort_kvmvm
|
||||
|
||||
В данном примере создается ВМ с именем MyFirstVM.
|
||||
```
|
||||
- name: Сreate VM
|
||||
decort_kvmvm:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
cpu: 2
|
||||
image_id: "{{ my_img.facts.id }}"
|
||||
name: MyFirstVM
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 4096
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
register: my_vm
|
||||
```
|
||||
893
wiki/5.5.0/модуль-decort_lb.md
Normal file
893
wiki/5.5.0/модуль-decort_lb.md
Normal file
@@ -0,0 +1,893 @@
|
||||
# Модуль decort_lb
|
||||
## Обзор модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить/перезапустить
|
||||
- изменить конфигурации backend и frontend
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_lb
|
||||
Ниже приведен полный список параметров для модуля **decort_lb**:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="3">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя аккаунта.
|
||||
<br> Может быть альтернативой параметру <code>account_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
annotation
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Default: <code>Managed by Ansible module decort_lb</code>
|
||||
</td>
|
||||
<td>
|
||||
Описание балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>leastconn</code>
|
||||
<br><code>roundrobin</code>
|
||||
<br><code>static-rr</code>
|
||||
<br>Default: <code>roundrobin</code>
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
<a name="backend_default_settings">
|
||||
default_settings
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
downinter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>1000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается недоступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
fall
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество последовательных неудачных проверок доступности, после
|
||||
которых сервер, ранее считавшийся доступным, начинает считаться
|
||||
недоступным и временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
inter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>5000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается доступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxconn
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>250</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит одновременных подключений к серверу. При достижении этого лимита
|
||||
сервер временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxqueue
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>256</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит соединений, ожидающих в очереди. Когда этот предел будет
|
||||
достигнут, все последующие подключения будут перенаправлены
|
||||
на другие серверы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
rise
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество проверок, которые должен пройти сервер, считавшийся
|
||||
недоступным, чтобы начать считаться доступным и снова быть
|
||||
включенным в схему балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
slowstart
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>60000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах с момента когда сервер начинает считаться
|
||||
доступным, по истечении которого количество фактически разрешенных
|
||||
подключений к этому серверу будет возвращено до 100% от
|
||||
установленного лимита.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
weight
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>100</code>
|
||||
</td>
|
||||
<td>
|
||||
Вес сервера для использования в алгоритмах балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ext_net_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внешней сети.
|
||||
<br>Может быть не задан, если задан <code>vins_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<a name="frontends">
|
||||
frontends
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backend
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название используемого backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
bindings
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации binding.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
<br>Если не задан, то будет использоваться основной IP-адрес
|
||||
балансировщика во внешней сети или, если подключена только
|
||||
внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ha_lb
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Использовать схему высокой доступности для создаваемого балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика нагрузки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
permanently
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Если выполняется удаление, то выполнить безвозвратное удаление
|
||||
(минуя корзину).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя ресурсной группы.
|
||||
<br> В комбинации с заданным аккаунтов может быть альтернативой
|
||||
параметру <code>rg_id</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих параметры backend-сервера для разных
|
||||
конфигураций backend.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br>Default: <code>enabled</code>
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
server_settings
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Словарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>present</code>
|
||||
<br><code>absent</code>
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>restart</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние балансировщика нагрузки.
|
||||
<br>Выполнение с <code>state=restart</code> позволяет выполнить
|
||||
перезапуск балансировщика, соответственно, всегда возвращает
|
||||
<code>changed: true</code>.
|
||||
<br>Значения <code>present</code> и <code>enabled</code> равнозначны
|
||||
и соответствуют включённому и запущенному балансировщику.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внутренней сети.
|
||||
<br>Может быть не задан, если задан <code>ext_net_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внешней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя внутренней сети.
|
||||
<br> В комбинации с заданной РГ может быть альтернативой для
|
||||
параметра <code>vins_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
serverDefaultSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Порт.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
serverSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
frontends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
<br> Ключи данного словаря аналогичны ключам словарей списка
|
||||
<a href=#frontends>
|
||||
frontends
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
gid
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор физического кластера (Grid ID).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
132
wiki/5.5.0/модуль-decort_osimage.md
Normal file
132
wiki/5.5.0/модуль-decort_osimage.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Модуль decort_osimage
|
||||
## Обзор модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
|
||||
- шаблонные образы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить имя
|
||||
- удалить
|
||||
- виртуальные образы
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить
|
||||
- имя
|
||||
- целевой образ
|
||||
|
||||
## Параметры модуля decort_osimage
|
||||
Ниже приведен полный список параметров для модуля decort_osimage.
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_Id | (int) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
|
||||
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| architecture | (string)<br>Default: `X86_64` | Архитектура микропроцессора, для которой предназначен образ. Используется при создании образа.|
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boottype | (string)<br>Default: `uefi` | Тип загрузки образа. Используется при создании образа.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) образ. Данный параметр является обязательным. |
|
||||
| drivers | (string)<br>Default: `KVM_X86` | Тип виртуальных машин, подходящих для образа. Используется при создании образа.|
|
||||
| hotresize | (bool)<br>Default: `false` | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы. |
|
||||
| image_id | (int) | Идентификатор шаблонного образа.
|
||||
| image_name | (str) | Имя шаблонного образа.
|
||||
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
|
||||
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
|
||||
| imagetype | (string)<br>Default: `linux` | Тип образа. Используется при создании образа.|
|
||||
| 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`. |
|
||||
| passwordDL | (string) | Пароль для скачивания по URL-адресу. Используется при создании образа. |
|
||||
| pool | (str) | Имя пула СХД. Используется для поиска существующего образа.
|
||||
| poolName | (string) | Имя пула СХД. Используется при создании образа. |
|
||||
| sepId | (integer) | Уникальный целочисленный идентификатор СХД. Используется при создании образа. |
|
||||
| sep_id | (int) | Идентификатор СХД. Используется для поиска существующего образа.
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
|
||||
| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
|
||||
| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа.|
|
||||
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последствии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage возвращает информацию об образе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| accountId | int | Идентификатор аккаунта.
|
||||
| id | int | Уникальный целочисленный идентификатор данного образа. |
|
||||
| linkto | int | Уникальный целочисленный идентификатор образа, который привязан к данному виртуальному. |
|
||||
| name | string | Имя образа. |
|
||||
| pool | string | Имя пула на системе хранения данных, в котором находится данный образ.|
|
||||
| sep_id | int | Идентификатор системы хранения данных, на которой хранится данный образ. |
|
||||
| size | int | Размер образа в ГБ. |
|
||||
| state | string | Текущий статус образа. |
|
||||
| type | string | Тип образа. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_osimage
|
||||
|
||||
|
||||
Пример создания шаблонного образа с операционной системой Alpine Linux.
|
||||
```
|
||||
- name: Create template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
url: https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.1-x86_64-uefi-cloudinit-r0.qcow2
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример получения информации о существующем шаблонном образе по его имени.
|
||||
|
||||
```
|
||||
- name: Get template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой шаблонный образ, он привяжет к себе указанный в примере шаблонный образ.
|
||||
|
||||
```
|
||||
- name: Create virtual image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
virt_name: alpine_last
|
||||
register: osimage
|
||||
```
|
||||
Обратите внимание, что в данном примере можно использовать как `image_name`, так и `image_id`. Также можно использовать либо `virt_name`, либо `virt_id`.
|
||||
|
||||
Пример переименования образа.
|
||||
|
||||
```
|
||||
- name: Rename template image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1_new_name
|
||||
image_id: 54321
|
||||
register: osimage
|
||||
```
|
||||
|
||||
76
wiki/5.5.0/модуль-decort_pfw.md
Normal file
76
wiki/5.5.0/модуль-decort_pfw.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Модуль decort_pfw
|
||||
## Обзор модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** предназначен для настройки правил переадресации портов (port forwarding, destination NAT) на виртуальном маршрутизаторе заданной внутренней сети для заданной виртуальной машины.
|
||||
Модуль поддерживает выполнение следующих действий над правилами:
|
||||
- добавить
|
||||
- получить информацию
|
||||
- удалить
|
||||
|
||||
## Параметры модуля decort_pfw
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_pfw**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_pfw`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| compute_id | (int) | Идентификатор виртуальной машины. IP-адрес, который данная ВМ имеет во внутренней сети, заданной параметром `vins_id`, будет использоваться как внутренний IP-адрес в правилах. Обязательный параметр. |
|
||||
| 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`. |
|
||||
| rules | (list) | Список словарей, описывающих правила переадресации портов для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`).<br>Ключи словаря:<br>• `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`<br>• `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`<br>• `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;<br>• `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
|
||||
| state | (str)<br>Значения:<br/>`present`<br/>`absent`<br>Default: `present` | Целевое состояние правил.<br>Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| compute_id | int | Идентификатор ВМ. |
|
||||
| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
|
||||
| rules | list | Список словарей, описывающих правила переадресации портов.<br>Ключи словаря:<br>• `id` (int) - идентификатор правила<br>• `localIp` (str) - IP-адрес ВМ<br>• `localPort` (int) - внутренний порт<br>• `protocol` (str) - протокол<br>• `publicPortEnd` (int) - верхняя граница диапазона внешних портов<br>• `publicPortStart` (int) - нижняя граница диапазона внешних портов<br>• `vmId` (int) - идентификатор ВМ<br>• `vmName` (str) - имя ВМ |
|
||||
| state | string | Статус правил. Значения: `PRESENT` или `ABSENT`. |
|
||||
| vins_id | int | Идентификатор внутренней сети. |
|
||||
|
||||
## Пример использования модуля decort_pfw
|
||||
|
||||
В данном примере для существующей ВМ (параметр `compute_id`), подключённой к внутренней сети (параметр `vins_id`), настраиваются два правила переадресации портов:
|
||||
|
||||
- Правило для одного порта: внешний порт `30022` на внутренний порт `22` по протоколу `tcp`.
|
||||
- Правило для диапазона портов: внешние порты с `30080` по `30085` на внутренние порты с `30080` по протоколу `udp`.
|
||||
|
||||
```
|
||||
- name: Add port forwarding rules
|
||||
decort_pfw:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
compute_id: "{{ my_vm.facts.id }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
rules:
|
||||
- local_port: 22
|
||||
proto: tcp
|
||||
public_port_start: 30022
|
||||
- local_port: 30080
|
||||
proto: udp
|
||||
public_port_end: 30085
|
||||
public_port_start: 30080
|
||||
vins_id: "{{ my_vins.facts.id }}"
|
||||
register: my_pfw_rules
|
||||
```
|
||||
|
||||
В данном примере результат выполнения модуля **decort_pfw** записывается в переменную `my_pfw_rules`. Для доступа к списку правил используйте следующую конструкцию:
|
||||
|
||||
```
|
||||
"{{ my_pfw_rules.facts.rules }}"
|
||||
```
|
||||
200
wiki/5.5.0/модуль-decort_rg.md
Normal file
200
wiki/5.5.0/модуль-decort_rg.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# Модуль decort_rg
|
||||
|
||||
## Обзор модуля decort_rg
|
||||
|
||||
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
|
||||
|
||||
- создавать ресурсные группы
|
||||
- удалять ресурсные группы (в корзину или безвозвратно)
|
||||
- восстанавливать ресурсные группы из корзины
|
||||
- включать/отключать ресурсные группы
|
||||
- запрашивать информацию об уже существующих ресурсных группах
|
||||
- изменять ресурсные группы:
|
||||
- переименовывать
|
||||
- настраивать квоты
|
||||
- задавать стандартную сеть
|
||||
- настраивать права доступа для пользователей
|
||||
|
||||
## Параметры модуля decort_rg
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_rg. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_rg`
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
|----------|--------------------------|----------|
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| access | (dict) | Параметр, позволяющий выдать, забрать или изменить права у пользователя в ресурсной группе. |
|
||||
| annotation | (string) | Текстовое описание ресурсной группы. Данный параметр является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br>`oauth2`<br>`jwt`| Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная ресурсная группа. Данный параметр является обязательным. |
|
||||
| def_netType | (string) <br>Значения:<br>`PRIVATE`<br>`PUBLIC`<br>`NONE`<br>Default: `PRIVATE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также при изменении. |
|
||||
| def_netId | (int) | Уникальный целочисленный идентификатор внутренней или внешней сети. Используется для изменения сети по умолчанию в ресурсной группе. |
|
||||
| extNetId | (int) | Уникальный целочисленный идентификатор внешней сети. Используется при создании РГ для подключения внешней сети к внутренней сети, которая будет создана и задана как сеть по умолчанию для РГ. |
|
||||
| extNetIp | (string) | IP-адрес для внешней сети, которая задана в параметре `extNetId`. |
|
||||
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
|
||||
| ipcidr | (string) | IP-адрес внутренней сети. Используется при создании ресурсной группы, чтобы задать IP-адрес сети для создаваемой внутренней сети, которая создастся вместе с ресурсной группой. Используется при параметре `def_netType` в значении `PRIVATE`. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br>Данный параметр является обязательным для указанного режима.<br>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| rename | (string) | Новое имя ресурсной группы. Используется при переименовании ресурсной группы. |
|
||||
| quotas | (dict) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
|
||||
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. Является обязательным при изменении РГ если не заданы `rg_name` и `account_id`/`account_name` |
|
||||
| state | Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>Default: `present` | Целевое состояние ресурсной группы. |
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_rg
|
||||
|
||||
Модуль decort_rg возвращает информацию о ресурсной группе в виде словаря facts со следующими ключами:
|
||||
| Ключ | Тип данных | Описание |
|
||||
|------|------------|----------|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
|
||||
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| state | string | Текущее состояние ресурсной группы. |
|
||||
| quota | dict | Текущие квоты ресурсной группы. |
|
||||
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
|
||||
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
|
||||
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
|
||||
| ViNS | list | Список идентификаторов внутренних сетей ресурсной группы. |
|
||||
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
|
||||
|
||||
## Пример использования модуля decort_rg
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount, также задать квоты и выдать права на чтение пользователю MyUser.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "R"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "RCX"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
def_netType: "PRIVATE"
|
||||
def_netId: 99
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
rename: "NewRg"
|
||||
rg_id: 27
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
|
||||
|
||||
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
|
||||
|
||||
```
|
||||
<прочие детали опущены>
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
```
|
||||
120
wiki/5.5.0/модуль-decort_vins.md
Normal file
120
wiki/5.5.0/модуль-decort_vins.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Модуль decort_vins
|
||||
## Обзор модуля decort_vins
|
||||
|
||||
Модуль decort_vins предназначен для управления внутренними сетями (Virtual Network Segment, ViNS) и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- на уровне ресурсной группы (если РГ задана)
|
||||
- на уровне аккаунта (если РГ не задана)
|
||||
- удалять (безвозвратно)
|
||||
- восстанавливать из корзины
|
||||
- запрашивать информацию
|
||||
- включать/отключать
|
||||
- соединять (необходимы права администратора)
|
||||
- изменять:
|
||||
- включать/отключать SSH-доступ к виртуальному маршрутизатору (необходимы права администратора)
|
||||
- включать/отключать режим **Custom Config** для виртуального маршрутизатора (необходимы права администратора)
|
||||
- сохранять конфигурацию виртуального маршрутизатора для возможности последующего отката к ней (необходимы права администратора)
|
||||
|
||||
## Параметры модуля decort_vins
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_vins. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_vins`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная внутреняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта, которому принадлежит данная внутренняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|annotation | (string)| Текстовое описание внутренней сети. Данный аргумент является опциональным и учитывается только при создании внутренней сети, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данный внутренняя сеть. Данный параметр является обязательным.
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой должна быть подключена внутренняя сеть. Если задать значение `0`, то платформой будет выбрана внешняя сеть по умолчанию. |
|
||||
| ext_ip_addr | (string) | IP-адрес внешней сети, заданной через параметр `ext_net_id`. Если не задан, то IP-адрес для внешней сети будет выбран платформой автоматически.
|
||||
| ipcidr | (string) | Адрес сети для создаваемой внутренней сети. Если этот параметр не задан, то платформа назначит адрес автоматически. Обратите внимание, что внутренние сети, принадлежащие одному и тому же аккаунту, не могут иметь пересекающихся сетей.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу _Oauth2_, который должен использоваться в режиме `authenticator: oauth2`.<br/>Данный параметр является обязательным для указанного режима.<br/>Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
|
||||
| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
|
||||
| state | (string)<br>Значения:<br/>`present`<br/>`absent`<br/>`enabled`<br/>`disabled`<br/>Default: `present` | Целевое состояние внутренней сети. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Соответствующая внутренная сеть должна существовать. Таким образом, с помощью `vins_id` нельзя создать новую внутреннюю сеть, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
|
||||
| vins_name| (string) | Имя внутренней сети. Для идентификации внутренней сети требуется либо `vins_name` и информация об аккаунте/ресурсной группе, которой принадлежит сеть, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или аккаунта, на уровне которого существует данная внутренняя сеть.|
|
||||
| mgmtaddr | (list) | Список существующих IP-адресов виртуального маршрутизатора во внутренней сети, через которые необходимо разрешить SSH-доступ к виртуальному маршрутизатору.
|
||||
| custom_config | (bool)<br>Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
|
||||
| config_save | (bool)<br>Default: `false` | Выполнить сохранение текущей конфигурации виртуального маршрутизатора для возможности последующего отката к ней. |
|
||||
| connect_to | (list) | Список словарей, содержащих информацию о внутренних сетях, к которым необходимо подключить данную. См. примеры.
|
||||
|
||||
## Возвращаемые значения модуля decort_vins
|
||||
|
||||
Модуль decort_vins возвращает информацию о внутренней сети в виде словаря facts со следующими ключами:
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| --- | --- | --- |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит внутренняя сеть. |
|
||||
| custom_net_addr | (list) | Список IP-адресов пользовательских интерфейсов виртуального маршрутизатора
|
||||
| ext_ip_addr | (string) | IP-адрес интерфейса, которым виртуальный маршрутизатор подключён к внешней сети. |
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключена внутренняя сеть. `-1` означает, что внутренняя сеть не подключёна к внешней сети. |
|
||||
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данной внутренней сети. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор внутренней сети. |
|
||||
| name | (string) | Имя внутренней сети. |
|
||||
| int_net_addr | (string) | Адрес внутренней сети. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, которой принадлежит данная внутренняя сеть. Если данная внутренняя сеть создана на уровне аккаунта, то `rg_id=0`. |
|
||||
| ssh_ipaddr | (list) | Список IP-адресов виртуального маршрутизатора во внутренней сети, на которых включён SSH-доступ к нему.
|
||||
| ssh_password | (str) | Пароль для SSH-доступа к виртуальному маршрутизатору.
|
||||
| ssh_port | (int) | Номер порта для SSH-подключения к виртуальному маршрутизатору.
|
||||
| state | (string) | Состояние внутренней сети. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_vins
|
||||
|
||||
В данном примере создаётся внутренняя сеть с именем "MyVins01" (vins_name: "MyVins01").
|
||||
|
||||
Внутренняя сеть создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей аккаунту "MyMainAccount" (account_name: "MyMainAccount"). Внутренняя сеть будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
account_name: "MyMainAccount"
|
||||
rg_name: "MyRg01"
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
ext_net_id: 0
|
||||
vins_name: "MyVins01"
|
||||
register: my_vins
|
||||
```
|
||||
|
||||
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор внутренней сети для подключения к нему виртуального сервера.
|
||||
```
|
||||
- name: Manage virtual machine
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
|
||||
В данном примере идёт создание внутренней сети, а потом её привязка к внутренним сетям с id 864 и 196.
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "ViNS_connected_by_decort_vins_module"
|
||||
rg_id: 98
|
||||
connect_to:
|
||||
- id: 864
|
||||
ipaddr: 192.168.5.66
|
||||
netmask: 24
|
||||
- id: 196
|
||||
ipaddr: 192.168.9.133
|
||||
netmask: 24
|
||||
register: managed_vins
|
||||
|
||||
```
|
||||
|
||||
|
||||
23
wiki/5.6.0/Home.md
Normal file
23
wiki/5.6.0/Home.md
Normal file
@@ -0,0 +1,23 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
- [Авторизация](./введение.md#авторизация)
|
||||
- [Общие параметры модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации)
|
||||
- [Пример авторизации с помощью app_id и app_secret](./введение.md#пример-авторизации-с-помощью-app_id-и-app_secret)
|
||||
- [Пример авторизации с помощью JSON Web Token](./введение.md#пример-авторизации-с-помощью-json-web-token)
|
||||
1. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
|
||||
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
|
||||
- [Модуль decort_account_info](./модуль-decort_account_info.md) - получение информации об аккаунте
|
||||
- [Модуль decort_account](./модуль-decort_account.md) - управление аккаунтами
|
||||
- [Модуль decort_user_info](./модуль-decort_user_info.md) - получение информации о пользователе
|
||||
182
wiki/5.6.0/введение.md
Normal file
182
wiki/5.6.0/введение.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 2.16.5 or higher
|
||||
- Python 3.10.12 or higher
|
||||
- PyJWT 1.7.1 Python module or higher
|
||||
- requests Python module
|
||||
- netaddr Python module
|
||||
- DECORT cloud platform version 4.0.0
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей. Для этого необходимо:
|
||||
- либо разместить директории **library** и **module_utils** в одной директории с плейбуками
|
||||
- либо в рабочей директории, из которой будет запускаться Ansible, разместить файл **ansible.cfg**, в котором задать пути к файлам модулей, например:
|
||||
```
|
||||
[defaults]
|
||||
library=./library
|
||||
module_utils=./module_utils
|
||||
```
|
||||
|
||||
## Авторизация
|
||||
|
||||
### Общие параметры модулей для авторизации
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Пример авторизации с помощью app_id и app_secret
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with app_id and app_secret
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
app_id: "{{ app_id }}"
|
||||
app_secret: "{{ app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "{{ controller_url }}"
|
||||
oauth2_url: "{{ oauth2_url }}"
|
||||
```
|
||||
|
||||
### Пример авторизации с помощью JSON Web Token
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with JWT
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ jwt }}"
|
||||
```
|
||||
939
wiki/5.6.0/модуль-decort_account.md
Normal file
939
wiki/5.6.0/модуль-decort_account.md
Normal file
@@ -0,0 +1,939 @@
|
||||
# Модуль decort_account
|
||||
## Обзор модуля
|
||||
|
||||
Модуль **decort_account** предназначен для выполнения следующих действий над аккаунтом:
|
||||
- **удалить в корзину** (см. [параметр state](#state) и [примеры](#в-корзину))
|
||||
- **удалить безвозвратно** (см. [параметр state](#state) и [примеры](#безвозвратно))
|
||||
- **восстановить из корзины** (см. [параметр state](#state) и [примеры](#восстановить-из-корзины))
|
||||
- **выключить/включить** (см. [параметр state](#state) и [примеры](#выключитьвключить))
|
||||
- **изменить права доступа** (см. [параметр acl](#acl) и [примеры](#изменить-права-доступа))
|
||||
- **изменить имя** (см. [параметр name](#name) и [примеры](#переименовать))
|
||||
- **изменить квоты** (см. [параметр quotas](#quotas) и [примеры](#изменить-квоты))
|
||||
- **выключить/включить отправку уведомлений о предоставлении доступа к ресурсам** (см. [параметр access_emails](#access_emails) и [примеры](#выключитьвключить-отправку-уведомлений-о-предоставлении-доступа-к-ресурсам))
|
||||
|
||||
## Параметры модуля
|
||||
Ниже приведен список параметров для модуля **decort_account** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="access_emails">
|
||||
access_emails
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
</td>
|
||||
<td>
|
||||
Выключение/включение отправки пользователям на эл. почту уведомлений о предоставлении доступа к ресурсам.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="acl">
|
||||
acl
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые права доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
mode
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>match</code>
|
||||
<br><code>revoke</code>
|
||||
<br><code>update</code>
|
||||
<br>Default: <code>update</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим изменения прав доступа для указанных пользователей.
|
||||
<br><code>match</code> - привести в соответствие для указанных
|
||||
пользователей, удалить предоставленные для других.
|
||||
<br><code>revoke</code> - отозвать для указанных пользователей,
|
||||
если предоставлены.
|
||||
<br><code>update</code> - привести в соответствие для указанных
|
||||
пользователей, оставить без изменения предоставленные для
|
||||
других.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
users
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих права доступа пользователей.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
rights
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>R</code>
|
||||
<br><code>RCX</code>
|
||||
<br><code>ARCXDU</code>
|
||||
<br>Default: <code>R</code>
|
||||
</td>
|
||||
<td>
|
||||
Права доступа.
|
||||
<br>При <code>mode: revoke</code> не используется.
|
||||
<br>При <code>mode: match</code> и <code>mode: update</code>
|
||||
права <code>ARCXDU</code> считаются соответствующими
|
||||
правам <code>CXDRAU</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор целевого аккаунта.
|
||||
<br>Обязательный параметр, если не задан параметр
|
||||
<code>name</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="name">
|
||||
name
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя целевого аккаунта.
|
||||
<br>Может быть альтернативой параметру <code>id</code>,
|
||||
за исключением случая, когда необходимо получить
|
||||
информацию о безвозвратно удалённом объекте.
|
||||
<br>Если задан совместно с параметром <code>id</code>,
|
||||
то используется для переименования (целевое имя).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="quotas">
|
||||
quotas
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые квоты.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
cpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
disks_size
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ext_traffic
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
public_ip
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ram
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="state">
|
||||
state
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>absent</code>
|
||||
<br><code>absent_permanently</code>
|
||||
<br><code>confirmed</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>present</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние.
|
||||
<br><code>absent</code> - удалён в корзину, безвозвратно удалён
|
||||
или не существует. Если существует и не удалён, то будет удалён
|
||||
в корзину.
|
||||
<br><code>absent_permanently</code> - безвозвратно удалён или
|
||||
не существует. Если существует и не удалён или удалён в корзину,
|
||||
то будет безвозвратно удалён.
|
||||
<br> При значениях <code>absent</code> и <code>absent_permanently</code>
|
||||
использование других параметров модуля, вызывающих изменение объекта,
|
||||
не допускается.
|
||||
<br><code>confirmed</code> - включён. Если выключен, то будет включён.
|
||||
Если удалён в корзину, то будет восстановлен из корзины.
|
||||
<br><code>disabled</code> - выключен. Если включён, то будет выключен.
|
||||
Если удалён в корзину, то будет восстановлен из корзины и выключен.
|
||||
<br><code>present</code> - существует и не удалён. Если удалён в
|
||||
корзину, то будет восстановлен из корзины.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения
|
||||
|
||||
Модуль **decort_account** возвращает информацию об аккаунте в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
acl
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих доступы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
canBeDeleted
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Может ли быть удалён.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
right
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Права.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
type
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Тип.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
userGroupId
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя или группы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
company
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
companyurl
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
URL компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computeFeatures
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список дополнительных возможностей гипервизора, доступных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computes_amount
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Количество ВМ по состоянию.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
started
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество запущенных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
stopped
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество остановленных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_parameter
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Режим выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_ratio
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Коэффициент для режима выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который создал.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который удалил.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
displayname
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Отображаемое имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
resourceLimits
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Квоты на ресурсы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_C
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_D
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём диска в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_DM
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_I
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_M
|
||||
</td>
|
||||
<td>
|
||||
float
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_NP
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu_units
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
sendAccessEmails
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Отправка пользователям на эл. почту уведомлений о предоставлении доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
uniqPools
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список доступных пулов СХД.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vins
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список идентификаторов внутренних сетей на уровне аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vinses_amount
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внутренних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Удалить
|
||||
|
||||
#### В корзину
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent
|
||||
```
|
||||
|
||||
#### Безвозвратно
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent_permanently
|
||||
```
|
||||
|
||||
### Восстановить из корзины
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Restore account from recycle bin
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: present
|
||||
```
|
||||
|
||||
### Выключить/включить
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: disabled
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: confirmed
|
||||
```
|
||||
|
||||
### Изменить права доступа
|
||||
|
||||
#### Отозвать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Revoke user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: revoke
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
- id: "{{ user2_id }}"
|
||||
```
|
||||
|
||||
#### Обновить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: update
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: R
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
#### Привести в соответствие
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Match user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: match
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: ARCXDU
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
### Переименовать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Rename account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
name: "{{ account_new_name }}"
|
||||
```
|
||||
|
||||
### Изменить квоты
|
||||
|
||||
#### На объём дисков
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of disks size
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
disks_size: 500
|
||||
```
|
||||
|
||||
#### На количество внешних IP-адресов
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of public IP amount
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
public_ip: 10
|
||||
```
|
||||
|
||||
### Выключить/включить отправку уведомлений о предоставлении доступа к ресурсам
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: false
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: true
|
||||
```
|
||||
3831
wiki/5.6.0/модуль-decort_account_info.md
Normal file
3831
wiki/5.6.0/модуль-decort_account_info.md
Normal file
File diff suppressed because it is too large
Load Diff
92
wiki/5.6.0/модуль-decort_bservice.md
Normal file
92
wiki/5.6.0/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service
|
||||
- Удалять Basic Service (безвозвратно).
|
||||
- Включать/выключать Basic Service
|
||||
- Запускать Basic Service
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная базовая служба. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`. <br> Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
|
||||
| started | (bool) <br> Default: `true` | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. |
|
||||
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
|
||||
| rg_name | (string) | Имя ресурсной группы базовой службы. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|
||||
|name | string | Имя базовой службы.|
|
||||
| techStatus | string | Технический статус базовой службы. |
|
||||
|state | string | Статус базовой службы.|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
|
||||
| groups | list | Список словарей с информацией о группах базовой службы.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт базовую службу с именем databases.
|
||||
|
||||
```
|
||||
- name: Create Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет базовую службу с названием databases.
|
||||
```
|
||||
- name: Delete Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
state: absent
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
177
wiki/5.6.0/модуль-decort_disk.md
Normal file
177
wiki/5.6.0/модуль-decort_disk.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисками и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- удалять (в корзину или безвозвратно)
|
||||
- восстановливать из корзины
|
||||
- изменять:
|
||||
- имя
|
||||
- размер
|
||||
- лимиты ввода/вывода
|
||||
- включать/отключать общий доступ
|
||||
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- Загрузочный диск для виртуальной машины создаётся и подключается автоматически в процессе создания этой машины.
|
||||
- Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- Подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным машинам выполняется с помощью модуля управления виртуальными машинами (см. модуль decort_kvmvm).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string)<br>Default: `Disk by decort_disk` | Текстовое описание диска. Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int)<br>Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: true`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах. |
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его `name` и информация об аккаунте (`account_id` или `account_name`), которому принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
|
||||
| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
|
||||
| reason | (string)<br>Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
|
||||
| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
|
||||
| shareable | (bool)<br>Default: `false` | Включение/отключение общего доступа к диску.
|
||||
| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние диска. |
|
||||
| type | (string)<br>Значения:<br>`B`<br>`D`<br>Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
|
||||
| verify_ssl | (bool)<br/>Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.|
|
||||
| attached_to | int | Идентификатор виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то `attached_to: 0`|
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
| id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничения ввода/вывода диска. |
|
||||
| name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
| pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.|
|
||||
| size | int | Размер диска в ГБ.|
|
||||
| state | string | Текущий статус диска. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (`size: 50`), с ограничением ввода/вывода в 2000 iops, на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
annotation: "Disk example"
|
||||
pool: data01
|
||||
register: my_data_disk01
|
||||
```
|
||||
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 10000
|
||||
write_bytes_sec: 5000
|
||||
read_iops_sec и write_iops_sec
|
||||
read_iops_sec: 2500
|
||||
write_iops_sec: 1000
|
||||
read_bytes_sec_max: 11000
|
||||
write_bytes_sec_max: 6000
|
||||
read_iops_sec_max: 3000
|
||||
write_iops_sec_max: 1500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
total_bytes_sec: 15000
|
||||
total_iops_sec: 3500
|
||||
total_bytes_sec_max: 17000
|
||||
total_iops_sec_max: 4500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: Manage compute
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
105
wiki/5.6.0/модуль-decort_group.md
Normal file
105
wiki/5.6.0/модуль-decort_group.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- запустить/остановить
|
||||
- подключить/отключить сети (для существующей группы только внутренние сети)
|
||||
- изменить
|
||||
- имя
|
||||
- объём загрузочного диска
|
||||
- количество ВМ
|
||||
- роль
|
||||
- количество виртуальных процессоров
|
||||
- объём ОЗУ
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля **decort_group**.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. При идентификации диска по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта. При идентификации диска по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Обьём загрузочного диска. |
|
||||
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| count | (int) | Количество виртуальных машин. Обязательный параметр. |
|
||||
| cpu | (int) | Количество виртуальных процессоров. |
|
||||
| driver | (string)<br>Default: `KVM_X86` | Драйвер. |
|
||||
| id | (int) | Идентификатор группы. |
|
||||
| image_id | (int) | Идентификатор образа. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| name | (str) | Имя группы. Обязательный параметр.
|
||||
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| ram | (int) | Объём оперативной памяти. |
|
||||
| role | (string) | Тег роли. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
|
||||
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>• `id` (int) - идентификатор ВМ<br>• `ipAddresses` (list) - список IP-адресов ВМ<br>• `name` (str) - имя ВМ<br>• `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
|
||||
| id | int | Идентификатор группы.|
|
||||
| name | string | Имя группы.|
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Состояние группы. |
|
||||
| techStatus | string | Технический статус группы. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу с именем `test_group`.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Create BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
boot_disk: 10
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
count: 2
|
||||
cpu: 2
|
||||
image_id: 518
|
||||
name: test_group
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 2
|
||||
verify_ssl: false
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу с именем `test_group`.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Delete BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: test_group
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
state: absent
|
||||
verify_ssl: False
|
||||
register: group_test
|
||||
```
|
||||
53
wiki/5.6.0/модуль-decort_jwt.md
Normal file
53
wiki/5.6.0/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_jwt**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| validity | (int)<br>Default: `3600` | Срок действия JWT в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль **decort_jwt** возвращает JWT-токен, который доступен по ключу `jwt` (str).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала запрашивается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуальной машины в режиме авторизации `jwt` (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: Create VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании новой ВМ (в предположении, что результат выполнения task для модуля **decort_jwt** был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
108
wiki/5.6.0/модуль-decort_k8s.md
Normal file
108
wiki/5.6.0/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Модуль decort_k8s
|
||||
## Обзор модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить
|
||||
- изменить группы Worker-узлов
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_k8s
|
||||
Ниже приведен полный список параметров для модуля **decort_k8s**:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. |
|
||||
| account_name | (string) | Имя аккаунта. |
|
||||
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| description | (string)<br>Default: `Created by decort ansible module` | Описание кластера. |
|
||||
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
|
||||
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
|
||||
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
|
||||
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
|
||||
| id | (int) | Идентификатор кластера Kubernetes. |
|
||||
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
|
||||
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. Обязательный параметр. |
|
||||
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
|
||||
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
|
||||
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
|
||||
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
|
||||
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
|
||||
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
|
||||
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
|
||||
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
|
||||
| name | (string) | Имя кластера Kubernetes. |
|
||||
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
|
||||
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
|
||||
| rg_id | (int) | Идентификатор ресурсной группы. |
|
||||
| rg_name | (str) | Имя ресурсной группы. |
|
||||
| started | (bool)<br>Default: `true` | Автоматический запуск кластера после его создания. |
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
|
||||
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
|
||||
| workers | (list) | Обязательный параметр. Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`<br>• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init<br>• `cpu` (int) (обязательный) - количество виртуальных процессоров на узле<br>• `disk` (int) (обязательный) - объём загрузочного диска на узле<br>• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`<br>• `name` (string) (обязательный) - имя группы Worker-узлов<br>• `num` (int) (обязательный) - количество узлов<br>• `pool` (str) (обязательный) - пул СХД, заданной ключом `sep_id`<br>• `ram` (int) (обязательный) - объём оперативной памяти на узле<br>• `sep_id` (int) (обязательный) - идентификатор СХД; если задать `null`, то используется СХД образа узла<br>• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| config | str | Kuber config кластера.
|
||||
| id | int | Идентификатор кластера. |
|
||||
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти
|
||||
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `labels` (list) - список строк с labels<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти<br>• `taints` (list) - список строк с taints
|
||||
| name | string | Имя кластера. |
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Статус кластера. |
|
||||
| techStatus | string | Технический статус кластера. |
|
||||
| vins_id | int | Идентификатор внутренней сети кластера. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_k8s
|
||||
|
||||
|
||||
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
|
||||
```
|
||||
- name: Create a k8s cluster named cluster-test
|
||||
decort_k8s:
|
||||
authenticator: jwt
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
getConfig: true
|
||||
jwt: "{{ token.jwt }}"
|
||||
k8ci_id: 18
|
||||
name: cluster-test
|
||||
rg_id: 125
|
||||
workers:
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg1
|
||||
num: 1
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg2
|
||||
num: 2
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
register: k8s_cluster
|
||||
```
|
||||
106
wiki/5.6.0/модуль-decort_kvmvm.md
Normal file
106
wiki/5.6.0/модуль-decort_kvmvm.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Модуль decort_kvmvm
|
||||
## Обзор модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** предназначен для выполнения следующих действий над виртуальными машинами:
|
||||
- создать
|
||||
- получить информацию
|
||||
- остановить/приостановить/запустить
|
||||
- подключить/отключить диски с данными
|
||||
- подключить/отключить сети
|
||||
- изменить
|
||||
- объём загрузочного диска в большую сторону
|
||||
- количество CPU
|
||||
- объём ОЗУ
|
||||
- тэги
|
||||
- affinity метку
|
||||
- affinity правила
|
||||
- anti-affinity правила
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_kvmvm
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_kvmvm**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_kvmvm`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| aaff_rule | (list) | Список словарей, описывающих anti-affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| account_id | (int) | Идентификатор аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_id` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта. Этот параметр является опциональным и используется в сценариях, когда уже существующая ресурсная группа задается комбинацией `account_name` и `rg_name`. Если задан `account_id`, то `account_name` игнорируется. |
|
||||
| aff_rule | (list) | Список словарей, описывающих affinity правила.<br>Ключи словаря:<br>• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)<br>• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`<br>• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)<br>• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила<br>• `value` (string) (обязательный) - значение ключа, учитываемого при анализе данного правила (зависит от ключа `mode`)
|
||||
| affinity_label | (str) | Метка affinity.
|
||||
| annotation | (string) | Опциональное описание виртуальной машины. Этот параметр используется только при создании.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DCORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| arch | (str)<br>Значения:<br/>`X86_64`<br>`PPC64_LE`<br>Default: `X86_64` | Архитектура виртуальной машины. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Объём загрузочного диска виртуальной машины в ГБ. |
|
||||
| ci_user_data | (dict) | конфигурация для cloud-init
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данная виртуальная машина. Данный параметр является обязательным. |
|
||||
| cpu | (int) | Количество виртуальных процессоров, выделяемых виртуальной машине. |
|
||||
| data_disks | (list) | Список идентификаторов дисков, которые следует подключить к данной виртуальной машине как дополнительные. |
|
||||
| id | (int) | Уникальный цифровой идентификатор виртуальной машины. Этот параметр используется как один из методов идентификации существующей ВМ (альтернатива – по комбинации `name`, `rg_name` и `account_name`). Если при вызове модуля **decort_kvmvm** существующая ВМ идентифицируется по `id`, то параметры `account_id`, `account_name`, `rg_id` и `rg_name` игнорируются. |
|
||||
| image_id | (int) | Уникальный цифровой идентификатор образа, на базе которого следует создать виртуальную машину. При создании задать этот параметр или параметр `image_name`. При любых других операциях данные параметры игнорируются. Если заданы оба этих параметра (`image_id` и `image_name`), то `image_name` игнорируется. |
|
||||
| image_name | (string) | Название образа, на базе которого следует создать ВМ. При создании требуется задать этот параметр или параметр `image_id`. При любых других операциях данные параметры игнорируются. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_JWT`.
|
||||
| name | (string) | Имя ВМ. Чтобы модуль **decort_kvmvm** мог управлять сервером по его названию, также необходимо задать комбинацию `account_name` и `rg_name` или `rg_id`. Если для существующей ВМ указаны и `name`, и `id`, то параметр `name` игнорируется и идентификация сервера выполняется по `id`.|
|
||||
| networks | (list) | Список словарей, описывающих сети для подключения к ВМ.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети<br>• `ip_addr` (string) (необязательный) - IP-адрес, используемый для подключения к данной сети. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль **decort_kvmvm** будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| pool | (str) | Пул СХД, заданной параметром `sep_id`. Если пул не задан, то он будет выбран платформой.
|
||||
| ram | (int) | Объем оперативной памяти в МБ, выделенной данной ВМ. Параметр является обязательным при создании. Если указать его для уже существующей ВМ, то будет выполнена попытка изменить объем выделенной памяти. |
|
||||
| rg_id | (int) | Уникальный цифровой идентификатор уже существующей ресурсной группы, в которой будет создана новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ (альтернативой является задание комбинации `account_name` и `rg_name`).|
|
||||
| rg_name | (string) | Имя уже существующей ресурсной группы, в которой будет создаа новая или находится уже существующая ВМ. Данный параметр является одним из методов идентификации существующей РГ, когда задается пара `account_name` и `rg_name` (альтернативой является задание `rg_id`). Если заданы и `rg_id`, и `rg_name`, то параметр `rg_name` игнорируется.|
|
||||
| sep_id | (int) | Идентификатор СХД для загрузочного диска ВМ. Если не задан, то будет использоваться СХД образа.
|
||||
| ssh_key | (string) | Открытая часть SSH-ключа, который необходимо добавить на создаваемую ВМ для пользователя, заданного параметром `ssh_key_user`. Данный параметр применим только для ОС Linux, используется только при создании и игнорируется при других операциях. |
|
||||
| ssh_key_user | (string) | Имя пользователя в гостевой ОС (только для Linux), для которого добавляется SSH-ключ, заданный параметром `ssh_key`. Данный параметр является обязательным, если задан `ssh_key`. Используется только при создании и игнорируется при других операциях. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`poweredon`<br>`poweredoff`<br>`halted`<br>`paused`<br>`check`<br>Default: `present` | Целевое состояние ВМ.<br> Значение `halted` - синоним к `poweredoff`. Значения `present` и `poweredon` равнозначны. <br>Значение `check` вызывает модуль в _read-only_ режиме и считывает характеристики существующей ВМ. |
|
||||
| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_kvmvm
|
||||
|
||||
Модуль **decort_kvmvm** возвращает информацию о виртуальной машине в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| arch | string | Архитектура ВМ. |
|
||||
| cpu | int | Количество виртуальных процессоров. |
|
||||
| data_disks | list | Список идентификаторов дисков с данными, подключенных к ВМ. |
|
||||
| disk_size | int | Размер загрузочного диска в ГБ. |
|
||||
| id | int | Идентификатор ВМ. |
|
||||
| image_id | id | Идентификатор образа.
|
||||
| name | string | Имя ВМ. |
|
||||
| password | string | Пароль пользователя ОС по умолчанию. |
|
||||
| private_ips | list | Список IP-адресов на сетевых интерфейсах ВМ, которые подключены к внутренним сетям. |
|
||||
| public_ips | list | Список IP адресов на сетевых интерфейсах ВМ, которые подключены к внешним сетям. |
|
||||
| ram | int | Объём ОЗУ ВМ в МБ. |
|
||||
| rg_id | int | Идентификатор ресурсной группы, которой принадлежит данная ВМ. |
|
||||
| state | string | Состояние ВМ.|
|
||||
| tags | dict | Словарь, пары ключ-значение которого, описывают тэги ВМ.
|
||||
| tech_status | str | Технический статус ВМ.
|
||||
| username | string | Имя пользователя ОС по умолчанию. |
|
||||
|
||||
## Пример использования модуля decort_kvmvm
|
||||
|
||||
В данном примере создается ВМ с именем MyFirstVM.
|
||||
```
|
||||
- name: Сreate VM
|
||||
decort_kvmvm:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
cpu: 2
|
||||
image_id: "{{ my_img.facts.id }}"
|
||||
name: MyFirstVM
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 4096
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
register: my_vm
|
||||
```
|
||||
893
wiki/5.6.0/модуль-decort_lb.md
Normal file
893
wiki/5.6.0/модуль-decort_lb.md
Normal file
@@ -0,0 +1,893 @@
|
||||
# Модуль decort_lb
|
||||
## Обзор модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить/перезапустить
|
||||
- изменить конфигурации backend и frontend
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_lb
|
||||
Ниже приведен полный список параметров для модуля **decort_lb**:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="3">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
account_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя аккаунта.
|
||||
<br> Может быть альтернативой параметру <code>account_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
annotation
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Default: <code>Managed by Ansible module decort_lb</code>
|
||||
</td>
|
||||
<td>
|
||||
Описание балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>leastconn</code>
|
||||
<br><code>roundrobin</code>
|
||||
<br><code>static-rr</code>
|
||||
<br>Default: <code>roundrobin</code>
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
<a name="backend_default_settings">
|
||||
default_settings
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
downinter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>1000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается недоступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
fall
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество последовательных неудачных проверок доступности, после
|
||||
которых сервер, ранее считавшийся доступным, начинает считаться
|
||||
недоступным и временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
inter
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>5000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах между двумя последовательными проверками
|
||||
доступности сервера, который считается доступным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxconn
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>250</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит одновременных подключений к серверу. При достижении этого лимита
|
||||
сервер временно исключается из схемы балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
maxqueue
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>256</code>
|
||||
</td>
|
||||
<td>
|
||||
Лимит соединений, ожидающих в очереди. Когда этот предел будет
|
||||
достигнут, все последующие подключения будут перенаправлены
|
||||
на другие серверы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
rise
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>2</code>
|
||||
</td>
|
||||
<td>
|
||||
Количество проверок, которые должен пройти сервер, считавшийся
|
||||
недоступным, чтобы начать считаться доступным и снова быть
|
||||
включенным в схему балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
slowstart
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>60000</code>
|
||||
</td>
|
||||
<td>
|
||||
Интервал в миллисекундах с момента когда сервер начинает считаться
|
||||
доступным, по истечении которого количество фактически разрешенных
|
||||
подключений к этому серверу будет возвращено до 100% от
|
||||
установленного лимита.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
weight
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Default: <code>100</code>
|
||||
</td>
|
||||
<td>
|
||||
Вес сервера для использования в алгоритмах балансировки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ext_net_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внешней сети.
|
||||
<br>Может быть не задан, если задан <code>vins_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<a name="frontends">
|
||||
frontends
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backend
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название используемого backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
bindings
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации binding.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
<br>Если не задан, то будет использоваться основной IP-адрес
|
||||
балансировщика во внешней сети или, если подключена только
|
||||
внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
ha_lb
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Использовать схему высокой доступности для создаваемого балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика нагрузки.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
lb_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
permanently
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>false</code>
|
||||
</td>
|
||||
<td>
|
||||
Если выполняется удаление, то выполнить безвозвратное удаление
|
||||
(минуя корзину).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
rg_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя ресурсной группы.
|
||||
<br> В комбинации с заданным аккаунтов может быть альтернативой
|
||||
параметру <code>rg_id</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих параметры backend-сервера для разных
|
||||
конфигураций backend.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br>Default: <code>enabled</code>
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
<br>Значения:
|
||||
<br><code>1</code>-<code>65535</code>
|
||||
</td>
|
||||
<td>
|
||||
Порт. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
server_settings
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Словарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Название. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>present</code>
|
||||
<br><code>absent</code>
|
||||
<br><code>enabled</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>restart</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние балансировщика нагрузки.
|
||||
<br>Выполнение с <code>state=restart</code> позволяет выполнить
|
||||
перезапуск балансировщика, соответственно, всегда возвращает
|
||||
<code>changed: true</code>.
|
||||
<br>Значения <code>present</code> и <code>enabled</code> равнозначны
|
||||
и соответствуют включённому и запущенному балансировщику.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор внутренней сети.
|
||||
<br>Может быть не задан, если задан <code>ext_net_id</code> -
|
||||
в таком случае балансировщик будет подключён только к
|
||||
внешней сети.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
vins_name
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя внутренней сети.
|
||||
<br> В комбинации с заданной РГ может быть альтернативой для
|
||||
параметра <code>vins_id</code>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения модуля decort_lb
|
||||
|
||||
Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
backends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
algorithm
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Используемый алгоритм.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название конфигурации backend.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
serverDefaultSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры по умолчанию для backend-серверов.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
servers
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации backend-серверов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
address
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
IP-адрес.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
check
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Проверка доступности сервера.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
port
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Порт.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="2">
|
||||
serverSettings
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Cловарь, описывающий параметры backend-сервера.
|
||||
<br> Ключи данного словаря аналогичны ключам словаря
|
||||
<a href=#backend_default_settings>
|
||||
default_settings
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
frontends
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих конфигурации frontend.
|
||||
<br> Ключи данного словаря аналогичны ключам словарей списка
|
||||
<a href=#frontends>
|
||||
frontends
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
gid
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор физического кластера (Grid ID).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
rg_id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор ресурсной группы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
state
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус балансировщика.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
132
wiki/5.6.0/модуль-decort_osimage.md
Normal file
132
wiki/5.6.0/модуль-decort_osimage.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Модуль decort_osimage
|
||||
## Обзор модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
|
||||
- шаблонные образы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить имя
|
||||
- удалить
|
||||
- виртуальные образы
|
||||
- создать
|
||||
- получить информацию
|
||||
- изменить
|
||||
- имя
|
||||
- целевой образ
|
||||
|
||||
## Параметры модуля decort_osimage
|
||||
Ниже приведен полный список параметров для модуля decort_osimage.
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_Id | (int) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
|
||||
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| architecture | (string)<br>Default: `X86_64` | Архитектура микропроцессора, для которой предназначен образ. Используется при создании образа.|
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boottype | (string)<br>Default: `uefi` | Тип загрузки образа. Используется при создании образа.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) образ. Данный параметр является обязательным. |
|
||||
| drivers | (string)<br>Default: `KVM_X86` | Тип виртуальных машин, подходящих для образа. Используется при создании образа.|
|
||||
| hotresize | (bool)<br>Default: `false` | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы. |
|
||||
| image_id | (int) | Идентификатор шаблонного образа.
|
||||
| image_name | (str) | Имя шаблонного образа.
|
||||
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
|
||||
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
|
||||
| imagetype | (string)<br>Default: `linux` | Тип образа. Используется при создании образа.|
|
||||
| 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`. |
|
||||
| passwordDL | (string) | Пароль для скачивания по URL-адресу. Используется при создании образа. |
|
||||
| pool | (str) | Имя пула СХД. Используется для поиска существующего образа.
|
||||
| poolName | (string) | Имя пула СХД. Используется при создании образа. |
|
||||
| sepId | (integer) | Уникальный целочисленный идентификатор СХД. Используется при создании образа. |
|
||||
| sep_id | (int) | Идентификатор СХД. Используется для поиска существующего образа.
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
|
||||
| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
|
||||
| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа.|
|
||||
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последствии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа.|
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_osimage
|
||||
|
||||
Модуль decort_osimage возвращает информацию об образе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| accountId | int | Идентификатор аккаунта.
|
||||
| id | int | Уникальный целочисленный идентификатор данного образа. |
|
||||
| linkto | int | Уникальный целочисленный идентификатор образа, который привязан к данному виртуальному. |
|
||||
| name | string | Имя образа. |
|
||||
| pool | string | Имя пула на системе хранения данных, в котором находится данный образ.|
|
||||
| sep_id | int | Идентификатор системы хранения данных, на которой хранится данный образ. |
|
||||
| size | int | Размер образа в ГБ. |
|
||||
| state | string | Текущий статус образа. |
|
||||
| type | string | Тип образа. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_osimage
|
||||
|
||||
|
||||
Пример создания шаблонного образа с операционной системой Alpine Linux.
|
||||
```
|
||||
- name: Create template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
url: https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.1-x86_64-uefi-cloudinit-r0.qcow2
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример получения информации о существующем шаблонном образе по его имени.
|
||||
|
||||
```
|
||||
- name: Get template image
|
||||
decort_osimage:
|
||||
account_Id: 12345
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
verify_ssl: false
|
||||
register: osimage
|
||||
```
|
||||
|
||||
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой шаблонный образ, он привяжет к себе указанный в примере шаблонный образ.
|
||||
|
||||
```
|
||||
- name: Create virtual image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1
|
||||
virt_name: alpine_last
|
||||
register: osimage
|
||||
```
|
||||
Обратите внимание, что в данном примере можно использовать как `image_name`, так и `image_id`. Также можно использовать либо `virt_name`, либо `virt_id`.
|
||||
|
||||
Пример переименования образа.
|
||||
|
||||
```
|
||||
- name: Rename template image
|
||||
decort_osimage:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
image_name: alpine_linux_3.19.1_new_name
|
||||
image_id: 54321
|
||||
register: osimage
|
||||
```
|
||||
|
||||
76
wiki/5.6.0/модуль-decort_pfw.md
Normal file
76
wiki/5.6.0/модуль-decort_pfw.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Модуль decort_pfw
|
||||
## Обзор модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** предназначен для настройки правил переадресации портов (port forwarding, destination NAT) на виртуальном маршрутизаторе заданной внутренней сети для заданной виртуальной машины.
|
||||
Модуль поддерживает выполнение следующих действий над правилами:
|
||||
- добавить
|
||||
- получить информацию
|
||||
- удалить
|
||||
|
||||
## Параметры модуля decort_pfw
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_pfw**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_pfw`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| compute_id | (int) | Идентификатор виртуальной машины. IP-адрес, который данная ВМ имеет во внутренней сети, заданной параметром `vins_id`, будет использоваться как внутренний IP-адрес в правилах. Обязательный параметр. |
|
||||
| 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`. |
|
||||
| rules | (list) | Список словарей, описывающих правила переадресации портов для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`).<br>Ключи словаря:<br>• `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`<br>• `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`<br>• `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;<br>• `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
|
||||
| state | (str)<br>Значения:<br/>`present`<br/>`absent`<br>Default: `present` | Целевое состояние правил.<br>Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_pfw
|
||||
|
||||
Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| compute_id | int | Идентификатор ВМ. |
|
||||
| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
|
||||
| rules | list | Список словарей, описывающих правила переадресации портов.<br>Ключи словаря:<br>• `id` (int) - идентификатор правила<br>• `localIp` (str) - IP-адрес ВМ<br>• `localPort` (int) - внутренний порт<br>• `protocol` (str) - протокол<br>• `publicPortEnd` (int) - верхняя граница диапазона внешних портов<br>• `publicPortStart` (int) - нижняя граница диапазона внешних портов<br>• `vmId` (int) - идентификатор ВМ<br>• `vmName` (str) - имя ВМ |
|
||||
| state | string | Статус правил. Значения: `PRESENT` или `ABSENT`. |
|
||||
| vins_id | int | Идентификатор внутренней сети. |
|
||||
|
||||
## Пример использования модуля decort_pfw
|
||||
|
||||
В данном примере для существующей ВМ (параметр `compute_id`), подключённой к внутренней сети (параметр `vins_id`), настраиваются два правила переадресации портов:
|
||||
|
||||
- Правило для одного порта: внешний порт `30022` на внутренний порт `22` по протоколу `tcp`.
|
||||
- Правило для диапазона портов: внешние порты с `30080` по `30085` на внутренние порты с `30080` по протоколу `udp`.
|
||||
|
||||
```
|
||||
- name: Add port forwarding rules
|
||||
decort_pfw:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
compute_id: "{{ my_vm.facts.id }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
rules:
|
||||
- local_port: 22
|
||||
proto: tcp
|
||||
public_port_start: 30022
|
||||
- local_port: 30080
|
||||
proto: udp
|
||||
public_port_end: 30085
|
||||
public_port_start: 30080
|
||||
vins_id: "{{ my_vins.facts.id }}"
|
||||
register: my_pfw_rules
|
||||
```
|
||||
|
||||
В данном примере результат выполнения модуля **decort_pfw** записывается в переменную `my_pfw_rules`. Для доступа к списку правил используйте следующую конструкцию:
|
||||
|
||||
```
|
||||
"{{ my_pfw_rules.facts.rules }}"
|
||||
```
|
||||
200
wiki/5.6.0/модуль-decort_rg.md
Normal file
200
wiki/5.6.0/модуль-decort_rg.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# Модуль decort_rg
|
||||
|
||||
## Обзор модуля decort_rg
|
||||
|
||||
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
|
||||
|
||||
- создавать ресурсные группы
|
||||
- удалять ресурсные группы (в корзину или безвозвратно)
|
||||
- восстанавливать ресурсные группы из корзины
|
||||
- включать/отключать ресурсные группы
|
||||
- запрашивать информацию об уже существующих ресурсных группах
|
||||
- изменять ресурсные группы:
|
||||
- переименовывать
|
||||
- настраивать квоты
|
||||
- задавать стандартную сеть
|
||||
- настраивать права доступа для пользователей
|
||||
|
||||
## Параметры модуля decort_rg
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_rg. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_rg`
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
|----------|--------------------------|----------|
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| access | (dict) | Параметр, позволяющий выдать, забрать или изменить права у пользователя в ресурсной группе. |
|
||||
| annotation | (string) | Текстовое описание ресурсной группы. Данный параметр является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
|
||||
| authenticator | Значения:<br>`oauth2`<br>`jwt`| Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным.|
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная ресурсная группа. Данный параметр является обязательным. |
|
||||
| def_netType | (string) <br>Значения:<br>`PRIVATE`<br>`PUBLIC`<br>`NONE`<br>Default: `PRIVATE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также при изменении. |
|
||||
| def_netId | (int) | Уникальный целочисленный идентификатор внутренней или внешней сети. Используется для изменения сети по умолчанию в ресурсной группе. |
|
||||
| extNetId | (int) | Уникальный целочисленный идентификатор внешней сети. Используется при создании РГ для подключения внешней сети к внутренней сети, которая будет создана и задана как сеть по умолчанию для РГ. |
|
||||
| extNetIp | (string) | IP-адрес для внешней сети, которая задана в параметре `extNetId`. |
|
||||
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
|
||||
| ipcidr | (string) | IP-адрес внутренней сети. Используется при создании ресурсной группы, чтобы задать IP-адрес сети для создаваемой внутренней сети, которая создастся вместе с ресурсной группой. Используется при параметре `def_netType` в значении `PRIVATE`. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br>Данный параметр является обязательным для указанного режима.<br>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| rename | (string) | Новое имя ресурсной группы. Используется при переименовании ресурсной группы. |
|
||||
| quotas | (dict) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
|
||||
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. Является обязательным при изменении РГ если не заданы `rg_name` и `account_id`/`account_name` |
|
||||
| state | Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>Default: `present` | Целевое состояние ресурсной группы. |
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_rg
|
||||
|
||||
Модуль decort_rg возвращает информацию о ресурсной группе в виде словаря facts со следующими ключами:
|
||||
| Ключ | Тип данных | Описание |
|
||||
|------|------------|----------|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
|
||||
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
|
||||
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
|
||||
| state | string | Текущее состояние ресурсной группы. |
|
||||
| quota | dict | Текущие квоты ресурсной группы. |
|
||||
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
|
||||
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
|
||||
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
|
||||
| ViNS | list | Список идентификаторов внутренних сетей ресурсной группы. |
|
||||
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
|
||||
|
||||
## Пример использования модуля decort_rg
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount, также задать квоты и выдать права на чтение пользователю MyUser.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "R"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
access:
|
||||
action: "grant"
|
||||
user: "MyUser"
|
||||
right: "RCX"
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
quotas:
|
||||
cpu: 16
|
||||
ram: 16384
|
||||
disk: 100
|
||||
ext_ips: 20
|
||||
net_transfer: 1000
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
def_netType: "PRIVATE"
|
||||
def_netId: 99
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в аккаунте MyAccount.
|
||||
|
||||
```
|
||||
- name: manage resource group
|
||||
decort_rg:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
account_name: "MyAccount"
|
||||
rg_name: "MyRG"
|
||||
rename: "NewRg"
|
||||
rg_id: 27
|
||||
state: present
|
||||
register: my_rg
|
||||
delegate_to: localhost
|
||||
```
|
||||
|
||||
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
|
||||
|
||||
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
|
||||
|
||||
```
|
||||
<прочие детали опущены>
|
||||
rg_id: "{{ my_rg.facts.id }}"
|
||||
```
|
||||
1297
wiki/5.6.0/модуль-decort_user_info.md
Normal file
1297
wiki/5.6.0/модуль-decort_user_info.md
Normal file
File diff suppressed because it is too large
Load Diff
120
wiki/5.6.0/модуль-decort_vins.md
Normal file
120
wiki/5.6.0/модуль-decort_vins.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Модуль decort_vins
|
||||
## Обзор модуля decort_vins
|
||||
|
||||
Модуль decort_vins предназначен для управления внутренними сетями (Virtual Network Segment, ViNS) и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- на уровне ресурсной группы (если РГ задана)
|
||||
- на уровне аккаунта (если РГ не задана)
|
||||
- удалять (безвозвратно)
|
||||
- восстанавливать из корзины
|
||||
- запрашивать информацию
|
||||
- включать/отключать
|
||||
- соединять (необходимы права администратора)
|
||||
- изменять:
|
||||
- включать/отключать SSH-доступ к виртуальному маршрутизатору (необходимы права администратора)
|
||||
- включать/отключать режим **Custom Config** для виртуального маршрутизатора (необходимы права администратора)
|
||||
- сохранять конфигурацию виртуального маршрутизатора для возможности последующего отката к ней (необходимы права администратора)
|
||||
|
||||
## Параметры модуля decort_vins
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_vins. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_vins`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная внутреняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
| account_name | (string) | Имя аккаунта, которому принадлежит данная внутренняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|annotation | (string)| Текстовое описание внутренней сети. Данный аргумент является опциональным и учитывается только при создании внутренней сети, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данный внутренняя сеть. Данный параметр является обязательным.
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой должна быть подключена внутренняя сеть. Если задать значение `0`, то платформой будет выбрана внешняя сеть по умолчанию. |
|
||||
| ext_ip_addr | (string) | IP-адрес внешней сети, заданной через параметр `ext_net_id`. Если не задан, то IP-адрес для внешней сети будет выбран платформой автоматически.
|
||||
| ipcidr | (string) | Адрес сети для создаваемой внутренней сети. Если этот параметр не задан, то платформа назначит адрес автоматически. Обратите внимание, что внутренние сети, принадлежащие одному и тому же аккаунту, не могут иметь пересекающихся сетей.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу _Oauth2_, который должен использоваться в режиме `authenticator: oauth2`.<br/>Данный параметр является обязательным для указанного режима.<br/>Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
|
||||
| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
|
||||
| state | (string)<br>Значения:<br/>`present`<br/>`absent`<br/>`enabled`<br/>`disabled`<br/>Default: `present` | Целевое состояние внутренней сети. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Соответствующая внутренная сеть должна существовать. Таким образом, с помощью `vins_id` нельзя создать новую внутреннюю сеть, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
|
||||
| vins_name| (string) | Имя внутренней сети. Для идентификации внутренней сети требуется либо `vins_name` и информация об аккаунте/ресурсной группе, которой принадлежит сеть, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или аккаунта, на уровне которого существует данная внутренняя сеть.|
|
||||
| mgmtaddr | (list) | Список существующих IP-адресов виртуального маршрутизатора во внутренней сети, через которые необходимо разрешить SSH-доступ к виртуальному маршрутизатору.
|
||||
| custom_config | (bool)<br>Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
|
||||
| config_save | (bool)<br>Default: `false` | Выполнить сохранение текущей конфигурации виртуального маршрутизатора для возможности последующего отката к ней. |
|
||||
| connect_to | (list) | Список словарей, содержащих информацию о внутренних сетях, к которым необходимо подключить данную. См. примеры.
|
||||
|
||||
## Возвращаемые значения модуля decort_vins
|
||||
|
||||
Модуль decort_vins возвращает информацию о внутренней сети в виде словаря facts со следующими ключами:
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| --- | --- | --- |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит внутренняя сеть. |
|
||||
| custom_net_addr | (list) | Список IP-адресов пользовательских интерфейсов виртуального маршрутизатора
|
||||
| ext_ip_addr | (string) | IP-адрес интерфейса, которым виртуальный маршрутизатор подключён к внешней сети. |
|
||||
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключена внутренняя сеть. `-1` означает, что внутренняя сеть не подключёна к внешней сети. |
|
||||
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данной внутренней сети. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор внутренней сети. |
|
||||
| name | (string) | Имя внутренней сети. |
|
||||
| int_net_addr | (string) | Адрес внутренней сети. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, которой принадлежит данная внутренняя сеть. Если данная внутренняя сеть создана на уровне аккаунта, то `rg_id=0`. |
|
||||
| ssh_ipaddr | (list) | Список IP-адресов виртуального маршрутизатора во внутренней сети, на которых включён SSH-доступ к нему.
|
||||
| ssh_password | (str) | Пароль для SSH-доступа к виртуальному маршрутизатору.
|
||||
| ssh_port | (int) | Номер порта для SSH-подключения к виртуальному маршрутизатору.
|
||||
| state | (string) | Состояние внутренней сети. |
|
||||
|
||||
|
||||
|
||||
## Пример использования модуля decort_vins
|
||||
|
||||
В данном примере создаётся внутренняя сеть с именем "MyVins01" (vins_name: "MyVins01").
|
||||
|
||||
Внутренняя сеть создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей аккаунту "MyMainAccount" (account_name: "MyMainAccount"). Внутренняя сеть будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
account_name: "MyMainAccount"
|
||||
rg_name: "MyRg01"
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
ext_net_id: 0
|
||||
vins_name: "MyVins01"
|
||||
register: my_vins
|
||||
```
|
||||
|
||||
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор внутренней сети для подключения к нему виртуального сервера.
|
||||
```
|
||||
- name: Manage virtual machine
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
networks:
|
||||
- type: VINS
|
||||
id: "{{ my_vins.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
|
||||
В данном примере идёт создание внутренней сети, а потом её привязка к внутренним сетям с id 864 и 196.
|
||||
```
|
||||
- name: Manage ViNS on resource group level
|
||||
decort_vins:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_jwt.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
vins_name: "ViNS_connected_by_decort_vins_module"
|
||||
rg_id: 98
|
||||
connect_to:
|
||||
- id: 864
|
||||
ipaddr: 192.168.5.66
|
||||
netmask: 24
|
||||
- id: 196
|
||||
ipaddr: 192.168.9.133
|
||||
netmask: 24
|
||||
register: managed_vins
|
||||
|
||||
```
|
||||
|
||||
|
||||
23
wiki/6.0.0/Home.md
Normal file
23
wiki/6.0.0/Home.md
Normal file
@@ -0,0 +1,23 @@
|
||||
1. [Введение](./введение.md)
|
||||
- [Введение](./введение.md#введение)
|
||||
- [Системные требования](./введение.md#системные-требования)
|
||||
- [Подготовка к работе](./введение.md#подготовка-к-работе)
|
||||
- [Авторизация](./введение.md#авторизация)
|
||||
- [Общие параметры модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации)
|
||||
- [Пример авторизации с помощью app_id и app_secret](./введение.md#пример-авторизации-с-помощью-app_id-и-app_secret)
|
||||
- [Пример авторизации с помощью JSON Web Token](./введение.md#пример-авторизации-с-помощью-json-web-token)
|
||||
1. Ansible модули DECORT:
|
||||
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
|
||||
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
|
||||
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
|
||||
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
|
||||
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
|
||||
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
|
||||
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
|
||||
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
|
||||
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
|
||||
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
|
||||
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
|
||||
- [Модуль decort_account_info](./модуль-decort_account_info.md) - получение информации об аккаунте
|
||||
- [Модуль decort_account](./модуль-decort_account.md) - управление аккаунтами
|
||||
- [Модуль decort_user_info](./модуль-decort_user_info.md) - получение информации о пользователе
|
||||
181
wiki/6.0.0/введение.md
Normal file
181
wiki/6.0.0/введение.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# Модули Ansible для управления облачными ресурсами в платформе DECORT
|
||||
## Введение
|
||||
|
||||
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
|
||||
|
||||
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
|
||||
|
||||
## Системные требования
|
||||
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
|
||||
Системные требования для работы модуля:
|
||||
- Ansible 10.5.0
|
||||
- Python 3.10.12
|
||||
- PyJWT 2.9.0 Python module
|
||||
- requests 2.32.3 Python module
|
||||
- DynamiX Enterprise 4.1.0
|
||||
|
||||
## Подготовка к работе
|
||||
|
||||
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей. Для этого необходимо:
|
||||
- либо разместить директории **library** и **module_utils** в одной директории с плейбуками
|
||||
- либо в рабочей директории, из которой будет запускаться Ansible, разместить файл **ansible.cfg**, в котором задать пути к файлам модулей, например:
|
||||
```
|
||||
[defaults]
|
||||
library=./library
|
||||
module_utils=./module_utils
|
||||
```
|
||||
|
||||
## Авторизация
|
||||
|
||||
### Общие параметры модулей для авторизации
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор приложения, использующийся для подключения к контроллеру
|
||||
облачной платформы DECORT в режиме <code>authenticator: oauth2</code>.
|
||||
Данный параметр является обязательным для указанного режима. Если
|
||||
параметр не задан в playbook, модуль будет использовать значение
|
||||
переменной окружения <code>DECORT_APP_ID</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
app_secret
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Секретный ключ приложения, который используется для подключения к
|
||||
контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит секретную
|
||||
информацию, то его не рекомендуется задавать непосредственно в
|
||||
playbook. Если параметр не задан в playbook, то модуль будет
|
||||
использовать значение переменной окружения
|
||||
<code>DECORT_APP_SECRET</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
authenticator
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br/><code>oauth2</code>
|
||||
<br/><code>jwt</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим аутентификации при подключении к контроллеру облачной платформы
|
||||
DECORT. Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
controller_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL контроллера, соответствующего экземпляру облачной платформы
|
||||
DECORT. Данный параметр является обязательным.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
jwt
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
JSON Web Token (JWT), который будет использоваться для подключения
|
||||
к контроллеру облачной платформы DECORT в режиме
|
||||
<code>authenticator: jwt</code>. Данный параметр является
|
||||
обязательным для указанного режима. Так как он содержит
|
||||
потенциально секретную информацию, а сам JWT, как правило,
|
||||
имеет ограниченное время жизни, то его не рекомендуется задавать
|
||||
непосредственно в playbook. Если этот параметр не определен в
|
||||
playbook, то модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_JWT</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
oauth2_url
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
URL авторизационного сервера, работающего по протоколу Oauth2,
|
||||
который должен использоваться в режиме
|
||||
<code>authenticator: oauth2</code>. Данный параметр является
|
||||
обязательным для указанного режима. Если параметр не задан в
|
||||
playbook, модуль будет использовать значение переменной
|
||||
окружения <code>DECORT_OAUTH2_URL</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
verify_ssl
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
<br>Default: <code>true</code>
|
||||
</td>
|
||||
<td>
|
||||
Позволяет отключить проверку SSL сертификатов при выполнении API
|
||||
вызовов в адрес контроллера облачной инфраструктуры, например,
|
||||
при работе с изолированной облачной инфраструктурой, использующей
|
||||
самоподписанные сертификаты. Применяйте данный параметр с
|
||||
осторожностью, предпочтительно в защищенных средах.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Пример авторизации с помощью app_id и app_secret
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with app_id and app_secret
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
app_id: "{{ app_id }}"
|
||||
app_secret: "{{ app_secret }}"
|
||||
authenticator: oauth2
|
||||
controller_url: "{{ controller_url }}"
|
||||
oauth2_url: "{{ oauth2_url }}"
|
||||
```
|
||||
|
||||
### Пример авторизации с помощью JSON Web Token
|
||||
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Auth with JWT
|
||||
decort_module_name:
|
||||
# Специфичные для модулей параметры упущены
|
||||
# Пример демонстрирует только параметры для авторизации
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ jwt }}"
|
||||
```
|
||||
992
wiki/6.0.0/модуль-decort_account.md
Normal file
992
wiki/6.0.0/модуль-decort_account.md
Normal file
@@ -0,0 +1,992 @@
|
||||
# Модуль decort_account
|
||||
## Обзор модуля
|
||||
|
||||
Модуль **decort_account** предназначен для выполнения следующих действий над аккаунтом:
|
||||
- **удалить в корзину** (см. [параметр state](#state) и [примеры](#в-корзину))
|
||||
- **удалить безвозвратно** (см. [параметр state](#state) и [примеры](#безвозвратно))
|
||||
- **восстановить из корзины** (см. [параметр state](#state) и [примеры](#восстановить-из-корзины))
|
||||
- **выключить/включить** (см. [параметр state](#state) и [примеры](#выключитьвключить))
|
||||
- **изменить права доступа** (см. [параметр acl](#acl) и [примеры](#изменить-права-доступа))
|
||||
- **изменить имя** (см. [параметр name](#name) и [примеры](#переименовать))
|
||||
- **изменить квоты** (см. [параметр quotas](#quotas) и [примеры](#изменить-квоты))
|
||||
- **выключить/включить отправку уведомлений о предоставлении доступа к ресурсам** (см. [параметр access_emails](#access_emails) и [примеры](#выключитьвключить-отправку-уведомлений-о-предоставлении-доступа-к-ресурсам))
|
||||
- **изменить доступные пулы СХД** (см. [параметр sep_pools](#sep_pools) и [примеры](#изменить-доступные-пулы-схд))
|
||||
|
||||
## Параметры модуля
|
||||
Ниже приведен список параметров для модуля **decort_account** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">Параметр</th>
|
||||
<th>Тип</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="access_emails">
|
||||
access_emails
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(bool)
|
||||
</td>
|
||||
<td>
|
||||
Выключение/включение отправки пользователям на эл. почту уведомлений о предоставлении доступа к ресурсам.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="acl">
|
||||
acl
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые права доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
mode
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>match</code>
|
||||
<br><code>revoke</code>
|
||||
<br><code>update</code>
|
||||
<br>Default: <code>update</code>
|
||||
</td>
|
||||
<td>
|
||||
Режим изменения прав доступа для указанных пользователей.
|
||||
<br><code>match</code> - привести в соответствие для указанных
|
||||
пользователей, удалить предоставленные для других.
|
||||
<br><code>revoke</code> - отозвать для указанных пользователей,
|
||||
если предоставлены.
|
||||
<br><code>update</code> - привести в соответствие для указанных
|
||||
пользователей, оставить без изменения предоставленные для
|
||||
других.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
users
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих права доступа пользователей.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
rights
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>R</code>
|
||||
<br><code>RCX</code>
|
||||
<br><code>ARCXDU</code>
|
||||
<br>Default: <code>R</code>
|
||||
</td>
|
||||
<td>
|
||||
Права доступа.
|
||||
<br>При <code>mode: revoke</code> не используется.
|
||||
<br>При <code>mode: match</code> и <code>mode: update</code>
|
||||
права <code>ARCXDU</code> считаются соответствующими
|
||||
правам <code>CXDRAU</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="4">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя.
|
||||
<br>Обязательный параметр.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор целевого аккаунта.
|
||||
<br>Обязательный параметр, если не задан параметр
|
||||
<code>name</code>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="name">
|
||||
name
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
</td>
|
||||
<td>
|
||||
Имя целевого аккаунта.
|
||||
<br>Может быть альтернативой параметру <code>id</code>,
|
||||
за исключением случая, когда необходимо получить
|
||||
информацию о безвозвратно удалённом объекте.
|
||||
<br>Если задан совместно с параметром <code>id</code>,
|
||||
то используется для переименования (целевое имя).
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="quotas">
|
||||
quotas
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(dict)
|
||||
</td>
|
||||
<td>
|
||||
Целевые квоты.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
cpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
disks_size
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ext_traffic
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
public_ip
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
ram
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
<br><code>-1</code> - удалить квоту.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="sep_pools">
|
||||
sep_pools
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих доступные пулы СХД.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
sep_id
|
||||
</td>
|
||||
<td>
|
||||
(int)
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор системы хранения данных.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
pool_names
|
||||
</td>
|
||||
<td>
|
||||
(list)
|
||||
</td>
|
||||
<td>
|
||||
Список названий пулов системы хранения данных.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<a name="state">
|
||||
state
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
(str)
|
||||
<br>Значения:
|
||||
<br><code>absent</code>
|
||||
<br><code>absent_permanently</code>
|
||||
<br><code>confirmed</code>
|
||||
<br><code>disabled</code>
|
||||
<br><code>present</code>
|
||||
<br>Default: <code>present</code>
|
||||
</td>
|
||||
<td>
|
||||
Целевое состояние.
|
||||
<br><code>absent</code> - удалён в корзину, безвозвратно удалён
|
||||
или не существует. Если существует и не удалён, то будет удалён
|
||||
в корзину.
|
||||
<br><code>absent_permanently</code> - безвозвратно удалён или
|
||||
не существует. Если существует и не удалён или удалён в корзину,
|
||||
то будет безвозвратно удалён.
|
||||
<br> При значениях <code>absent</code> и <code>absent_permanently</code>
|
||||
использование других параметров модуля, вызывающих изменение объекта,
|
||||
не допускается.
|
||||
<br><code>confirmed</code> - включён. Если выключен, то будет включён.
|
||||
Если удалён в корзину, то будет восстановлен из корзины.
|
||||
<br><code>disabled</code> - выключен. Если включён, то будет выключен.
|
||||
Если удалён в корзину, то будет восстановлен из корзины и выключен.
|
||||
<br><code>present</code> - существует и не удалён. Если удалён в
|
||||
корзину, то будет восстановлен из корзины.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Возвращаемые значения
|
||||
|
||||
Модуль **decort_account** возвращает информацию об аккаунте в виде словаря `facts` со следующими ключами:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="6">
|
||||
Ключ
|
||||
</th>
|
||||
<th>
|
||||
Тип
|
||||
<br>данных
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
acl
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список словарей, описывающих доступы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
canBeDeleted
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Может ли быть удалён.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
right
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Права.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
type
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Тип.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
userGroupId
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя или группы пользователей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
company
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Название компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
companyurl
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
URL компании.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computeFeatures
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список дополнительных возможностей гипервизора, доступных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
computes_amount
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Количество ВМ по состоянию.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
started
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество запущенных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
stopped
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество остановленных ВМ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_parameter
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Режим выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
cpu_allocation_ratio
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Коэффициент для режима выделения ЦП.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который создал.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
createdTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время создания.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deactivationTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время выключения.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedBy
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор пользователя, который удалил.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
deletedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время удаления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
displayname
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Отображаемое имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Идентификатор.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Имя.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
resourceLimits
|
||||
</td>
|
||||
<td>
|
||||
dict
|
||||
</td>
|
||||
<td>
|
||||
Квоты на ресурсы.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_C
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество виртуальных процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_D
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём диска в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_DM
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём дисков в ГБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_I
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внешних IP-адресов.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_M
|
||||
</td>
|
||||
<td>
|
||||
float
|
||||
</td>
|
||||
<td>
|
||||
Объём оперативной памяти в МБ.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
CU_NP
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Объём трафика внешних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="5">
|
||||
gpu_units
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество графических процессоров.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
sendAccessEmails
|
||||
</td>
|
||||
<td>
|
||||
bool
|
||||
</td>
|
||||
<td>
|
||||
Отправка пользователям на эл. почту уведомлений о предоставлении доступа.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Статус.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
uniqPools
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список доступных пулов СХД.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Unix-время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
updatedTime_readable
|
||||
</td>
|
||||
<td>
|
||||
str
|
||||
</td>
|
||||
<td>
|
||||
Дата и время обновления.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vins
|
||||
</td>
|
||||
<td>
|
||||
list
|
||||
</td>
|
||||
<td>
|
||||
Список идентификаторов внутренних сетей на уровне аккаунта.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
vinses_amount
|
||||
</td>
|
||||
<td>
|
||||
int
|
||||
</td>
|
||||
<td>
|
||||
Количество внутренних сетей.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Удалить
|
||||
|
||||
#### В корзину
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent
|
||||
```
|
||||
|
||||
#### Безвозвратно
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Delete account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: absent_permanently
|
||||
```
|
||||
|
||||
### Восстановить из корзины
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Restore account from recycle bin
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: present
|
||||
```
|
||||
|
||||
### Выключить/включить
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: disabled
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
state: confirmed
|
||||
```
|
||||
|
||||
### Изменить права доступа
|
||||
|
||||
#### Отозвать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Revoke user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: revoke
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
- id: "{{ user2_id }}"
|
||||
```
|
||||
|
||||
#### Обновить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: update
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: R
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
#### Привести в соответствие
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Match user access rights
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
acl:
|
||||
mode: match
|
||||
users:
|
||||
- id: "{{ user1_id }}"
|
||||
rights: ARCXDU
|
||||
- id: "{{ user2_id }}"
|
||||
rights: RCX
|
||||
```
|
||||
|
||||
### Переименовать
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Rename account
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
name: "{{ account_new_name }}"
|
||||
```
|
||||
|
||||
### Изменить квоты
|
||||
|
||||
#### На объём дисков
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of disks size
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
disks_size: 500
|
||||
```
|
||||
|
||||
#### На количество внешних IP-адресов
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Update account quota of public IP amount
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
quotas:
|
||||
public_ip: 10
|
||||
```
|
||||
|
||||
### Выключить/включить отправку уведомлений о предоставлении доступа к ресурсам
|
||||
|
||||
#### Выключить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Disable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: false
|
||||
```
|
||||
|
||||
#### Включить
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Enable sending access emails
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
access_emails: true
|
||||
```
|
||||
|
||||
### Изменить доступные пулы СХД
|
||||
```
|
||||
- name: Example
|
||||
hosts: localhost
|
||||
tasks:
|
||||
- name: Change available sep pools
|
||||
decort_account:
|
||||
# Параметры для авторизации упущены
|
||||
id: "{{ account_id }}"
|
||||
sep_pools:
|
||||
- sep_id: 1
|
||||
pool_names:
|
||||
- pool1
|
||||
```
|
||||
3805
wiki/6.0.0/модуль-decort_account_info.md
Normal file
3805
wiki/6.0.0/модуль-decort_account_info.md
Normal file
File diff suppressed because it is too large
Load Diff
92
wiki/6.0.0/модуль-decort_bservice.md
Normal file
92
wiki/6.0.0/модуль-decort_bservice.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Модуль decort_bservice
|
||||
|
||||
## Обзор модуля decort_bservice
|
||||
|
||||
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
|
||||
|
||||
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
|
||||
|
||||
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
|
||||
|
||||
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
|
||||
|
||||
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
|
||||
|
||||
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
|
||||
Данный модуль позволяет:
|
||||
- Создавать Basic Service
|
||||
- Удалять Basic Service (безвозвратно).
|
||||
- Включать/выключать Basic Service
|
||||
- Запускать Basic Service
|
||||
- Запрашивать информацию о Basic Service.
|
||||
|
||||
|
||||
## Параметры модуля decort_bservice
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_bservice. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на Вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_bservice`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная базовая служба. Данный параметр является обязательным.|
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`<br/>Данный параметр является обязательным для указанного режима.<br/>Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.<br/>Если этот параметр не определен в _playbook_, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`. <br> Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
|
||||
| started | (bool) <br> Default: `true` | Параметр, определяющий состояние добавленных виртуальных серверов в Basic Service. Запускать их, или нет. |
|
||||
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
|
||||
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
|
||||
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
|
||||
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
|
||||
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
|
||||
| rg_name | (string) | Имя ресурсной группы базовой службы. |
|
||||
| verify_ssl | (bool)<br/>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_bservice
|
||||
|
||||
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|
||||
|name | string | Имя базовой службы.|
|
||||
| techStatus | string | Технический статус базовой службы. |
|
||||
|state | string | Статус базовой службы.|
|
||||
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
|
||||
| groups | list | Список словарей с информацией о группах базовой службы.|
|
||||
|
||||
|
||||
## Пример использования модуля decort_bservice
|
||||
|
||||
Данный пример создаёт базовую службу с именем databases.
|
||||
|
||||
```
|
||||
- name: Create Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
|
||||
Данный пример удаляет базовую службу с названием databases.
|
||||
```
|
||||
- name: Delete Basic Service
|
||||
decort_bservice:
|
||||
authenticator: jwt
|
||||
controller_url: "{{ controller_url }}"
|
||||
jwt: "{{ auth_token }}"
|
||||
state: absent
|
||||
name: databases
|
||||
rg_id: "{{ rg_id }}"
|
||||
register: db_bservice
|
||||
```
|
||||
177
wiki/6.0.0/модуль-decort_disk.md
Normal file
177
wiki/6.0.0/модуль-decort_disk.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Модуль decort_disk
|
||||
## Обзор модуля decort_disk
|
||||
|
||||
Модуль decort_disk предназначен для управления дисками и позволяет производить с ними следующие действия:
|
||||
- создавать
|
||||
- удалять (в корзину или безвозвратно)
|
||||
- восстановливать из корзины
|
||||
- изменять:
|
||||
- имя
|
||||
- размер
|
||||
- лимиты ввода/вывода
|
||||
- включать/отключать общий доступ
|
||||
|
||||
|
||||
Обратите внимание:
|
||||
|
||||
- Загрузочный диск для виртуальной машины создаётся и подключается автоматически в процессе создания этой машины.
|
||||
- Модуль decort_disk служит для управления дополнительными дисками (т.н. data-дисками);
|
||||
- Подключение дополнительных дисков, созданных посредством decort_disk, к виртуальным машинам выполняется с помощью модуля управления виртуальными машинами (см. модуль decort_kvmvm).
|
||||
|
||||
## Параметры модуля decort_disk
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля decort_disk. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_disk`
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр `name`) должно быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|
||||
|account_name | (string) | Имя аккаунта, которому принадлежит данный диск. При идентификации диска по имени (см. параметр name) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| annotation | (string)<br>Default: `Disk by decort_disk` | Текстовое описание диска. Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.|
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.|
|
||||
|app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.|
|
||||
| authenticator | Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
|
||||
|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
|
||||
| iops | (int)<br>Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
|
||||
| force_detach | (bool)<br/>Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.<br/>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `force_detach: true`. |
|
||||
|jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
|
||||
| limitIO | (dict) | Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду. Обратите внимание, что параметры с total не задаются вместе с read/write. Все возможные подпараметры можно увидеть в примерах. |
|
||||
| name | (string) | Имя диска. Для идентификации диска требуется либо его `name` и информация об аккаунте (`account_id` или `account_name`), которому принадлежит диск, либо его `id`.|
|
||||
|oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.|
|
||||
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
|
||||
| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
|
||||
| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
|
||||
| reason | (string)<br>Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
|
||||
| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
|
||||
| shareable | (bool)<br>Default: `false` | Включение/отключение общего доступа к диску.
|
||||
| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние диска. |
|
||||
| type | (string)<br>Значения:<br>`B`<br>`D`<br>Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
|
||||
| verify_ssl | (bool)<br/>Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_disk
|
||||
|
||||
Модуль decort_disk возвращает информацию о диске в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.|
|
||||
| computes | dict | Словарь, в котором ключ - идентификатор, а значение - имя виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то возвращается пустой словарь.|
|
||||
| gid | int | Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.|
|
||||
| id | int | Уникальный целочисленный идентификатор данного диска.|
|
||||
| iotune | dict | Текущие ограничения ввода/вывода диска. |
|
||||
| name | string | Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.|
|
||||
| pool | string | Имя пула на системе хранения данных, в котором размещаются ресурсы диска.|
|
||||
|sep_id | int | Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.|
|
||||
| size | int | Размер диска в ГБ.|
|
||||
| state | string | Текущий статус диска. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_disk
|
||||
|
||||
В данном примере создаётся диск размером 50ГБ (`size: 50`), с ограничением ввода/вывода в 2000 iops, на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
size: 50
|
||||
account_name: "MyAccount"
|
||||
sep_id: 1
|
||||
iops: 2000
|
||||
annotation: "Disk example"
|
||||
pool: data01
|
||||
register: my_data_disk01
|
||||
```
|
||||
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
read_bytes_sec: 10000
|
||||
write_bytes_sec: 5000
|
||||
read_iops_sec и write_iops_sec
|
||||
read_iops_sec: 2500
|
||||
write_iops_sec: 1000
|
||||
read_bytes_sec_max: 11000
|
||||
write_bytes_sec_max: 6000
|
||||
read_iops_sec_max: 3000
|
||||
write_iops_sec_max: 1500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: "DataDisk01"
|
||||
account_name: "MyAccount"
|
||||
limitIO:
|
||||
total_bytes_sec: 15000
|
||||
total_iops_sec: 3500
|
||||
total_bytes_sec_max: 17000
|
||||
total_iops_sec_max: 4500
|
||||
size_iops_sec: 1000
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
|
||||
|
||||
```
|
||||
- name: Manage disk
|
||||
decort_disk:
|
||||
authenticator: oauth2
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
id: 111
|
||||
name: "NewExampleDisk"
|
||||
size: 10
|
||||
register: my_data_disk01
|
||||
```
|
||||
|
||||
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
|
||||
|
||||
```
|
||||
- name: Manage compute
|
||||
decort_kvmvm:
|
||||
<< для краткости фрагмент опущен >>
|
||||
data_disks:
|
||||
- "{{ my_data_disk01.facts.id }}"
|
||||
<< для краткости фрагмент опущен >>
|
||||
```
|
||||
105
wiki/6.0.0/модуль-decort_group.md
Normal file
105
wiki/6.0.0/модуль-decort_group.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Модуль decort_group
|
||||
## Обзор модуля decort_group
|
||||
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
|
||||
- создать
|
||||
- получить информацию
|
||||
- запустить/остановить
|
||||
- подключить/отключить сети (для существующей группы только внутренние сети)
|
||||
- изменить
|
||||
- имя
|
||||
- объём загрузочного диска
|
||||
- количество ВМ
|
||||
- роль
|
||||
- количество виртуальных процессоров
|
||||
- объём ОЗУ
|
||||
- удалить (безвозвратно)
|
||||
|
||||
## Параметры модуля decort_group
|
||||
Ниже приведен полный список параметров для модуля **decort_group**.
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. При идентификации группы по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| account_name | (string) | Имя аккаунта. При идентификации группы по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br>`oauth2`<br>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| boot_disk | (int) | Обьём загрузочного диска. |
|
||||
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| count | (int) | Количество виртуальных машин. |
|
||||
| cpu | (int) | Количество виртуальных процессоров. |
|
||||
| driver | (string)<br>Значения:<br>`KVM_X86`<br>`SVA_KVM_X86`<br>Default: `KVM_X86` | Драйвер. |
|
||||
| id | (int) | Идентификатор группы. |
|
||||
| image_id | (int) | Идентификатор образа. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt` Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| name | (str) | Имя группы.<br>Используется для идентификации группы, если не задан параметр `id`, а также для переименования группы, если параметр `id` задан. |
|
||||
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>• `id` (int) (обязательный) - идентификатор сети |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| ram | (int) | Объём оперативной памяти. |
|
||||
| role | (string) | Тег роли. |
|
||||
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
|
||||
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_group
|
||||
|
||||
Модуль **decort_group** возвращает информацию о группе в виде словаря facts со следующими ключами:
|
||||
|
||||
|
||||
|Ключ | Тип данных | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>• `id` (int) - идентификатор ВМ<br>• `ipAddresses` (list) - список IP-адресов ВМ<br>• `name` (str) - имя ВМ<br>• `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
|
||||
| id | int | Идентификатор группы.|
|
||||
| name | string | Имя группы.|
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Состояние группы. |
|
||||
| techStatus | string | Технический статус группы. |
|
||||
|
||||
## Пример использования модуля decort_group
|
||||
|
||||
Данный пример создаёт группу с именем `test_group`.
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Create BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
boot_disk: 10
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
count: 2
|
||||
cpu: 2
|
||||
image_id: 518
|
||||
name: test_group
|
||||
networks:
|
||||
- type: VINS
|
||||
id: 1987
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
ram: 2
|
||||
verify_ssl: false
|
||||
register: group_test
|
||||
```
|
||||
|
||||
Данный пример удаляет группу с именем `test_group`.
|
||||
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Delete BS group
|
||||
decort_group:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
authenticator: oauth2
|
||||
bservice_id: 1823
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
name: test_group
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
state: absent
|
||||
verify_ssl: False
|
||||
register: group_test
|
||||
```
|
||||
53
wiki/6.0.0/модуль-decort_jwt.md
Normal file
53
wiki/6.0.0/модуль-decort_jwt.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Вспомогательный модуль для получения авторизационного JWT токена decort_jwt
|
||||
## Обзор модуля decort_jwt
|
||||
|
||||
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
|
||||
|
||||
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
|
||||
## Параметры модуля decort_jwt
|
||||
|
||||
Ниже в алфавитном порядке приведен полный список параметров для модуля **decort_jwt**. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
|
||||
`ansible-doc -t module decort_jwt`
|
||||
|
||||
|
||||
|Параметр | Тип, допустимые значения | Описание|
|
||||
| ------ | ------ | ------ |
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| validity | (int)<br>Default: `3600` | Срок действия JWT в секундах. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.<br/>Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
|
||||
## Возвращаемые значения модуля decort_jwt
|
||||
|
||||
При успешном выполнении модуль **decort_jwt** возвращает JWT-токен, который доступен по ключу `jwt` (str).
|
||||
|
||||
## Пример использования модуля decort_jwt
|
||||
|
||||
В данном примере сначала запрашивается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуальной машины в режиме авторизации `jwt` (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»).
|
||||
```
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Obtain JWT with validity of 1200 sec from the OAuth2 provider
|
||||
decort_jwt:
|
||||
app_id: "{{ my_app_id }}"
|
||||
app_secret: "{{ my_app_secret }}"
|
||||
oauth2_url: "https://sso.digitalenergy.online"
|
||||
validity: 1200
|
||||
register: my_token
|
||||
```
|
||||
```
|
||||
- name: Create VM in JWT authorization mode
|
||||
decort_kvmvm:
|
||||
authenticator: jwt
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
controller_url: "https://cloud.digitalenergy.online"
|
||||
name: NewVM01
|
||||
cpu: 2
|
||||
ram: 4096
|
||||
<<<дальнейшие детали опущены>>>
|
||||
```
|
||||
Обратите внимание, как используется JWT при создании новой ВМ (в предположении, что результат выполнения task для модуля **decort_jwt** был сохранен в переменной my_token):
|
||||
```
|
||||
jwt: "{{ my_token.jwt }}"
|
||||
```
|
||||
108
wiki/6.0.0/модуль-decort_k8s.md
Normal file
108
wiki/6.0.0/модуль-decort_k8s.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Модуль decort_k8s
|
||||
## Обзор модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
|
||||
- создать
|
||||
- получить информацию
|
||||
- отключить/включить/запустить
|
||||
- изменить группы Worker-узлов
|
||||
- удалить (в корзину или безвозвратно)
|
||||
- восстановить из корзины
|
||||
|
||||
## Параметры модуля decort_k8s
|
||||
Ниже приведен полный список параметров для модуля **decort_k8s**:
|
||||
|
||||
|
||||
| Параметр | Тип, допустимые значения | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | (int) | Идентификатор аккаунта. |
|
||||
| account_name | (string) | Имя аккаунта. |
|
||||
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
|
||||
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`. |
|
||||
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`. |
|
||||
| authenticator | (str)<br>Значения:<br/>`oauth2`<br/>`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
|
||||
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
|
||||
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
|
||||
| description | (string)<br>Default: `Created by decort ansible module` | Описание кластера. |
|
||||
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
|
||||
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
|
||||
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
|
||||
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
|
||||
| id | (int) | Идентификатор кластера Kubernetes. |
|
||||
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
|
||||
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
|
||||
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме `authenticator: jwt`. Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`. |
|
||||
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. |
|
||||
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
|
||||
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
|
||||
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
|
||||
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
|
||||
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
|
||||
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
|
||||
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
|
||||
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
|
||||
| name | (string) | Имя кластера Kubernetes. |
|
||||
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
|
||||
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
|
||||
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
|
||||
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
|
||||
| rg_id | (int) | Идентификатор ресурсной группы. |
|
||||
| rg_name | (str) | Имя ресурсной группы. |
|
||||
| started | (bool)<br>Default: `true` | Запустить кластер.<br>Используется только для существующего кластера. |
|
||||
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
|
||||
| verify_ssl | (bool)<br>Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
|
||||
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
|
||||
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
|
||||
| workers | (list) | Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`<br>• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init<br>• `cpu` (int) (необязательный) - количество виртуальных процессоров на узле; обязателен при создании группы<br>• `disk` (int) (необязательный) - объём загрузочного диска на узле; обязателен при создании группы<br>• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`<br>• `name` (string) (обязательный) - имя группы Worker-узлов<br>• `num` (int) (необязательный) - количество узлов; обязателен при создании группы<br>• `pool` (str) (необязательный) - пул СХД, заданной ключом `sep_id`; если не задан, то пул будет выбран платформой<br>• `ram` (int) (необязательный) - объём оперативной памяти на узле; обязателен при создании группы<br>• `sep_id` (int) (необязательный) - идентификатор СХД; если не задан, то используется СХД образа узла<br>• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
|
||||
|
||||
|
||||
## Возвращаемые значения модуля decort_k8s
|
||||
|
||||
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
|
||||
|
||||
|
||||
| Ключ | Тип данных | Описание |
|
||||
| ------ | ------ | ------ |
|
||||
| account_id | int | Идентификатор аккаунта. |
|
||||
| config | str | Kuber config кластера.
|
||||
| id | int | Идентификатор кластера. |
|
||||
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти
|
||||
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>• `cpu` (int) - количество виртуальных процессоров<br>• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>• `disk` (int) - объём загрузочного диска<br>• `id` (int) - идентификатор группы<br>• `labels` (list) - список строк с labels<br>• `name` (str) - имя группы<br>• `num` (int) - количество узлов<br>• `ram` (int) - объём оперативной памяти<br>• `taints` (list) - список строк с taints
|
||||
| name | string | Имя кластера. |
|
||||
| rg_id | int | Идентификатор ресурсной группы. |
|
||||
| state | string | Статус кластера. |
|
||||
| techStatus | string | Технический статус кластера. |
|
||||
| vins_id | int | Идентификатор внутренней сети кластера. |
|
||||
|
||||
|
||||
## Пример использования модуля decort_k8s
|
||||
|
||||
|
||||
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
|
||||
```
|
||||
- name: Create a k8s cluster named cluster-test
|
||||
decort_k8s:
|
||||
authenticator: jwt
|
||||
controller_url: "https://ds1.digitalenergy.online"
|
||||
getConfig: true
|
||||
jwt: "{{ token.jwt }}"
|
||||
k8ci_id: 18
|
||||
name: cluster-test
|
||||
rg_id: 125
|
||||
workers:
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg1
|
||||
num: 1
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
- cpu: 10
|
||||
disk: 10
|
||||
name: wg2
|
||||
num: 2
|
||||
pool: null
|
||||
ram: 1024
|
||||
sep_id: null
|
||||
register: k8s_cluster
|
||||
```
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user