定制ONTAP Day 1解决方案
要根据您的需求自定义ONTAP Day 1解决方案、您可以添加或更改Ands还是 角色。
角色表示在Andsent框架内的微服务。每个微服务执行一个操作。例如、ONTAP Day 0是包含多个微服务的服务。
添加Ands处理 角色
您可以添加Ans可 通过角色为您的环境自定义解决方案。所需角色由在Ands还是 在框架中定义的服务定义来定义。
角色必须满足以下要求才能用作微服务:
-
接受变量中的参数列表
args
。 -
对于每个块、使用具有特定要求的"Andsing"结构。
-
使用单个Ans还是 模块并在块中定义单个任务。
-
根据本节详细介绍的要求实施每个可用的模块参数。
每个角色都必须支持以下变量:
-
mode
:如果将模式设置为角色,则 `test`尝试导入显示该角色所执行的 `test.yml`操作而不实际执行该角色。由于某些相互依赖关系、并非总是可以实现这一点。 -
status
:执行手册的整体状态。如果未将此值设置为success
、则不会执行此角色。 -
args
:具有与角色参数名称匹配的关键字的角色专用词典列表。 -
global_log_messages
:在执行播放手册期间收集日志消息。每次执行角色时都会生成一个条目。 -
log_name
:用于引用条目中的角色的名称global_log_messages
。 -
task_descr
:有关该角色的作用的简要说明。 -
service_start_time
:用于跟踪每个角色执行时间的时间戳。 -
playbook_status
:Ans负责人 的状态。 -
role_result
:包含角色输出并包含在条目中的每条消息中的变量global_log_messages
。
示例角色结构
以下示例提供了实施微服务的角色的基本结构。您必须更改此示例中适用于您的配置的变量。
显示示例
基本角色结构:
- name: Set some role attributes
set_fact:
log_name: "<LOG_NAME>"
task_descr: "<TASK_DESCRIPTION>"
- name: "{{ log_name }}"
block:
- set_fact:
service_start_time: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
- name: "Provision the new user"
<MODULE_NAME>:
#-------------------------------------------------------------
# COMMON ATTRIBUTES
#-------------------------------------------------------------
hostname: "{{ clusters[loop_arg['hostname']]['mgmt_ip'] }}"
username: "{{ clusters[loop_arg['hostname']]['username'] }}"
password: "{{ clusters[loop_arg['hostname']]['password'] }}"
cert_filepath: "{{ loop_arg['cert_filepath'] | default(omit) }}"
feature_flags: "{{ loop_arg['feature_flags'] | default(omit) }}"
http_port: "{{ loop_arg['http_port'] | default(omit) }}"
https: "{{ loop_arg['https'] | default('true') }}"
ontapi: "{{ loop_arg['ontapi'] | default(omit) }}"
key_filepath: "{{ loop_arg['key_filepath'] | default(omit) }}"
use_rest: "{{ loop_arg['use_rest'] | default(omit) }}"
validate_certs: "{{ loop_arg['validate_certs'] | default('false') }}"
<MODULE_SPECIFIC_PARAMETERS>
#-------------------------------------------------------------
# REQUIRED ATTRIBUTES
#-------------------------------------------------------------
required_parameter: "{{ loop_arg['required_parameter'] }}"
#-------------------------------------------------------------
# ATTRIBUTES w/ DEFAULTS
#-------------------------------------------------------------
defaulted_parameter: "{{ loop_arg['defaulted_parameter'] | default('default_value') }}"
#-------------------------------------------------------------
# OPTIONAL ATTRIBUTES
#-------------------------------------------------------------
optional_parameter: "{{ loop_arg['optional_parameter'] | default(omit) }}"
loop: "{{ args }}"
loop_control:
loop_var: loop_arg
register: role_result
rescue:
- name: Set role status to FAIL
set_fact:
playbook_status: "failed"
always:
- name: add log msg
vars:
role_log:
role: "{{ log_name }}"
timestamp:
start_time: "{{service_start_time}}"
end_time: "{{ lookup('pipe', 'date +%Y-%m-%d@%H:%M:%S') }}"
service_status: "{{ playbook_status }}"
result: "{{role_result}}"
set_fact:
global_log_msgs: "{{ global_log_msgs + [ role_log ] }}"
-
<NAME>
:必须为每个微服务提供的可替换值。 -
<LOG_NAME>
:用于日志记录的角色的简称。例如,ONTAP_VOLUME
。 -
<TASK_DESCRIPTION>
:微服务功能的简要说明。 -
<MODULE_NAME>
:任务的Ans担负 模块名称。顶级 execute.yml`操作手册用于指定 `netapp.ontap`集合。如果模块是集合的一部分 `netapp.ontap
,则无需完全指定模块名称。 -
<MODULE_SPECIFIC_PARAMETERS>
:特定于用于实施微服务的模块的Ans得 模块参数。以下列表介绍了参数的类型以及应如何对其进行分组。-
必需参数:所有必需参数均指定、无默认值。
-
具有特定于微服务的默认值的参数(与模块文档指定的默认值不同)。
-
所有剩余参数均 `default(omit)`用作默认值。
-
使用多层词典作为模块参数
某些NetApp提供的Ans典 模块使用多级别词典作为模块参数(例如、固定和自适应QoS策略组)。
如果使用这些词典、则单独使用 `default(omit)`不起作用、尤其是当有多个词典且它们互斥时。
如果您需要使用多级别词典作为模块参数、则应将此功能拆分为多个微服务(角色)、以确保每个微服务都能为相关词典至少提供一个二级词典值。
以下示例显示了固定和自适应QoS策略组、它们分别分布在两个微服务中。
第一个微服务包含固定的QoS策略组值:
fixed_qos_options: capacity_shared: "{{ loop_arg['fixed_qos_options']['capacity_shared'] | default(omit) }}" max_throughput_iops: "{{ loop_arg['fixed_qos_options']['max_throughput_iops'] | default(omit) }}" min_throughput_iops: "{{ loop_arg['fixed_qos_options']['min_throughput_iops'] | default(omit) }}" max_throughput_mbps: "{{ loop_arg['fixed_qos_options']['max_throughput_mbps'] | default(omit) }}" min_throughput_mbps: "{{ loop_arg['fixed_qos_options']['min_throughput_mbps'] | default(omit) }}"
第二个微服务包含自适应QoS策略组值:
adaptive_qos_options: absolute_min_iops: "{{ loop_arg['adaptive_qos_options']['absolute_min_iops'] | default(omit) }}" expected_iops: "{{ loop_arg['adaptive_qos_options']['expected_iops'] | default(omit) }}" peak_iops: "{{ loop_arg['adaptive_qos_options']['peak_iops'] | default(omit) }}"