diff --git a/CHANGELOG.md b/CHANGELOG.md
index b887a29..667ca8c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,9 @@
-# Список изменений в версии 5.4.1
+# Список изменений в версии 5.5.0
-## Исправления
+## Обновления
+
+### Модуль decort_account
-### Глобальные
| Идентификатор
задачи | Описание |
| --- | --- |
-| BANS-495 | Часть запросов к API завершались ошибкой Python TypeError. |
-| BANS-496 | Поиск аккаунта в части модулей завершался ошибкой запроса к API.
\ No newline at end of file
+| BANS-482
BANS-483
BANS-484
BANS-485
BANS-486 | Добавлен новый модуль **decort_account**, который позволяет выполнять следующие действия над аккаунтом:
• удалить в корзину
• удалить безвозвратно
• восстановить из корзины
• выключить/включить
• изменить права доступа
• изменить имя
• изменить квоты
• выключить/включить отправку пользователям на эл. почту уведомлений о предоставлении доступа к ресурсам |
diff --git a/README.md b/README.md
index 5ccddcd..bfb54e2 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
| Версия платформы | Версия модулей Ansible |
| :---: | :---: |
-| 4.0.0 | 5.4.x, 5.3.x |
+| 4.0.0 | 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 |
diff --git a/library/decort_account.py b/library/decort_account.py
new file mode 100644
index 0000000..3a64bbd
--- /dev/null
+++ b/library/decort_account.py
@@ -0,0 +1,355 @@
+#!/usr/bin/python
+
+# Copyright: ...
+# ...
+
+DOCUMENTATION = r'''
+---
+module: decort_account
+
+version_added: "2.16"
+
+description: See L(Module Documentation,https://repository.basistech.ru/BASIS/decort-ansible/wiki/Home).
+'''
+
+# EXAMPLES = r'''
+# '''
+
+# RETURN = r'''
+# '''
+
+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',
+ ),
+ ),
+ 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]
+
+ return result_args
+
+
+def main():
+ DecortAccount().run()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/library/decort_account_info.py b/library/decort_account_info.py
index 49cd1d1..a153624 100644
--- a/library/decort_account_info.py
+++ b/library/decort_account_info.py
@@ -18,52 +18,22 @@ description: See L(Module Documentation,https://repository.basistech.ru/BASIS/de
# RETURN = r'''
# '''
-from ansible.module_utils.basic import AnsibleModule, env_fallback
+from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.decort_utils import DecortController
class DecortAccountInfo(DecortController):
def __init__(self):
- amodule = AnsibleModule(**self.amodule_init_args)
-
- super().__init__(amodule)
-
- self.id, self.facts = self.account_find(
- account_name=amodule.params['name'],
- account_id=amodule.params['id'],
- audits=amodule.params['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=amodule.params['resource_consumption'],
- resource_groups_args=self.mapped_rg_args,
- vinses_args=self.mapped_vinses_args,
- fail_if_not_found=True,
- )
+ super().__init__(AnsibleModule(**self.amodule_init_args))
@property
def amodule_init_args(self) -> dict:
- return dict(
+ return self.pack_amodule_init_args(
argument_spec=dict(
- app_id=dict(
- type='str',
- fallback=(env_fallback, ['DECORT_APP_ID'])
- ),
- app_secret=dict(
- type='str',
- fallback=(env_fallback, ['DECORT_APP_SECRET']),
- no_log=True
- ),
audits=dict(
type='bool',
default=False
),
- authenticator=dict(
- type='str',
- required=True,
- choices=['oauth2', 'jwt']
- ),
computes=dict(
type='dict',
options=dict(
@@ -127,10 +97,6 @@ class DecortAccountInfo(DecortController):
),
),
),
- controller_url=dict(
- type='str',
- required=True
- ),
disks=dict(
type='dict',
options=dict(
@@ -278,18 +244,9 @@ class DecortAccountInfo(DecortController):
),
),
),
- jwt=dict(
- type='str',
- fallback=(env_fallback, ['DECORT_JWT']),
- no_log=True
- ),
name=dict(
type='str',
),
- oauth2_url=dict(
- type='str',
- fallback=(env_fallback, ['DECORT_OAUTH2_URL'])
- ),
resource_groups=dict(
type='dict',
options=dict(
@@ -348,10 +305,6 @@ class DecortAccountInfo(DecortController):
type='bool',
default=False
),
- verify_ssl=dict(
- type='bool',
- default=True
- ),
vinses=dict(
type='dict',
options=dict(
@@ -409,11 +362,6 @@ class DecortAccountInfo(DecortController):
required_one_of=[
('id', 'name')
],
- required_if=[
- ('authenticator', 'oauth2',
- ('oauth2_url', 'app_id', 'app_secret')),
- ('authenticator', 'jwt', ('jwt',))
- ],
supports_check_mode=True,
)
@@ -426,7 +374,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['computes']
+ input_args = self.aparams['computes']
if not input_args:
return input_args
@@ -464,7 +412,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['disks']
+ input_args = self.aparams['disks']
if not input_args:
return input_args
@@ -496,7 +444,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['flip_groups']
+ input_args = self.aparams['flip_groups']
if not input_args:
return input_args
@@ -525,7 +473,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['images']
+ input_args = self.aparams['images']
if not input_args:
return input_args
@@ -557,7 +505,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['resource_groups']
+ input_args = self.aparams['resource_groups']
if not input_args:
return input_args
@@ -595,7 +543,7 @@ class DecortAccountInfo(DecortController):
(excluding for `account_id`).
"""
- input_args = self.amodule.params['vinses']
+ input_args = self.aparams['vinses']
if not input_args:
return input_args
@@ -618,14 +566,28 @@ class DecortAccountInfo(DecortController):
return mapped_args
- def exit(self):
- self.result['facts'] = self.facts
- self.amodule.exit_json(**self.result)
+ 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():
- decort_account_info = DecortAccountInfo()
- decort_account_info.exit()
+ DecortAccountInfo().run()
if __name__ == '__main__':
diff --git a/module_utils/decort_utils.py b/module_utils/decort_utils.py
index 84eaf1b..12ea26a 100644
--- a/module_utils/decort_utils.py
+++ b/module_utils/decort_utils.py
@@ -29,13 +29,13 @@ Requirements:
"""
import json
-from typing import Callable
+from typing import Callable, Iterable
import jwt
import netaddr
import time
import requests
-from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.basic import AnsibleModule, env_fallback
class DecortController(object):
"""DecortController is a utility class that holds target controller context and handles API requests formatting
@@ -161,7 +161,111 @@ class DecortController(object):
VM_RESIZE_DOWN = 1
VM_RESIZE_UP = 2
- def __init__(self, arg_amodule):
+ class MESSAGES:
+ @staticmethod
+ def obj_not_found(obj: str, id: None | int = None) -> str:
+ with_id = f' with ID={id}' if id else ''
+ return (
+ f'Current user does not have access to the requested {obj}'
+ f'{with_id} or non-existent {obj} specified.'
+ )
+
+ @staticmethod
+ def obj_deleted(obj: str, id: int, permanently=False, already=False):
+ how_deleted = ' permanently' if permanently else ' to recycle bin'
+ already_text = ' already' if already else ''
+ return (
+ f'The {obj} with ID={id} has{already_text} been'
+ f' deleted{how_deleted}.'
+ )
+
+ @staticmethod
+ def obj_disabled(obj: str, id: int):
+ return f'The {obj} with ID={id} has been disabled.'
+
+ @staticmethod
+ def obj_enabled(obj: str, id: int):
+ return f'The {obj} with ID={id} has been enabled.'
+
+ @staticmethod
+ def obj_not_restored(obj: str, id: int):
+ return (
+ f'The {obj} with ID={id} cannot be restored'
+ f' because it is not in recycle bin.'
+ )
+
+ @staticmethod
+ def obj_restored(obj: str, id: int):
+ return f'The {obj} with ID={id} has been restored.'
+
+ @staticmethod
+ def access_rights_granted(obj: str, id: int, user: str, rights: str):
+ return (
+ f'User "{user}" has been granted access rights "{rights}"'
+ f' to the {obj} with ID={id}.'
+ )
+
+ @staticmethod
+ def access_rights_updated(obj: str, id: int, user: str, rights: str):
+ return (
+ f'Access rights to the {obj} with ID={id} for user "{user}"'
+ f' has been updated to "{rights}".'
+ )
+
+ @staticmethod
+ def access_rights_revoked(obj: str, id: int, user: str):
+ return (
+ f'Access rights to the {obj} with ID={id} for user "{user}"'
+ f' has been revoked.'
+ )
+
+ @staticmethod
+ def obj_renamed(obj: str, id: int, new_name: str):
+ return (
+ f'The {obj} with ID={id} has been renamed to "{new_name}".'
+ )
+
+ @staticmethod
+ def obj_smth_disabled(obj: str, id: int, smth: str):
+ return (
+ f'{smth[0].upper()}{smth[1:]} has been disabled for the {obj}'
+ f' with ID={id}.'
+ )
+
+ @staticmethod
+ def obj_smth_enabled(obj: str, id: int, smth: str):
+ return (
+ f'{smth[0].upper()}{smth[1:]} has been enabled for the {obj}'
+ f' with ID={id}.'
+ )
+
+ @staticmethod
+ def obj_smth_changed(obj: str, id: int, smth: str,
+ new_value: str | int | float):
+ if isinstance(new_value, str):
+ value_str = f'"{new_value}"'
+ else:
+ value_str = new_value
+ return (
+ f'{smth[0].upper()}{smth[1:]} has been changed to {value_str}'
+ f' for the {obj} with ID={id}.'
+ )
+
+ @staticmethod
+ def method_in_check_mode(method_name: str, method_args: tuple,
+ method_kwargs: dict) -> str:
+ msg = (
+ f'The method "{method_name}" was called in check mode'
+ f' with arguments:'
+ )
+ for arg in method_args:
+ msg += f'\n {arg}'
+ for k, v in method_kwargs.items():
+ msg += f'\n {k}={v}'
+
+ return msg
+
+ def __init__(self, arg_amodule: AnsibleModule):
"""
Instantiate DecortController() class at the beginning of any DECORT module run to have the following:
- check authentication parameters to make sure all required parameters are properly specified
@@ -175,6 +279,7 @@ class DecortController(object):
"""
self.amodule = arg_amodule # AnsibleModule class instance
+ self.aparams = self.amodule.params
# Note that the value for 'changed' key is by default set to 'False'. If you plan to manage value of 'changed'
# key outside of DecortController() class, make sure you only update to 'True' when you really change the state
@@ -278,6 +383,29 @@ class DecortController(object):
def new_f(self, *args, **kwargs):
self.result['waypoints'] += f' -> {orig_f.__name__}'
return orig_f(self, *args, **kwargs)
+ new_f.__name__ = orig_f.__name__
+ return new_f
+
+ @staticmethod
+ def checkmode(orig_f: Callable) -> Callable:
+ """
+ A decorator for methods that should not executed in
+ Ansible Check Mode.
+ Instead of executing these methods, a message will be added
+ with the method name and the arguments with which it was called.
+ """
+ def new_f(self, *args, **kwargs):
+ if self.amodule.check_mode:
+ self.message(
+ self.MESSAGES.method_in_check_mode(
+ method_name=orig_f.__name__,
+ method_args=args,
+ method_kwargs=kwargs,
+ )
+ )
+ else:
+ return orig_f(self, *args, **kwargs)
+ new_f.__name__ = orig_f.__name__
return new_f
@staticmethod
@@ -286,6 +414,102 @@ class DecortController(object):
return time.strftime(str_format, time.gmtime(sec))
return ''
+ @property
+ def common_amodule_init_args(self) -> dict:
+ return dict(
+ argument_spec=dict(
+ app_id=dict(
+ type='str',
+ fallback=(env_fallback, ['DECORT_APP_ID'])
+ ),
+ app_secret=dict(
+ type='str',
+ fallback=(env_fallback, ['DECORT_APP_SECRET']),
+ no_log=True
+ ),
+ authenticator=dict(
+ type='str',
+ required=True,
+ choices=['oauth2', 'jwt']
+ ),
+ controller_url=dict(
+ type='str',
+ required=True
+ ),
+ jwt=dict(
+ type='str',
+ fallback=(env_fallback, ['DECORT_JWT']),
+ no_log=True
+ ),
+ oauth2_url=dict(
+ type='str',
+ fallback=(env_fallback, ['DECORT_OAUTH2_URL'])
+ ),
+ verify_ssl=dict(
+ type='bool',
+ default=True
+ ),
+ ),
+ required_if=[
+ ('authenticator', 'oauth2',
+ ('oauth2_url', 'app_id', 'app_secret')),
+ ('authenticator', 'jwt', ('jwt',))
+ ],
+ )
+
+ def set_changed(self):
+ self.result['changed'] = True
+
+ def exit(self, fail=False):
+ """
+ Append the dictionary `self.facts` to the dictionary
+ `self.result` and call `self.amodule.exit_json(**self.result)`
+ or `self.amodule.fail_json(**self.result)` if `fail=True`.
+ """
+
+ if getattr(self, 'facts', None):
+ self.result['facts'] = getattr(self, 'facts')
+ else:
+ self.result['facts'] = dict()
+
+ if fail:
+ self.amodule.fail_json(**self.result)
+ else:
+ self.amodule.exit_json(**self.result)
+
+ def message(self, msg: str):
+ """
+ Append message to the new line of the string
+ `self.result['msg']`.
+ """
+ if self.result.get('msg'):
+ self.result['msg'] += f'\n{msg}'
+ else:
+ self.result['msg'] = msg
+
+ def pack_amodule_init_args(self, **kwargs) -> dict:
+ """
+ Pack arguments for creating AnsibleModule object.
+
+ @param (dict) kwargs: a dictionary with AnsibleModule
+ constructor arguments to be merged with
+ the dictionary `self.common_amodule_init_args`.
+ """
+
+ amodule_init_args = self.common_amodule_init_args
+
+ for arg_name in kwargs.keys():
+ if amodule_init_args.get(arg_name):
+ if isinstance(amodule_init_args[arg_name], dict):
+ amodule_init_args[arg_name].update(kwargs[arg_name])
+ continue
+ if isinstance(amodule_init_args[arg_name], list):
+ amodule_init_args[arg_name].extend(kwargs[arg_name])
+ continue
+ amodule_init_args[arg_name] = kwargs[arg_name]
+
+ return amodule_init_args
+
def check_amodule_argument(self, arg_name, abort=True):
"""Checks if the argument identified by the arg_name is defined in the module parameters.
@@ -2072,6 +2296,7 @@ class DecortController(object):
self.result['changed'] = True
return
+ @waypoint
def account_find(
self,
account_name: str = '',
@@ -2150,8 +2375,6 @@ class DecortController(object):
0 and empty dict otherwise (if `fail_if_not_found=False`).
"""
- self.result['waypoints'] = "{} -> {}".format(self.result['waypoints'], "account_find")
-
if not account_id and not account_name:
self.result['msg'] = ('Cannot find account if account name and'
' id are not specified.')
@@ -2174,6 +2397,17 @@ class DecortController(object):
if account['name'] == account_name:
_account_id = account['id']
break
+ else:
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/listDeleted',
+ arg_params=api_params
+ )
+ deleted_accounts_list = api_resp.json()['data']
+ for account in deleted_accounts_list:
+ if account['name'] == account_name:
+ _account_id = account['id']
+ break
if _account_id:
api_params = {
@@ -2190,10 +2424,10 @@ class DecortController(object):
if not account_details:
if fail_if_not_found:
- self.result['msg'] = ("Current user does not have access to"
- " the requested account or non-existent"
- " account specified.")
- self.amodule.fail_json(**self.result)
+ self.message(
+ self.MESSAGES.obj_not_found(obj='account', id=_account_id)
+ )
+ self.exit(fail=True)
return 0, None
account_details['computes_amount'] = account_details.pop('computes')
@@ -2693,6 +2927,344 @@ class DecortController(object):
return audits
+ @waypoint
+ @checkmode
+ def account_delete(self, account_id: int, permanently=False) -> None:
+ """
+ Implementation of functionality of the API method
+ `/cloudapi/account/delete`.
+
+ The method `self.exit(fail=True)` will be
+ called if account is not found.
+ """
+
+ OBJ = 'account'
+
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/delete',
+ arg_params={
+ 'accountId': account_id,
+ 'permanently': permanently,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ self.MESSAGES.obj_not_found(obj=OBJ, id=account_id)
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.obj_deleted(
+ obj=OBJ,
+ id=account_id,
+ permanently=permanently)
+ )
+ self.set_changed()
+
+ @waypoint
+ @checkmode
+ def account_restore(self, account_id: int) -> None:
+ """
+ Implementation of functionality of the API method
+ `/cloudapi/account/restore`.
+
+ The method `self.exit(fail=True)` will be
+ called if account is not found.
+ """
+
+ OBJ = 'account'
+
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/restore',
+ arg_params={
+ 'accountId': account_id,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ self.MESSAGES.obj_not_found(obj=OBJ, id=account_id)
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.obj_restored(
+ obj=OBJ,
+ id=account_id,
+ )
+ )
+ self.set_changed()
+
+ @waypoint
+ @checkmode
+ def account_disable(self, account_id: int) -> None:
+ """
+ Implementation of functionality of the API method
+ `/cloudapi/account/disable`.
+
+ The method `self.exit(fail=True)` will be
+ called if account is not found.
+ """
+
+ OBJ = 'account'
+
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/disable',
+ arg_params={
+ 'accountId': account_id,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ self.MESSAGES.obj_not_found(obj=OBJ, id=account_id)
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.obj_disabled(
+ obj=OBJ,
+ id=account_id,
+ )
+ )
+ self.set_changed()
+
+ @waypoint
+ @checkmode
+ def account_enable(self, account_id: int) -> None:
+ """
+ Implementation of functionality of the API method
+ `/cloudapi/account/enable`.
+
+ The method `self.exit(fail=True)` will be
+ called if account is not found.
+ """
+
+ OBJ = 'account'
+
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/enable',
+ arg_params={
+ 'accountId': account_id,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ self.MESSAGES.obj_not_found(obj=OBJ, id=account_id)
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.obj_enabled(
+ obj=OBJ,
+ id=account_id,
+ )
+ )
+ self.set_changed()
+
+ @waypoint
+ @checkmode
+ def account_change_acl(self, account_id: int,
+ add_users: None | dict[str, str] = None,
+ del_users: None | Iterable[str] = None,
+ upd_users: None | dict[str, str] = None) -> None:
+ """
+ Implementation of the functionality of API methods
+ `/cloudapi/account/addUser`, `/cloudapi/account/deleteUser`
+ and `/cloudapi/account/updateUser`.
+
+ The method `self.exit(fail=True)` will be
+ called if account or user is not found.
+
+ @param add_users: a dictionary where the key is user ID
+ and the value is user access rights.
+
+ @param upd_users: a dictionary where the key is user ID
+ and the value is new user access rights.
+
+ @param del_users: an Iterable object where the elements
+ are user IDs.
+ """
+
+ OBJ = 'account'
+
+ for user_id, rights in add_users.items() if add_users else '':
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/addUser',
+ arg_params={
+ 'accountId': account_id,
+ 'userId': user_id,
+ 'accesstype': rights,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ f'User "{user_id}" or account with ID={account_id}'
+ f' not found. API response text: {api_resp.text}'
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.access_rights_granted(
+ obj=OBJ,
+ id=account_id,
+ user=user_id,
+ rights=rights,
+ )
+ )
+
+ self.set_changed()
+
+ for user_id, rights in upd_users.items() if upd_users else '':
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/updateUser',
+ arg_params={
+ 'accountId': account_id,
+ 'userId': user_id,
+ 'accesstype': rights,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ f'User "{user_id}" or account with ID={account_id}'
+ f' not found. API response text: {api_resp.text}'
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.access_rights_updated(
+ obj=OBJ,
+ id=account_id,
+ user=user_id,
+ rights=rights,
+ )
+ )
+
+ self.set_changed()
+
+ for user_id in del_users if del_users else '':
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/deleteUser',
+ arg_params={
+ 'accountId': account_id,
+ 'userId': user_id,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ f'User "{user_id}" not found.'
+ f' API response text: {api_resp.text}'
+ )
+ self.exit(fail=True)
+
+ self.message(
+ self.MESSAGES.access_rights_revoked(
+ obj=OBJ,
+ id=account_id,
+ user=user_id,
+ )
+ )
+
+ self.set_changed()
+
+ @waypoint
+ @checkmode
+ def account_update(self, account_id: int,
+ access_emails: None | bool = None,
+ name: None | str = None,
+ cpu_quota: None | int = None,
+ disks_size_quota: None | int = None,
+ ext_traffic_quota: None | int = None,
+ gpu_quota: None | int = None,
+ public_ip_quota: None | int = None,
+ ram_quota: None | int = None,) -> None:
+ """
+ Implementation of functionality of the API method
+ `/cloudapi/account/update`.
+
+ The method `self.exit(fail=True)` will be
+ called if account is not found.
+ """
+
+ OBJ = 'account'
+
+ api_resp = self.decort_api_call(
+ arg_req_function=requests.post,
+ arg_api_name='/restmachine/cloudapi/account/update',
+ arg_params={
+ 'accountId': account_id,
+ 'gpu_units': gpu_quota,
+ 'maxCPUCapacity': cpu_quota,
+ 'maxMemoryCapacity': ram_quota,
+ 'maxNetworkPeerTransfer': ext_traffic_quota,
+ 'maxNumPublicIP': public_ip_quota,
+ 'maxVDiskCapacity': disks_size_quota,
+ 'name': name,
+ 'sendAccessEmails': access_emails,
+ },
+ not_fail_codes=[404]
+ )
+
+ if api_resp.status_code == 404:
+ self.message(
+ self.MESSAGES.obj_not_found(obj=OBJ, id=account_id)
+ )
+ self.exit(fail=True)
+
+ if access_emails is not None:
+ smth = 'sending access emails'
+ if access_emails:
+ self.message(
+ self.MESSAGES.obj_smth_enabled(obj=OBJ, id=account_id,
+ smth=smth)
+ )
+ else:
+ self.message(
+ self.MESSAGES.obj_smth_disabled(obj=OBJ, id=account_id,
+ smth=smth)
+ )
+ if name is not None:
+ self.message(
+ self.MESSAGES.obj_renamed(obj=OBJ, id=account_id,
+ new_name=name)
+ )
+ quotas = {
+ 'CPU quota': cpu_quota,
+ 'disks size quota': disks_size_quota,
+ 'external networks traffic quota': ext_traffic_quota,
+ 'GPU quota': gpu_quota,
+ 'public IP amount quota': public_ip_quota,
+ 'RAM quota': ram_quota,
+ }
+ for q_name, q_value in quotas.items():
+ if q_value is not None:
+ self.message(
+ self.MESSAGES.obj_smth_changed(obj=OBJ, id=account_id,
+ smth=q_name,
+ new_value=q_value)
+ )
+
+ self.set_changed()
+
###################################
# GPU resource manipulation methods
###################################
diff --git a/wiki/5.4.0/модуль-decort_account_info.md b/wiki/5.4.0/модуль-decort_account_info.md
index 3510e73..74f2c98 100644
--- a/wiki/5.4.0/модуль-decort_account_info.md
+++ b/wiki/5.4.0/модуль-decort_account_info.md
@@ -1540,7 +1540,7 @@
int
- Объём дисков в ГБ.
+ Объём диска в ГБ.
|
@@ -1552,7 +1552,7 @@
int
- Объём диска в ГБ.
+ Объём дисков в ГБ.
|
diff --git a/wiki/5.5.0/Home.md b/wiki/5.5.0/Home.md
new file mode 100644
index 0000000..90df282
--- /dev/null
+++ b/wiki/5.5.0/Home.md
@@ -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) - управление аккаунтами
\ No newline at end of file
diff --git a/wiki/5.5.0/введение.md b/wiki/5.5.0/введение.md
new file mode 100644
index 0000000..d7b4129
--- /dev/null
+++ b/wiki/5.5.0/введение.md
@@ -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
+```
+
+## Авторизация
+
+### Общие параметры модулей для авторизации
+
+
+
+ Параметр |
+ Тип |
+ Описание |
+
+
+
+ app_id
+ |
+
+ (str)
+ |
+
+ Идентификатор приложения, использующийся для подключения к контроллеру
+ облачной платформы DECORT в режиме authenticator: oauth2 .
+ Данный параметр является обязательным для указанного режима. Если
+ параметр не задан в playbook, модуль будет использовать значение
+ переменной окружения DECORT_APP_ID .
+ |
+
+
+
+ app_secret
+ |
+
+ (str)
+ |
+
+ Секретный ключ приложения, который используется для подключения к
+ контроллеру облачной платформы DECORT в режиме
+ authenticator: oauth2 . Данный параметр является
+ обязательным для указанного режима. Так как он содержит секретную
+ информацию, то его не рекомендуется задавать непосредственно в
+ playbook. Если параметр не задан в playbook, то модуль будет
+ использовать значение переменной окружения
+ DECORT_APP_SECRET .
+ |
+
+
+
+ authenticator
+ |
+
+ (str)
+ Значения:
+
oauth2
+
jwt
+ |
+
+ Режим аутентификации при подключении к контроллеру облачной платформы
+ DECORT. Обязательный параметр.
+ |
+
+
+
+ controller_url
+ |
+
+ (str)
+ |
+
+ URL контроллера, соответствующего экземпляру облачной платформы
+ DECORT. Данный параметр является обязательным.
+ |
+
+
+
+ jwt
+ |
+
+ (str)
+ |
+
+ JSON Web Token (JWT), который будет использоваться для подключения
+ к контроллеру облачной платформы DECORT в режиме
+ authenticator: jwt . Данный параметр является
+ обязательным для указанного режима. Так как он содержит
+ потенциально секретную информацию, а сам JWT, как правило,
+ имеет ограниченное время жизни, то его не рекомендуется задавать
+ непосредственно в playbook. Если этот параметр не определен в
+ playbook, то модуль будет использовать значение переменной
+ окружения DECORT_JWT .
+ |
+
+
+
+ oauth2_url
+ |
+
+ (str)
+ |
+
+ URL авторизационного сервера, работающего по протоколу Oauth2,
+ который должен использоваться в режиме
+ authenticator: oauth2 . Данный параметр является
+ обязательным для указанного режима. Если параметр не задан в
+ playbook, модуль будет использовать значение переменной
+ окружения DECORT_OAUTH2_URL .
+ |
+
+
+
+ verify_ssl
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Позволяет отключить проверку SSL сертификатов при выполнении API
+ вызовов в адрес контроллера облачной инфраструктуры, например,
+ при работе с изолированной облачной инфраструктурой, использующей
+ самоподписанные сертификаты. Применяйте данный параметр с
+ осторожностью, предпочтительно в защищенных средах.
+ |
+
+
+
+### Пример авторизации с помощью 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 }}"
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_account.md b/wiki/5.5.0/модуль-decort_account.md
new file mode 100644
index 0000000..f320029
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_account.md
@@ -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#общие-параметры-модулей-для-авторизации)):
+
+
+
+ Параметр |
+ Тип |
+ Описание |
+
+
+
+
+ access_emails
+
+ |
+
+ (bool)
+ |
+
+ Выключение/включение отправки пользователям на эл. почту уведомлений о предоставлении доступа к ресурсам.
+ |
+
+
+
+
+ acl
+
+ |
+
+ (dict)
+ |
+
+ Целевые права доступа.
+ |
+
+
+ |
+
+ mode
+ |
+
+ (str)
+ Значения:
+
match
+
revoke
+
update
+ Default: update
+ |
+
+ Режим изменения прав доступа для указанных пользователей.
+
match - привести в соответствие для указанных
+ пользователей, удалить предоставленные для других.
+
revoke - отозвать для указанных пользователей,
+ если предоставлены.
+
update - привести в соответствие для указанных
+ пользователей, оставить без изменения предоставленные для
+ других.
+ |
+
+
+ |
+
+ users
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих права доступа пользователей.
+ Обязательный параметр.
+ |
+
+
+ |
+ |
+
+ rights
+ |
+
+ (str)
+ Значения:
+
R
+
RCX
+
ARCXDU
+ Default: R
+ |
+
+ Права доступа.
+ При mode: revoke не используется.
+ При mode: match и mode: update
+ права ARCXDU считаются соответствующими
+ правам CXDRAU .
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (str)
+ |
+
+ Идентификатор пользователя.
+ Обязательный параметр.
+ |
+
+
+
+ id
+ |
+
+ (int)
+ |
+
+ Идентификатор целевого аккаунта.
+ Обязательный параметр, если не задан параметр
+ name .
+ |
+
+
+
+
+ name
+
+ |
+
+ (str)
+ |
+
+ Имя целевого аккаунта.
+ Может быть альтернативой параметру id ,
+ за исключением случая, когда необходимо получить
+ информацию о безвозвратно удалённом объекте.
+ Если задан совместно с параметром id ,
+ то используется для переименования (целевое имя).
+ |
+
+
+
+
+ quotas
+
+ |
+
+ (dict)
+ |
+
+ Целевые квоты.
+ |
+
+
+ |
+
+ cpu
+ |
+
+ (int)
+ |
+
+ Количество виртуальных процессоров.
+
-1 - удалить квоту.
+ |
+
+
+ |
+
+ disks_size
+ |
+
+ (int)
+ |
+
+ Объём дисков в ГБ.
+
-1 - удалить квоту.
+ |
+
+
+ |
+
+ ext_traffic
+ |
+
+ (int)
+ |
+
+ Объём трафика внешних сетей.
+
-1 - удалить квоту.
+ |
+
+
+ |
+
+ gpu
+ |
+
+ (int)
+ |
+
+ Количество графических процессоров.
+
-1 - удалить квоту.
+ |
+
+
+ |
+
+ public_ip
+ |
+
+ (int)
+ |
+
+ Количество внешних IP-адресов.
+
-1 - удалить квоту.
+ |
+
+
+
+ |
+
+ ram
+ |
+
+ (int)
+ |
+
+ Объём оперативной памяти в МБ.
+
-1 - удалить квоту.
+ |
+
+
+
+
+ state
+
+ |
+
+ (str)
+ Значения:
+
absent
+
absent_permanently
+
confirmed
+
disabled
+
present
+ Default: present
+ |
+
+ Целевое состояние.
+
absent - удалён в корзину, безвозвратно удалён
+ или не существует. Если существует и не удалён, то будет удалён
+ в корзину.
+
absent_permanently - безвозвратно удалён или
+ не существует. Если существует и не удалён или удалён в корзину,
+ то будет безвозвратно удалён.
+ При значениях absent и absent_permanently
+ использование других параметров модуля, вызывающих изменение объекта,
+ не допускается.
+
confirmed - включён. Если выключен, то будет включён.
+ Если удалён в корзину, то будет восстановлен из корзины.
+
disabled - выключен. Если включён, то будет выключен.
+ Если удалён в корзину, то будет восстановлен из корзины и выключен.
+
present - существует и не удалён. Если удалён в
+ корзину, то будет восстановлен из корзины.
+ |
+
+
+
+## Возвращаемые значения
+
+Модуль **decort_account** возвращает информацию об аккаунте в виде словаря `facts` со следующими ключами:
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ acl
+ |
+
+ list
+ |
+
+ Список словарей, описывающих доступы пользователей.
+ |
+
+
+ |
+
+ canBeDeleted
+ |
+
+ bool
+ |
+
+ Может ли быть удалён.
+ |
+
+
+ |
+
+ explicit
+ |
+
+ bool
+ |
+
+ Видимость аккаунта.
+ |
+
+
+ |
+
+ right
+ |
+
+ str
+ |
+
+ Права.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ type
+ |
+
+ str
+ |
+
+ Тип.
+ |
+
+
+ |
+
+ userGroupId
+ |
+
+ str
+ |
+
+ Идентификатор пользователя или группы пользователей.
+ |
+
+
+
+ company
+ |
+
+ str
+ |
+
+ Название компании.
+ |
+
+
+
+ companyurl
+ |
+
+ str
+ |
+
+ URL компании.
+ |
+
+
+
+ computeFeatures
+ |
+
+ list
+ |
+
+ Список дополнительных возможностей гипервизора, доступных ВМ.
+ |
+
+
+
+ computes_amount
+ |
+
+ dict
+ |
+
+ Количество ВМ по состоянию.
+ |
+
+
+ |
+
+ started
+ |
+
+ int
+ |
+
+ Количество запущенных ВМ.
+ |
+
+
+ |
+
+ stopped
+ |
+
+ int
+ |
+
+ Количество остановленных ВМ.
+ |
+
+
+
+ cpu_allocation_parameter
+ |
+
+ str
+ |
+
+ Режим выделения ЦП.
+ |
+
+
+
+ cpu_allocation_ratio
+ |
+
+ str
+ |
+
+ Коэффициент для режима выделения ЦП.
+ |
+
+
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+
+ deactivationTime
+ |
+
+ int
+ |
+
+ Unix-время выключения.
+ |
+
+
+
+ deactivationTime_readable
+ |
+
+ str
+ |
+
+ Дата и время выключения.
+ |
+
+
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+
+ displayname
+ |
+
+ str
+ |
+
+ Отображаемое имя.
+ |
+
+
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+
+ resourceLimits
+ |
+
+ dict
+ |
+
+ Квоты на ресурсы.
+ |
+
+
+ |
+
+ CU_C
+ |
+
+ int
+ |
+
+ Количество виртуальных процессоров.
+ |
+
+
+ |
+
+ CU_D
+ |
+
+ int
+ |
+
+ Объём диска в ГБ.
+ |
+
+
+ |
+
+ CU_DM
+ |
+
+ int
+ |
+
+ Объём дисков в ГБ.
+ |
+
+
+ |
+
+ CU_I
+ |
+
+ int
+ |
+
+ Количество внешних IP-адресов.
+ |
+
+
+ |
+
+ CU_M
+ |
+
+ float
+ |
+
+ Объём оперативной памяти в МБ.
+ |
+
+
+ |
+
+ CU_NP
+ |
+
+ int
+ |
+
+ Объём трафика внешних сетей.
+ |
+
+
+ |
+
+ gpu_units
+ |
+
+ int
+ |
+
+ Количество графических процессоров.
+ |
+
+
+
+ sendAccessEmails
+ |
+
+ bool
+ |
+
+ Отправка пользователям на эл. почту уведомлений о предоставлении доступа.
+ |
+
+
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+
+ uniqPools
+ |
+
+ list
+ |
+
+ Список доступных пулов СХД.
+ |
+
+
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+
+ vins
+ |
+
+ list
+ |
+
+ Список идентификаторов внутренних сетей на уровне аккаунта.
+ |
+
+
+
+ vinses_amount
+ |
+
+ int
+ |
+
+ Количество внутренних сетей.
+ |
+
+
+
+## Примеры использования
+
+### Удалить
+
+#### В корзину
+```
+- 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
+```
diff --git a/wiki/5.5.0/модуль-decort_account_info.md b/wiki/5.5.0/модуль-decort_account_info.md
new file mode 100644
index 0000000..777ef36
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_account_info.md
@@ -0,0 +1,3843 @@
+# Модуль decort_account_info
+## Обзор модуля
+
+Модуль **decort_account_info** предназначен для получения следующей информации об аккаунте:
+- **основная информация** (см. [возвращаемые значения](#основная-информация) и [примеры](#получение-основной-информации-об-аккаунте))
+- **используемые и зарезервированные ресурсы** (см. [параметр resource_consumption](#resource_consumption), [возвращаемые значения](#используемые-и-зарезервированные-ресурсы) и [примеры](#получение-информации-об-используемых-и-зарезервированных-ресурсах-аккаунта))
+- **ресурсные группы** (см. [параметр resource_groups](#resource_groups), [возвращаемые значения](#ресурсные-группы) и [примеры](#получение-информации-о-ресурсных-группах))
+- **виртуальные машины** (см. [параметр computes](#computes), [возвращаемые значения](#виртуальные-машины) и [примеры](#получение-информации-о-виртуальных-машинах))
+- **внутренние сети** (см. [параметр vinses](#vinses), [возвращаемые значения](#внутренние-сети) и [примеры](#получение-информации-о-внутренних-сетях))
+- **диски** (см. [параметр disks](#disks), [возвращаемые значения](#диски) и [примеры](#получение-информации-о-дисках))
+- **образы** (см. [параметр images](#param_images), [возвращаемые значения](#образы) и [примеры](#получение-информации-об-образах))
+- **группы с плавающим IP-адресом** (см. [параметр flip_groups](#flip_groups), [возвращаемые значения](#группы-с-плавающим-ip-адресом) и [примеры](#получение-информации-о-группах-с-плавающим-ip-адресом))
+- **аудиты** (см. [параметр audits](#audits), [возвращаемые значения](#аудиты) и [примеры](#получение-информации-об-аудитах))
+
+## Параметры модуля
+Ниже приведен список параметров для модуля **decort_account_info** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
+
+
+
+ Параметр |
+ Тип |
+ Описание |
+
+
+
+
+ audits
+
+ |
+
+ (bool)
+ Default: false
+ |
+
+ Получить информацию об аудитах.
+ |
+
+
+
+
+ computes
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию о виртуальных машинах, к которым имеет доступ пользователь,
+ с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ ext_net_id
+ |
+
+ (int)
+ |
+
+ По идентификатору внешней сети.
+ |
+
+
+ |
+ |
+
+ ext_net_name
+ |
+
+ (str)
+ |
+
+ По имени внешней сети.
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ ip
+ |
+
+ (str)
+ |
+
+ По IP-адресу.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ rg_id
+ |
+
+ (int)
+ |
+
+ По идентификатору ресурсной группы.
+ |
+
+
+ |
+ |
+
+ rg_name
+ |
+
+ (str)
+ |
+
+ По имени ресурсной группы.
+ |
+
+
+ |
+ |
+
+ tech_status
+ |
+
+ (str)
+ Значения:
+
BACKUP_RUNNING
+
BACKUP_STOPPED
+
DOWN
+
MIGRATING
+
PAUSED
+
PAUSING
+
SCHEDULED
+
STARTED
+
STARTING
+
STOPPED
+
STOPPING
+ |
+
+ По техническому статусу.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+ |
+
+ sorting
+ |
+
+ (dict)
+ |
+
+ Сортировка.
+ |
+
+
+ |
+ |
+
+ asc
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Сортировать по возрастанию.
+
true - по возрастанию.
+
false - по убыванию.
+ |
+
+
+ |
+ |
+
+ field
+ |
+
+ (str)
+ Значения:
+
cpus
+
createdBy
+
createdTime
+
deletedBy
+
deletedTime
+
id
+
name
+
ram
+
registered
+
rgId
+
rgName
+
status
+
techStatus
+
totalDisksSize
+
updatedBy
+
updatedTime
+
userManaged
+
vinsConnected
+ |
+
+ Название поля, по которому сортировать.
+ Обязательный параметр.
+ |
+
+
+
+
+ disks
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию о неподключённых дисках, к которым имеет доступ пользователь,
+ с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ По объёму.
+ |
+
+
+ |
+ |
+
+ type
+ |
+
+ (str)
+ Значения:
+
B
+
D
+ |
+
+ По типу.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+ |
+
+ sorting
+ |
+
+ (dict)
+ |
+
+ Сортировка.
+ |
+
+
+ |
+ |
+
+ asc
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Сортировать по возрастанию.
+
true - по возрастанию.
+
false - по убыванию.
+ |
+
+
+ |
+ |
+
+ field
+ |
+
+ (str)
+ Значения:
+
id
+
name
+
pool
+
sepId
+
shareable
+
sizeMax
+
type
+ |
+
+ Название поля, по которому сортировать.
+ Обязательный параметр.
+ |
+
+
+
+
+ flip_groups
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию о группах с плавающим IP-адресом, к которым имеет
+ доступ пользователь, с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ ext_net_id
+ |
+
+ (int)
+ |
+
+ По идентификатору внешней сети.
+ |
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ ip
+ |
+
+ (str)
+ |
+
+ По IP-адресу.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ vins_id
+ |
+
+ (int)
+ |
+
+ По идентификатору внутренней сети.
+ |
+
+
+ |
+ |
+
+ vins_name
+ |
+
+ (str)
+ |
+
+ По имени внутренней сети.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+
+ id
+ |
+
+ (int)
+ |
+
+ Идентификатор целевого аккаунта.
+ Обязательный параметр, если не задан параметр
+ name .
+ |
+
+
+
+
+ images
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию об образах, к которым имеет доступ пользователь,
+ с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ deleted
+ |
+
+ (bool)
+ Default: false
+ |
+
+ Включение в вывод удалённых объектов.
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ type
+ |
+
+ (str)
+ Значения:
+
cdrom
+
linux
+
other
+
virtual
+
windows
+ |
+
+ По типу.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+ |
+
+ sorting
+ |
+
+ (dict)
+ |
+
+ Сортировка.
+ |
+
+
+ |
+ |
+
+ asc
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Сортировать по возрастанию.
+
true - по возрастанию.
+
false - по убыванию.
+ |
+
+
+ |
+ |
+
+ field
+ |
+
+ (str)
+ Значения:
+
UNCPath
+
desc
+
id
+
name
+
public
+
size
+
status
+
type
+
username
+ |
+
+ Название поля, по которому сортировать.
+ Обязательный параметр.
+ |
+
+
+
+ name
+ |
+
+ (str)
+ |
+
+ Имя целевого аккаунта.
+ Может быть альтернативой параметру id ,
+ за исключением случая, когда необходимо получить
+ информацию о безвозвратно удалённом объекте.
+ |
+
+
+
+
+ resource_groups
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию о ресурсных группах, к которым имеет доступ пользователь,
+ с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ status
+ |
+
+ (str)
+ Значения:
+
CREATED
+
DELETED
+
DELETING
+
DESTROYED
+
DESTROYING
+
DISABLED
+
DISABLING
+
ENABLED
+
ENABLING
+
MODELED
+
RESTORING
+ |
+
+ По статусу.
+ |
+
+
+ |
+ |
+
+ vins_id
+ |
+
+ (int)
+ |
+
+ По идентификатору внутренней сети.
+ |
+
+
+ |
+ |
+
+ vm_id
+ |
+
+ (int)
+ |
+
+ По идентификатору виртуальной машины.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+ |
+
+ sorting
+ |
+
+ (dict)
+ |
+
+ Сортировка.
+ |
+
+
+ |
+ |
+
+ asc
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Сортировать по возрастанию.
+
true - по возрастанию.
+
false - по убыванию.
+ |
+
+
+ |
+ |
+
+ field
+ |
+
+ (str)
+ Значения:
+
createdBy
+
createdTime
+
deletedBy
+
deletedTime
+
id
+
milestones
+
name
+
status
+
updatedBy
+
updatedTime
+
vinses
+ |
+
+ Название поля, по которому сортировать.
+ Обязательный параметр.
+ |
+
+
+
+
+ resource_consumption
+
+ |
+
+ (bool)
+ Default: false
+ |
+
+ Получить информацию об используемых и зарезервированных ресурсах.
+ |
+
+
+
+
+ vinses
+
+ |
+
+ (dict)
+ |
+
+ Получить информацию о внутренних сетях, к которым имеет доступ пользователь,
+ с учётом заданных параметров вывода.
+ Чтобы получить информацию без использования параметров вывода,
+ необходимо задать пустой словарь {} .
+ |
+
+
+ |
+
+ filter
+ |
+
+ (dict)
+ |
+
+ Фильтр.
+ |
+
+
+ |
+ |
+
+ ext_ip
+ |
+
+ (int)
+ |
+
+ По внешнему IP-адресу.
+ |
+
+
+ |
+ |
+
+ id
+ |
+
+ (int)
+ |
+
+ По идентификатору.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ По имени.
+ |
+
+
+ |
+ |
+
+ rg_id
+ |
+
+ (int)
+ |
+
+ По идентификатору ресурсной группы.
+ |
+
+
+ |
+
+ pagination
+ |
+
+ (dict)
+ |
+
+ Постраничный вывод.
+ |
+
+
+ |
+ |
+
+ number
+ |
+
+ (int)
+ Default: 1
+ |
+
+ Номер страницы.
+ |
+
+
+ |
+ |
+
+ size
+ |
+
+ (int)
+ |
+
+ Размер страниц.
+ Обязательный параметр.
+ |
+
+
+ |
+
+ sorting
+ |
+
+ (dict)
+ |
+
+ Сортировка.
+ |
+
+
+ |
+ |
+
+ asc
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Сортировать по возрастанию.
+
true - по возрастанию.
+
false - по убыванию.
+ |
+
+
+ |
+ |
+
+ field
+ |
+
+ (str)
+ Значения:
+
computes
+
createdBy
+
createdTime
+
deletedBy
+
deletedTime
+
externalIP
+
extnetId
+
freeIPs
+
id
+
name
+
network
+
priVnfDevId
+
rgId
+
rgName
+
status
+
updatedBy
+
updatedTime
+ |
+
+ Название поля, по которому сортировать.
+ Обязательный параметр.
+ |
+
+
+
+## Возвращаемые значения
+
+Модуль **decort_account_info** возвращает информацию об аккаунте в виде словаря `facts` со следующими ключами:
+
+### Основная информация
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ acl
+ |
+
+ list
+ |
+
+ Список словарей, описывающих доступы пользователей.
+ |
+
+
+ |
+
+ canBeDeleted
+ |
+
+ bool
+ |
+
+ Может ли быть удалён.
+ |
+
+
+ |
+
+ explicit
+ |
+
+ bool
+ |
+
+ Видимость аккаунта.
+ |
+
+
+ |
+
+ right
+ |
+
+ str
+ |
+
+ Права.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ type
+ |
+
+ str
+ |
+
+ Тип.
+ |
+
+
+ |
+
+ userGroupId
+ |
+
+ str
+ |
+
+ Идентификатор пользователя или группы пользователей.
+ |
+
+
+
+ company
+ |
+
+ str
+ |
+
+ Название компании.
+ |
+
+
+
+ companyurl
+ |
+
+ str
+ |
+
+ URL компании.
+ |
+
+
+
+ computeFeatures
+ |
+
+ list
+ |
+
+ Список дополнительных возможностей гипервизора, доступных ВМ.
+ |
+
+
+
+ computes_amount
+ |
+
+ dict
+ |
+
+ Количество ВМ по состоянию.
+ |
+
+
+ |
+
+ started
+ |
+
+ int
+ |
+
+ Количество запущенных ВМ.
+ |
+
+
+ |
+
+ stopped
+ |
+
+ int
+ |
+
+ Количество остановленных ВМ.
+ |
+
+
+
+ cpu_allocation_parameter
+ |
+
+ str
+ |
+
+ Режим выделения ЦП.
+ |
+
+
+
+ cpu_allocation_ratio
+ |
+
+ str
+ |
+
+ Коэффициент для режима выделения ЦП.
+ |
+
+
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+
+ deactivationTime
+ |
+
+ int
+ |
+
+ Unix-время выключения.
+ |
+
+
+
+ deactivationTime_readable
+ |
+
+ str
+ |
+
+ Дата и время выключения.
+ |
+
+
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+
+ displayname
+ |
+
+ str
+ |
+
+ Отображаемое имя.
+ |
+
+
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+
+ resourceLimits
+ |
+
+ dict
+ |
+
+ Квоты на ресурсы.
+ |
+
+
+ |
+
+ CU_C
+ |
+
+ int
+ |
+
+ Количество виртуальных процессоров.
+ |
+
+
+ |
+
+ CU_D
+ |
+
+ int
+ |
+
+ Объём диска в ГБ.
+ |
+
+
+ |
+
+ CU_DM
+ |
+
+ int
+ |
+
+ Объём дисков в ГБ.
+ |
+
+
+ |
+
+ CU_I
+ |
+
+ int
+ |
+
+ Количество внешних IP-адресов.
+ |
+
+
+ |
+
+ CU_M
+ |
+
+ float
+ |
+
+ Объём оперативной памяти в МБ.
+ |
+
+
+ |
+
+ CU_NP
+ |
+
+ int
+ |
+
+ Объём трафика внешних сетей.
+ |
+
+
+ |
+
+ gpu_units
+ |
+
+ int
+ |
+
+ Количество графических процессоров.
+ |
+
+
+
+ sendAccessEmails
+ |
+
+ bool
+ |
+
+ Отправка пользователям на эл. почту уведомлений о предоставлении доступа.
+ |
+
+
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+
+ uniqPools
+ |
+
+ list
+ |
+
+ Список доступных пулов СХД.
+ |
+
+
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+
+ vins
+ |
+
+ list
+ |
+
+ Список идентификаторов внутренних сетей на уровне аккаунта.
+ |
+
+
+
+ vinses_amount
+ |
+
+ int
+ |
+
+ Количество внутренних сетей.
+ |
+
+
+
+### Используемые и зарезервированные ресурсы
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+
+ resource_consumed
+
+ |
+
+ dict
+ |
+
+ Используемые ресурсы.
+ |
+
+
+ |
+
+ cpu
+ |
+
+ int
+ |
+
+ Количество виртуальных процессоров.
+ |
+
+
+ |
+
+ disksize
+ |
+
+ int
+ |
+
+ Объём дисков в ГБ.
+ |
+
+
+ |
+
+ extips
+ |
+
+ int
+ |
+
+ Количество внешних IP-адресов.
+ |
+
+
+ |
+
+ exttraffic
+ |
+
+ int
+ |
+
+ Объём трафика внешних сетей.
+ |
+
+
+ |
+
+ gpu
+ |
+
+ int
+ |
+
+ Количество графических процессоров.
+ |
+
+
+ |
+
+ ram
+ |
+
+ int
+ |
+
+ Объём оперативной памяти в МБ.
+ |
+
+
+ |
+
+ seps
+ |
+
+ dict
+ |
+
+ Объём дисков по пулам СХД.
+ |
+
+ |
+ |
+
+ (идентификатор СХД)
+ |
+
+ dict
+ |
+
+ Пулы СХД.
+ |
+
+
+ |
+ |
+ |
+
+ (название пула)
+ |
+
+ dict
+ |
+
+ Словарь пула СХД.
+ |
+
+
+ |
+ |
+ |
+ |
+
+ disksize
+ |
+
+ int
+ |
+
+ Объём дисков в ГБ.
+ |
+
+
+
+ resource_reserved
+ |
+
+ dict
+ |
+
+ Зарезервированные ресурсы.
+ Структура словаря аналогична словарю
+
+ resource_consumed
+ .
+ |
+
+
+
+### Ресурсные группы
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ resource_groups
+ |
+
+ list
+ |
+
+ Список словарей, описывающих ресурсные группы.
+ |
+
+
+ |
+
+ Computes
+ |
+
+ dict
+ |
+
+ Количество ВМ по состоянию.
+ |
+
+
+ |
+ |
+
+ Started
+ |
+
+ int
+ |
+
+ Количество запущенных ВМ.
+ |
+
+
+ |
+ |
+
+ Stopped
+ |
+
+ int
+ |
+
+ Количество остановленных ВМ.
+ |
+
+
+ |
+
+ Resources
+ |
+
+ dict
+ |
+
+ Используемые и зарезервированные ресурсы.
+ |
+
+
+ |
+ |
+
+ Consumed
+ |
+
+ dict
+ |
+
+ Используемые ресурсы.
+ Структура словаря аналогична словарю
+
+ resource_consumed
+ .
+ |
+
+
+ |
+ |
+
+ Limits
+ |
+
+ dict
+ |
+
+ Квоты на ресурсы.
+ |
+
+
+ |
+ |
+ |
+
+ cpu
+ |
+
+ int
+ |
+
+ Количество виртуальных процессоров.
+ |
+
+
+ |
+ |
+ |
+
+ disksize
+ |
+
+ int
+ |
+
+ Объём дисков в ГБ.
+ |
+
+
+ |
+ |
+ |
+
+ disksizemax
+ |
+
+ int
+ |
+
+ Объём диска в ГБ.
+ |
+
+
+ |
+ |
+ |
+
+ extips
+ |
+
+ int
+ |
+
+ Количество внешних IP-адресов.
+ |
+
+
+ |
+ |
+ |
+
+ exttraffic
+ |
+
+ int
+ |
+
+ Объём трафика внешних сетей.
+ |
+
+
+ |
+ |
+ |
+
+ gpu
+ |
+
+ int
+ |
+
+ Количество графических процессоров.
+ |
+
+
+ |
+ |
+ |
+
+ ram
+ |
+
+ float
+ |
+
+ Объём оперативной памяти в МБ.
+ |
+
+
+ |
+ |
+
+ Reserved
+ |
+
+ dict
+ |
+
+ Зарезервированные ресурсы.
+ Структура словаря аналогична словарю
+
+ resource_consumed
+ .
+ |
+
+
+ |
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+ |
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+ |
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+ |
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+ |
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+ |
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ milestones
+ |
+
+ int
+ |
+
+ Количество событий.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ updatedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который обновил.
+ |
+
+
+ |
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+ |
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+ |
+
+ vinses
+ |
+
+ int
+ |
+
+ Количество внутренних сетей.
+ |
+
+
+
+### Виртуальные машины
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ computes
+ |
+
+ list
+ |
+
+ Список словарей, описывающих виртуальные машины.
+ |
+
+
+ |
+
+ accountId
+ |
+
+ int
+ |
+
+ Идентификатор аккаунта.
+ |
+
+
+ |
+
+ accountName
+ |
+
+ str
+ |
+
+ Имя аккаунта.
+ |
+
+
+ |
+
+ cpus
+ |
+
+ int
+ |
+
+ Количество виртуальных процессоров.
+ |
+
+
+ |
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+ |
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+ |
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+ |
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+ |
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+ |
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ ram
+ |
+
+ int
+ |
+
+ Объём оперативной памяти в МБ.
+ |
+
+
+ |
+
+ registered
+ |
+
+ bool
+ |
+
+ Зарегистрирована ли ВМ как используемая.
+ |
+
+
+ |
+
+ rgId
+ |
+
+ int
+ |
+
+ Идентификатор ресурсной группы.
+ |
+
+
+ |
+
+ rgName
+ |
+
+ str
+ |
+
+ Имя ресурсной группы.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ techStatus
+ |
+
+ str
+ |
+
+ Технический статус.
+ |
+
+
+ |
+
+ totalDisksSize
+ |
+
+ int
+ |
+
+ Общий объём дисков.
+ |
+
+
+ |
+
+ updatedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который обновил.
+ |
+
+
+ |
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+ |
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+ |
+
+ vinsConnected
+ |
+
+ int
+ |
+
+ Количество подключенных внутренних сетей.
+ |
+
+
+
+### Внутренние сети
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ vinses
+ |
+
+ list
+ |
+
+ Список словарей, описывающих внутренние сети.
+ |
+
+
+ |
+
+ accountId
+ |
+
+ int
+ |
+
+ Идентификатор аккаунта.
+ |
+
+
+ |
+
+ accountName
+ |
+
+ str
+ |
+
+ Имя аккаунта.
+ |
+
+
+ |
+
+ computes
+ |
+
+ int
+ |
+
+ Количество виртуальных машин.
+ |
+
+
+ |
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+ |
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+ |
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+ |
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+ |
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+ |
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+ |
+
+ externalIP
+ |
+
+ str
+ |
+
+ Внешний IP-адрес.
+ |
+
+
+ |
+
+ extnetId
+ |
+
+ int
+ |
+
+ Идентификатор внешней сети.
+ |
+
+
+ |
+
+ freeIPs
+ |
+
+ int
+ |
+
+ Количество свободных IP-адресов.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ network
+ |
+
+ str
+ |
+
+ Адрес сети.
+ |
+
+
+ |
+
+ priVnfDevId
+ |
+
+ int
+ |
+
+ Идентификатор виртуального маршрутизатора.
+ |
+
+
+ |
+
+ rgId
+ |
+
+ int
+ |
+
+ Идентификатор ресурсной группы.
+ |
+
+
+ |
+
+ rgName
+ |
+
+ str
+ |
+
+ Имя ресурсной группы.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ updatedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который обновил.
+ |
+
+
+ |
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+ |
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+
+### Диски
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ disks
+ |
+
+ list
+ |
+
+ Список словарей, описывающих диски.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ pool
+ |
+
+ str
+ |
+
+ Пул СХД.
+ |
+
+
+ |
+
+ sepId
+ |
+
+ int
+ |
+
+ Идентификатор СХД.
+ |
+
+
+ |
+
+ shareable
+ |
+
+ bool
+ |
+
+ Общий доступ.
+ |
+
+
+ |
+
+ sizeMax
+ |
+
+ int
+ |
+
+ Объём.
+ |
+
+
+ |
+
+ type
+ |
+
+ str
+ |
+
+ Тип.
+ |
+
+
+
+### Образы
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ images
+ |
+
+ list
+ |
+
+ Список словарей, описывающих образы.
+ |
+
+
+ |
+
+ UNCPath
+ |
+
+ str
+ |
+
+ Путь к файлу.
+ |
+
+
+ |
+
+ desc
+ |
+
+ str
+ |
+
+ Описание.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ public
+ |
+
+ bool
+ |
+
+ Общий доступ.
+ |
+
+
+ |
+
+ size
+ |
+
+ int
+ |
+
+ Размер в ГБ.
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ type
+ |
+
+ str
+ |
+
+ Тип.
+ |
+
+
+ |
+
+ username
+ |
+
+ str
+ |
+
+ Имя пользователя.
+ |
+
+
+
+### Группы с плавающим IP-адресом
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ flip_groups
+ |
+
+ list
+ |
+
+ Список словарей, описывающих группы с плавающим IP-адресом.
+ |
+
+
+ |
+
+ clientType
+ |
+
+ str
+ |
+
+ Тип клиентов.
+ |
+
+
+ |
+
+ connType
+ |
+
+ str
+ |
+
+ Тип соединения.
+ |
+
+
+ |
+
+ createdBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который создал.
+ |
+
+
+ |
+
+ createdTime
+ |
+
+ int
+ |
+
+ Unix-время создания.
+ |
+
+
+ |
+
+ createdTime_readable
+ |
+
+ str
+ |
+
+ Дата и время создания.
+ |
+
+
+ |
+
+ deletedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который удалил.
+ |
+
+
+ |
+
+ deletedTime
+ |
+
+ int
+ |
+
+ Unix-время удаления.
+ |
+
+
+ |
+
+ deletedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время удаления.
+ |
+
+
+ |
+
+ desc
+ |
+
+ str
+ |
+
+ Описание.
+ |
+
+
+ |
+
+ gid
+ |
+
+ int
+ |
+
+ Идентификатор ЦОД.
+ |
+
+
+ |
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор.
+ |
+
+
+ |
+
+ ip
+ |
+
+ str
+ |
+
+ IP-адрес.
+ |
+
+
+ |
+
+ milestones
+ |
+
+ int
+ |
+
+ Количество событий.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Имя.
+ |
+
+
+ |
+
+ netId
+ |
+
+ int
+ |
+
+ Идентификатор сети.
+ |
+
+
+ |
+
+ netType
+ |
+
+ str
+ |
+
+ Тип сети.
+ |
+
+
+ |
+
+ netmask
+ |
+
+ int
+ |
+
+ Маска подсети (длина префикса).
+ |
+
+
+ |
+
+ status
+ |
+
+ str
+ |
+
+ Статус.
+ |
+
+
+ |
+
+ updatedBy
+ |
+
+ str
+ |
+
+ Идентификатор пользователя, который обновил.
+ |
+
+
+ |
+
+ updatedTime
+ |
+
+ int
+ |
+
+ Unix-время обновления.
+ |
+
+
+ |
+
+ updatedTime_readable
+ |
+
+ str
+ |
+
+ Дата и время обновления.
+ |
+
+
+
+### Аудиты
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ audits
+ |
+
+ list
+ |
+
+ Список словарей, описывающих аудиты.
+ |
+
+
+ |
+
+ call
+ |
+
+ str
+ |
+
+ Метод API.
+ |
+
+
+ |
+
+ responsetime
+ |
+
+ float
+ |
+
+ Время отклика в секундах.
+ |
+
+
+ |
+
+ statuscode
+ |
+
+ int
+ |
+
+ Код ответа.
+ |
+
+
+ |
+
+ timestamp
+ |
+
+ float
+ |
+
+ Unix-время.
+ |
+
+
+ |
+
+ timestamp_readable
+ |
+
+ str
+ |
+
+ Дата и время.
+ |
+
+
+ |
+
+ user
+ |
+
+ str
+ |
+
+ Идентификатор пользователя.
+ |
+
+
+
+## Примеры использования
+
+### Получение основной информации об аккаунте
+
+#### По идентификатору
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get basic account info by ID
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+```
+
+#### По имени
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get basic account info by name
+ decort_account_info:
+ # Параметры для авторизации упущены
+ name: "{{ account_name }}"
+```
+
+### Получение информации об используемых и зарезервированных ресурсах аккаунта
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with resource consumption
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ resource_consumption: true
+```
+
+### Получение информации о ресурсных группах
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with resource groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ resource_groups: {}
+```
+
+#### С фильтрацией по статусу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with resource groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ resource_groups:
+ filter:
+ status: CREATED
+```
+
+#### С сортировкой по имени
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with resource groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ resource_groups:
+ sorting:
+ field: name
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with resource groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ resource_groups:
+ pagination:
+ size: 2
+```
+
+### Получение информации о виртуальных машинах
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with computes
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ computes: {}
+```
+
+#### С фильтрацией по IP-адресу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with computes
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ computes:
+ filter:
+ ip: 192.168.1.2
+```
+
+#### С сортировкой по имени
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with computes
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ computes:
+ sorting:
+ field: name
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with computes
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ computes:
+ pagination:
+ size: 2
+```
+
+### Получение информации о внутренних сетях
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with vinses
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ vinses: {}
+```
+
+#### С фильтрацией по идентификатору ресурсной группы
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with vinses
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ vinses:
+ filter:
+ rg_id: "{{ rg_id }}"
+```
+
+#### С сортировкой по времени создания
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with vinses
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ vinses:
+ sorting:
+ field: createdTime
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with vinses
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ vinses:
+ pagination:
+ size: 2
+```
+
+### Получение информации о дисках
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with disks
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ disks: {}
+```
+
+#### С фильтрацией по типу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with disks
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ disks:
+ filter:
+ type: D
+```
+
+#### С сортировкой по объёму
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with disks
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ disks:
+ sorting:
+ field: sizeMax
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with disks
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ disks:
+ pagination:
+ size: 2
+```
+
+### Получение информации об образах
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with images
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ images: {}
+```
+
+#### С включение в вывод удаленных
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with images
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ images:
+ deleted: true
+```
+
+#### С фильтрацией по типу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with images
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ images:
+ filter:
+ type: linux
+```
+
+#### С сортировкой по статусу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with images
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ images:
+ sorting:
+ field: status
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with images
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ images:
+ pagination:
+ size: 2
+```
+
+### Получение информации о группах с плавающим IP-адресом
+
+#### Без использования параметров вывода
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with flip groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ flip_groups: {}
+```
+
+#### С фильтрацией по IP-адресу
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with flip groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ flip_groups:
+ filter:
+ ip: 192.168.1.5
+```
+
+#### С постраничным выводом
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with flip groups
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ flip_groups:
+ pagination:
+ size: 2
+```
+
+### Получение информации об аудитах
+```
+- name: Example
+ hosts: localhost
+ tasks:
+ - name: Get account info with audits
+ decort_account_info:
+ # Параметры для авторизации упущены
+ id: "{{ account_id }}"
+ audits: true
+```
diff --git a/wiki/5.5.0/модуль-decort_bservice.md b/wiki/5.5.0/модуль-decort_bservice.md
new file mode 100644
index 0000000..2348c45
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_bservice.md
@@ -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 | Значения:
`oauth2`
`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы 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`.|
+|state | Значения: `absent`, `disabled`, `enabled`, `present`, `check`.
Default: `present`| Целевое состояние базовой службы. Значения `present` и `enabled` равнозначны.|
+| started | (bool)
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)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля 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
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_disk.md b/wiki/5.5.0/модуль-decort_disk.md
new file mode 100644
index 0000000..4cf625e
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_disk.md
@@ -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)
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 | Значения:
`oauth2`
`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным. |
+|controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный диск. Данный параметр является обязательным.|
+|id | (int) | Уникальный целочисленный идентификатор диска. Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися). Если задан данный параметр, то параметры `name`, `account_name` и `account_id` игнорируются.|
+| iops | (int)
Default: `2000` | Ограничение ввода/вывода диска. Используется при создании диска. |
+| force_detach | (bool)
Default: `false` | Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.
По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля. Чтобы изменить это поведение, явно установите `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)
Default: `false` | Параметр, использующийся при удалении диска, при значении `true` - диск удалится навсегда, а при `false` - попадёт в корзину. |
+| place_with | (int) | Идентификатор образа диска, из которого следует взять параметр `sep_id`, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска. Данный параметр является опциональным и используется только на стадии создания диска. Если задан `place_with`, то `sep_id` игнорируется.|
+| pool | (string) | Название пула на системе хранения данных, в рамках которой следует создать данный диск. Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками. Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию. |
+| reason | (string)
Default: `Managed by Ansible decort_disk` | Причина, по которой было выполнено какое-либо действие. В данном модуле используется только при удалении диска. |
+| sep_id | (int) | Идентификатор системы хранения данных (Storage End-point). Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск. Используется только при создании диска и игнорируется при прочих операциях. Альтернативой данному параметру является `place_with`, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.|
+| shareable | (bool)
Default: `false` | Включение/отключение общего доступа к диску.
+| size | (int) | Размер диска в ГБ. Этот параметр является обязательным при создании диска. Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска. При прочих операциях данный параметр игнорируется.|
+| state | (str)
Значения:
`present`
`absent`
Default: `present` | Целевое состояние диска. |
+| type | (string)
Значения:
`B`
`D`
Default: `D` | Тип создаваемого диска. `B` - Boot/загрузочный, `D` - Data/с данными. |
+| verify_ssl | (bool)
Default: `false` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля 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 }}"
+ << для краткости фрагмент опущен >>
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_group.md b/wiki/5.5.0/модуль-decort_group.md
new file mode 100644
index 0000000..46f651f
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_group.md
@@ -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)
Значения:
`oauth2`
`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
+| boot_disk | (int) | Обьём загрузочного диска. |
+| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
+| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
+| count | (int) | Количество виртуальных машин. Обязательный параметр. |
+| cpu | (int) | Количество виртуальных процессоров. |
+| driver | (string)
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) | Список словарей, описывающих сети, которые должны быть подключены.
Ключи словаря:
• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)
• `id` (int) (обязательный) - идентификатор сети |
+| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме `authenticator: oauth2`. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
+| ram | (int) | Объём оперативной памяти. |
+| role | (string) | Тег роли. |
+| state | (str)
Значения:
`present`
`absent`
`started`
`stopped`
`check`
Default: `present` |
+| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля decort_group
+
+Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
+
+
+|Ключ | Тип данных | Описание|
+| ------ | ------ | ------ |
+| account_id | int | Идентификатор аккаунта. |
+| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.
Ключи словаря:
• `id` (int) - идентификатор ВМ
• `ipAddresses` (list) - список IP-адресов ВМ
• `name` (str) - имя ВМ
• `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
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_jwt.md b/wiki/5.5.0/модуль-decort_jwt.md
new file mode 100644
index 0000000..4cd124b
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_jwt.md
@@ -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)
Default: `3600` | Срок действия JWT в секундах. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля 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 }}"
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_k8s.md b/wiki/5.5.0/модуль-decort_k8s.md
new file mode 100644
index 0000000..0decbad
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_k8s.md
@@ -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)
Значения:
`oauth2`
`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
+| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
+| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT. Данный параметр является обязательным. |
+| description | (string)
Default: `Created by decort ansible module` | Описание кластера. |
+| extnet_id | (int)
Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
+| extnet_only | (bool)
Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
+| getConfig | (bool)
Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
+| ha_lb | (bool)
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)
Default: `1` | Количество Master-узлов. |
+| master_cpu | (int)
Default: `2` | Количество виртуальных процессоров на Master-узле. |
+| master_disk | (int)
Default: `10` | Объём загрузочного диска на Master-узле. |
+| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
+| master_ram | (int)
Default: `2048` | Объём оперативной памяти на Master-узле. |
+| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
+| name | (string) | Имя кластера Kubernetes. |
+| network_plugin | (str)
Значения:
`flannel`
`calico`
`weavenet`
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)
Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
+| rg_id | (int) | Идентификатор ресурсной группы. |
+| rg_name | (str) | Имя ресурсной группы. |
+| started | (bool)
Default: `true` | Автоматический запуск кластера после его создания. |
+| state | (string)
Значения:
`present`
`absent`
`enabled`
`disabled`
`check`
Default: `present` | Целевое состояние кластера. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
+| with_lb | (bool)
Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
+| workers | (list) | Обязательный параметр. Список словарей, описывающих группы Worker-узлов.
Ключи словаря:
• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`
• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init
• `cpu` (int) (обязательный) - количество виртуальных процессоров на узле
• `disk` (int) (обязательный) - объём загрузочного диска на узле
• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`
• `name` (string) (обязательный) - имя группы Worker-узлов
• `num` (int) (обязательный) - количество узлов
• `pool` (str) (обязательный) - пул СХД, заданной ключом `sep_id`
• `ram` (int) (обязательный) - объём оперативной памяти на узле
• `sep_id` (int) (обязательный) - идентификатор СХД; если задать `null`, то используется СХД образа узла
• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule` |
+
+
+## Возвращаемые значения модуля decort_k8s
+
+Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
+
+
+| Ключ | Тип данных | Описание |
+| ------ | ------ | ------ |
+| account_id | int | Идентификатор аккаунта. |
+| config | str | Kuber config кластера.
+| id | int | Идентификатор кластера. |
+| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.
Ключи словаря:
• `cpu` (int) - количество виртуальных процессоров
• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ
• `disk` (int) - объём загрузочного диска
• `id` (int) - идентификатор группы
• `name` (str) - имя группы
• `num` (int) - количество узлов
• `ram` (int) - объём оперативной памяти
+| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.
Ключи словаря:
• `cpu` (int) - количество виртуальных процессоров
• `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ
• `disk` (int) - объём загрузочного диска
• `id` (int) - идентификатор группы
• `labels` (list) - список строк с labels
• `name` (str) - имя группы
• `num` (int) - количество узлов
• `ram` (int) - объём оперативной памяти
• `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
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_kvmvm.md b/wiki/5.5.0/модуль-decort_kvmvm.md
new file mode 100644
index 0000000..a6008f8
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_kvmvm.md
@@ -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 правила.
Ключи словаря:
• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)
• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`
• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)
• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила
• `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 правила.
Ключи словаря:
• `topology` (string) (обязательный) - назначение правила; значения: `node` (узел) или `compute` (ВМ)
• `policy` (string) (обязательный) - степень "необходимости" этого правила; значения: `RECOMMENDED` или `REQUIRED`
• `mode` (string) (обязательный) - режим сравнения; значения: `EQ` (должно соответствовать), `NE` (не должно соответствовать), `ANY` (любое)
• `key` (string) (обязательный) - ключ, который учитывается при анализе данного правила
• `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)
Значения:
`X86_64`
`PPC64_LE`
Default: `X86_64` | Архитектура виртуальной машины. |
+| authenticator | (str)
Значения:
`oauth2`
`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) | Список словарей, описывающих сети для подключения к ВМ.
Ключи словаря:
• `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)
• `id` (int) (обязательный) - идентификатор сети
• `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)
Значения:
`present`
`absent`
`poweredon`
`poweredoff`
`halted`
`paused`
`check`
Default: `present` | Целевое состояние ВМ.
Значение `halted` - синоним к `poweredoff`. Значения `present` и `poweredon` равнозначны.
Значение `check` вызывает модуль в _read-only_ режиме и считывает характеристики существующей ВМ. |
+| tag | (dict) | Словарь, пары ключ-значение которого, описывают тэги для ВМ. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля 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
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_lb.md b/wiki/5.5.0/модуль-decort_lb.md
new file mode 100644
index 0000000..543a8ac
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_lb.md
@@ -0,0 +1,893 @@
+# Модуль decort_lb
+## Обзор модуля decort_lb
+
+Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
+- создать
+- получить информацию
+- отключить/включить/запустить/перезапустить
+- изменить конфигурации backend и frontend
+- удалить (в корзину или безвозвратно)
+- восстановить из корзины
+
+## Параметры модуля decort_lb
+Ниже приведен полный список параметров для модуля **decort_lb**:
+
+
+
+ Параметр |
+ Тип |
+ Описание |
+
+
+
+ account_id
+ |
+
+ (int)
+ |
+
+ Идентификатор аккаунта.
+ |
+
+
+
+ account_name
+ |
+
+ (str)
+ |
+
+ Имя аккаунта.
+ Может быть альтернативой параметру account_id .
+ |
+
+
+
+ annotation
+ |
+
+ (str)
+ Default: Managed by Ansible module decort_lb
+ |
+
+ Описание балансировщика.
+ |
+
+
+
+ app_id
+ |
+
+ (str)
+ |
+
+ Идентификатор приложения, использующийся для подключения к контроллеру
+ облачной платформы DECORT в режиме authenticator: oauth2 .
+ Данный параметр является обязательным для указанного режима. Если
+ параметр не задан в playbook, модуль будет использовать значение
+ переменной окружения DECORT_APP_ID .
+ |
+
+
+
+ app_secret
+ |
+
+ (str)
+ |
+
+ Секретный ключ приложения, который используется для подключения к
+ контроллеру облачной платформы DECORT в режиме
+ authenticator: oauth2 . Данный параметр является
+ обязательным для указанного режима. Так как он содержит секретную
+ информацию, то его не рекомендуется задавать непосредственно в
+ playbook. Если параметр не задан в playbook, то модуль будет
+ использовать значение переменной окружения
+ DECORT_APP_SECRET .
+ |
+
+
+
+ authenticator
+ |
+
+ (str)
+ Значения:
+
oauth2
+
jwt
+ |
+
+ Режим аутентификации при подключении к контроллеру облачной платформы
+ DECORT. Обязательный параметр.
+ |
+
+
+
+ backends
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих конфигурации backend.
+ |
+
+
+ |
+
+ algorithm
+ |
+
+ (str)
+ Значения:
+
leastconn
+
roundrobin
+
static-rr
+ Default: roundrobin
+ |
+
+ Используемый алгоритм.
+ |
+
+
+ |
+
+
+ default_settings
+
+ |
+
+ (dict)
+ |
+
+ Cловарь, описывающий параметры по умолчанию для backend-серверов.
+ |
+
+
+ |
+ |
+
+ downinter
+ |
+
+ (int)
+ Default: 1000
+ |
+
+ Интервал в миллисекундах между двумя последовательными проверками
+ доступности сервера, который считается недоступным.
+ |
+
+
+ |
+ |
+
+ fall
+ |
+
+ (int)
+ Default: 2
+ |
+
+ Количество последовательных неудачных проверок доступности, после
+ которых сервер, ранее считавшийся доступным, начинает считаться
+ недоступным и временно исключается из схемы балансировки.
+ |
+
+
+ |
+ |
+
+ inter
+ |
+
+ (int)
+ Default: 5000
+ |
+
+ Интервал в миллисекундах между двумя последовательными проверками
+ доступности сервера, который считается доступным.
+ |
+
+
+ |
+ |
+
+ maxconn
+ |
+
+ (int)
+ Default: 250
+ |
+
+ Лимит одновременных подключений к серверу. При достижении этого лимита
+ сервер временно исключается из схемы балансировки.
+ |
+
+
+ |
+ |
+
+ maxqueue
+ |
+
+ (int)
+ Default: 256
+ |
+
+ Лимит соединений, ожидающих в очереди. Когда этот предел будет
+ достигнут, все последующие подключения будут перенаправлены
+ на другие серверы.
+ |
+
+
+ |
+ |
+
+ rise
+ |
+
+ (int)
+ Default: 2
+ |
+
+ Количество проверок, которые должен пройти сервер, считавшийся
+ недоступным, чтобы начать считаться доступным и снова быть
+ включенным в схему балансировки.
+ |
+
+
+ |
+ |
+
+ slowstart
+ |
+
+ (int)
+ Default: 60000
+ |
+
+ Интервал в миллисекундах с момента когда сервер начинает считаться
+ доступным, по истечении которого количество фактически разрешенных
+ подключений к этому серверу будет возвращено до 100% от
+ установленного лимита.
+ |
+
+
+ |
+ |
+
+ weight
+ |
+
+ (int)
+ Default: 100
+ |
+
+ Вес сервера для использования в алгоритмах балансировки.
+ |
+
+
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ Название backend. Обязательный параметр.
+ |
+
+
+
+ controller_url
+ |
+
+ (str)
+ |
+
+ URL контроллера, соответствующего экземпляру облачной платформы
+ DECORT. Данный параметр является обязательным.
+ |
+
+
+
+ ext_net_id
+ |
+
+ (int)
+ |
+
+ Идентификатор внешней сети.
+ Может быть не задан, если задан vins_id -
+ в таком случае балансировщик будет подключён только к
+ внутренней сети.
+ |
+
+
+
+
+ frontends
+
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих конфигурации frontend.
+ |
+
+
+ |
+
+ backend
+ |
+
+ (str)
+ |
+
+ Название используемого backend. Обязательный параметр.
+ |
+
+
+ |
+
+ bindings
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих конфигурации binding.
+ |
+
+
+ |
+ |
+
+ address
+ |
+
+ (str)
+ |
+
+ IP-адрес.
+ Если не задан, то будет использоваться основной IP-адрес
+ балансировщика во внешней сети или, если подключена только
+ внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ Название. Обязательный параметр.
+ |
+
+
+ |
+ |
+
+ port
+ |
+
+ (int)
+ Значения:
+
1 -65535
+ |
+
+ Порт. Обязательный параметр.
+ |
+
+
+
+ ha_lb
+ |
+
+ bool
+ Default: false
+ |
+
+ Использовать схему высокой доступности для создаваемого балансировщика.
+ |
+
+
+
+ jwt
+ |
+
+ (str)
+ |
+
+ JSON Web Token (JWT), который будет использоваться для подключения
+ к контроллеру облачной платформы DECORT в режиме
+ authenticator: jwt . Данный параметр является
+ обязательным для указанного режима. Так как он содержит
+ потенциально секретную информацию, а сам JWT, как правило,
+ имеет ограниченное время жизни, то его не рекомендуется задавать
+ непосредственно в playbook. Если этот параметр не определен в
+ playbook, то модуль будет использовать значение переменной
+ окружения DECORT_JWT .
+ |
+
+
+
+ lb_id
+ |
+
+ (int)
+ |
+
+ Идентификатор балансировщика нагрузки.
+ |
+
+
+
+ lb_name
+ |
+
+ (str)
+ |
+
+ Имя балансировщика. Обязательный параметр.
+ |
+
+
+
+ oauth2_url
+ |
+
+ (str)
+ |
+
+ URL авторизационного сервера, работающего по протоколу Oauth2,
+ который должен использоваться в режиме
+ authenticator: oauth2 . Данный параметр является
+ обязательным для указанного режима. Если параметр не задан в
+ playbook, модуль будет использовать значение переменной
+ окружения DECORT_OAUTH2_URL .
+ |
+
+
+
+ permanently
+ |
+
+ (bool)
+ Default: false
+ |
+
+ Если выполняется удаление, то выполнить безвозвратное удаление
+ (минуя корзину).
+ |
+
+
+
+ rg_id
+ |
+
+ (int)
+ |
+
+ Идентификатор ресурсной группы.
+ |
+
+
+
+ rg_name
+ |
+
+ (str)
+ |
+
+ Имя ресурсной группы.
+ В комбинации с заданным аккаунтов может быть альтернативой
+ параметру rg_id
+ |
+
+
+
+ servers
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих конфигурации backend-серверов.
+ |
+
+
+ |
+
+ address
+ |
+
+ (str)
+ |
+
+ IP-адрес. Обязательный параметр.
+ |
+
+
+ |
+
+ backends
+ |
+
+ (list)
+ |
+
+ Список словарей, описывающих параметры backend-сервера для разных
+ конфигураций backend.
+ Обязательный параметр.
+ |
+
+
+ |
+ |
+
+ check
+ |
+
+ (str)
+ Значения:
+
enabled
+
disabled
+ Default: enabled
+ |
+
+ Проверка доступности сервера.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ Название конфигурации backend. Обязательный параметр.
+ |
+
+
+ |
+ |
+
+ port
+ |
+
+ (int)
+ Значения:
+
1 -65535
+ |
+
+ Порт. Обязательный параметр.
+ |
+
+
+ |
+ |
+
+ server_settings
+ |
+
+ (dict)
+ |
+
+ Словарь, описывающий параметры backend-сервера.
+ Ключи данного словаря аналогичны ключам словаря
+
+ default_settings
+ .
+ |
+
+
+ |
+
+ name
+ |
+
+ (str)
+ |
+
+ Название. Обязательный параметр.
+ |
+
+
+
+ state
+ |
+
+ (str)
+ Значения:
+
present
+
absent
+
enabled
+
disabled
+
restart
+ Default: present
+ |
+
+ Целевое состояние балансировщика нагрузки.
+ Выполнение с state=restart позволяет выполнить
+ перезапуск балансировщика, соответственно, всегда возвращает
+ changed: true .
+ Значения present и enabled равнозначны
+ и соответствуют включённому и запущенному балансировщику.
+ |
+
+
+
+ verify_ssl
+ |
+
+ (bool)
+ Default: true
+ |
+
+ Позволяет отключить проверку SSL сертификатов при выполнении API
+ вызовов в адрес контроллера облачной инфраструктуры, например,
+ при работе с изолированной облачной инфраструктурой, использующей
+ самоподписанные сертификаты. Применяйте данный параметр с
+ осторожностью, предпочтительно в защищенных средах.
+ |
+
+
+
+ vins_id
+ |
+
+ (int)
+ |
+
+ Идентификатор внутренней сети.
+ Может быть не задан, если задан ext_net_id -
+ в таком случае балансировщик будет подключён только к
+ внешней сети.
+ |
+
+
+
+ vins_name
+ |
+
+ (str)
+ |
+
+ Имя внутренней сети.
+ В комбинации с заданной РГ может быть альтернативой для
+ параметра vins_id .
+ |
+
+
+
+## Возвращаемые значения модуля decort_lb
+
+Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
+
+
+
+
+ Ключ
+ |
+
+ Тип
+ данных
+ |
+
+ Описание
+ |
+
+
+
+ backends
+ |
+
+ list
+ |
+
+ Список словарей, описывающих конфигурации backend.
+ |
+
+
+ |
+
+ algorithm
+ |
+
+ str
+ |
+
+ Используемый алгоритм.
+ |
+
+
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Название конфигурации backend.
+ |
+
+
+ |
+
+ serverDefaultSettings
+ |
+
+ dict
+ |
+
+ Cловарь, описывающий параметры по умолчанию для backend-серверов.
+ Ключи данного словаря аналогичны ключам словаря
+
+ default_settings
+ .
+ |
+
+
+ |
+
+ servers
+ |
+
+ list
+ |
+
+ Список словарей, описывающих конфигурации backend-серверов.
+ |
+
+
+ |
+ |
+
+ address
+ |
+
+ str
+ |
+
+ IP-адрес.
+ |
+
+
+ |
+ |
+
+ check
+ |
+
+ str
+ |
+
+ Проверка доступности сервера.
+ |
+
+
+ |
+ |
+
+ name
+ |
+
+ str
+ |
+
+ Название.
+ |
+
+
+ |
+ |
+
+ port
+ |
+
+ int
+ |
+
+ Порт.
+ |
+
+
+ |
+ |
+
+ serverSettings
+ |
+
+ dict
+ |
+
+ Cловарь, описывающий параметры backend-сервера.
+ Ключи данного словаря аналогичны ключам словаря
+
+ default_settings
+ .
+ |
+
+
+
+ frontends
+ |
+
+ list
+ |
+
+ Список словарей, описывающих конфигурации frontend.
+ Ключи данного словаря аналогичны ключам словарей списка
+
+ frontends
+ .
+ |
+
+
+
+ gid
+ |
+
+ int
+ |
+
+ Идентификатор физического кластера (Grid ID).
+ |
+
+
+
+ id
+ |
+
+ int
+ |
+
+ Идентификатор балансировщика.
+ |
+
+
+
+ name
+ |
+
+ str
+ |
+
+ Имя балансировщика.
+ |
+
+
+
+ rg_id
+ |
+
+ int
+ |
+
+ Идентификатор ресурсной группы.
+ |
+
+
+
+ state
+ |
+
+ str
+ |
+
+ Статус балансировщика.
+ |
+
+
diff --git a/wiki/5.5.0/модуль-decort_osimage.md b/wiki/5.5.0/модуль-decort_osimage.md
new file mode 100644
index 0000000..139bc69
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_osimage.md
@@ -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)
Default: `X86_64` | Архитектура микропроцессора, для которой предназначен образ. Используется при создании образа.|
+| authenticator | (str)
Значения:
`oauth2`
`jwt` | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Обязательный параметр. |
+| boottype | (string)
Default: `uefi` | Тип загрузки образа. Используется при создании образа.|
+| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) образ. Данный параметр является обязательным. |
+| drivers | (string)
Default: `KVM_X86` | Тип виртуальных машин, подходящих для образа. Используется при создании образа.|
+| hotresize | (bool)
Default: `false` | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы. |
+| image_id | (int) | Идентификатор шаблонного образа.
+| image_name | (str) | Имя шаблонного образа.
+| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
+| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
+| imagetype | (string)
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)
Значения:
`present`
`absent`
Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
+| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
+| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
+| verify_ssl | (bool)
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
+```
+
diff --git a/wiki/5.5.0/модуль-decort_pfw.md b/wiki/5.5.0/модуль-decort_pfw.md
new file mode 100644
index 0000000..65ccf02
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_pfw.md
@@ -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)
Значения:
`oauth2`
`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`).
Ключи словаря:
• `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`
• `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`
• `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;
• `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
+| state | (str)
Значения:
`present`
`absent`
Default: `present` | Целевое состояние правил.
Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
+
+
+## Возвращаемые значения модуля decort_pfw
+
+Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
+
+
+|Ключ | Тип данных | Описание|
+| ------ | ------ | ------ |
+| compute_id | int | Идентификатор ВМ. |
+| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
+| rules | list | Список словарей, описывающих правила переадресации портов.
Ключи словаря:
• `id` (int) - идентификатор правила
• `localIp` (str) - IP-адрес ВМ
• `localPort` (int) - внутренний порт
• `protocol` (str) - протокол
• `publicPortEnd` (int) - верхняя граница диапазона внешних портов
• `publicPortStart` (int) - нижняя граница диапазона внешних портов
• `vmId` (int) - идентификатор ВМ
• `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 }}"
+```
diff --git a/wiki/5.5.0/модуль-decort_rg.md b/wiki/5.5.0/модуль-decort_rg.md
new file mode 100644
index 0000000..24dd2b2
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_rg.md
@@ -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 | Значения:
`oauth2`
`jwt`| Режим аутентификации при подключении к контроллеру облачной платформы DECORT. Данный параметр является обязательным.|
+| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должна быть создана (или уже существует) данная ресурсная группа. Данный параметр является обязательным. |
+| def_netType | (string)
Значения:
`PRIVATE`
`PUBLIC`
`NONE`
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`
Данный параметр является обязательным для указанного режима.
Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в _playbook_.
Если этот параметр не определен в _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 | Значения:
`present`
`absent`
`enabled`
`disabled`
Default: `present` | Целевое состояние ресурсной группы. |
+| permanently | (bool)
Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+
+## Возвращаемые значения модуля 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 }}"
+```
\ No newline at end of file
diff --git a/wiki/5.5.0/модуль-decort_vins.md b/wiki/5.5.0/модуль-decort_vins.md
new file mode 100644
index 0000000..43b95ce
--- /dev/null
+++ b/wiki/5.5.0/модуль-decort_vins.md
@@ -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 | Значения:
`oauth2`
`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`.
Данный параметр является обязательным для указанного режима.
Если параметр не задан в _playbook_, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
+|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
+| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
+| state | (string)
Значения:
`present`
`absent`
`enabled`
`disabled`
Default: `present` | Целевое состояние внутренней сети. |
+| verify_ssl | (bool)
Default: `true` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
+| 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)
Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
+| config_save | (bool)
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
+
+```
+
+
diff --git a/wiki/Home.md b/wiki/Home.md
index 5f23a17..84d2043 100644
--- a/wiki/Home.md
+++ b/wiki/Home.md
@@ -1,5 +1,6 @@
## Документация:
+- [Модули Ansible версии 5.5.0](./5.5.0/Home.md)
- [Модули Ansible версии 5.4.0](./5.4.0/Home.md)
- [Модули Ansible версии 5.3.0](./5.3.0/Home.md)
- [Модули Ansible версии 5.2.6](./5.2.6/Home.md)
\ No newline at end of file