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