Ansible-Lint检测自定义Keycloak模块参数时抛出异常警告的解决问询
Keycloak自定义Ansible模块ansible-lint警告问题
自定义模块参数定义
我编写了一个用于管理Keycloak领域的自定义Ansible模块,其中包含smtp_server子字典参数,模块参数定义代码如下:
def keycloak_argument_spec(): return dict( auth_keycloak_url=dict(type='str', aliases=['url'], required=True), auth_client_id=dict(type='str', default='admin-cli'), auth_realm=dict(type='str', required=True), auth_client_secret=dict(type='str', default=None), auth_username=dict(type='str', aliases=['username'], required=True), auth_password=dict(type='str', aliases=['password'], required=True, no_log=True), validate_certs=dict(type='bool', default=True) ) def main(): argument_spec = keycloak_argument_spec() meta_args = dict( state=dict(default='present', choices=['present', 'absent']), realm=dict(type='str', required=True), smtp_server=dict(type='dict', aliases=['smtpServer'], options={ 'host': dict(default='localhost'), 'port': dict(type='int', default=25), 'auth': dict(type='bool', default=False), 'ssl': dict(type='bool', default=False), 'starttls': dict(type='bool', default=False), 'user': dict(no_log=True), 'password': dict(no_log=True), 'envelopeFrom': dict(), 'from': dict(), 'fromDisplayName': dict(), 'replyTo': dict(), 'replyToDisplayName': dict(), }), ) argument_spec.update(meta_args) module = AnsibleModule( argument_spec = argument_spec, supports_check_mode=True )
对应的Ansible任务配置
- name: "Create realm" keycloak_realm: realm: "{{ keycloak_realm.key }}" smtp_server: host: "{{ keycloak_realm.value.mail.host | default('localhost') }}" port: "{{ keycloak_realm.value.mail.port | default(25) | int }}" starttls: "{{ keycloak_realm.value.mail.starttls | default(false) }}" ssl: "{{ keycloak_realm.value.mail.ssl | default(false) }}" auth: "{{ keycloak_realm.value.mail.auth | default(false) }}" user: "{{ keycloak_realm.value.mail.user | default(omit) }}" password: "{{ keycloak_realm.value.mail.password | default(omit) }}" replyTo: "{{ keycloak_realm.value.mail.replyto | default(omit) }}" from: "{{ keycloak_realm.value.mail.from | default(omit) }}" fromDisplayName: "{{ keycloak_realm.value.mail.from_name | default(omit) }}" state: "present"
遇到的ansible-lint警告
运行ansible-lint(版本6.14.2,基于ansible 2.14.1)检测该任务时,出现如下警告:
WARNING Ignored exception from ArgsRule.
while processing roles/keycloak/tasks/install/configure_realm.yml (tasks): 'port'
已尝试的无效操作
- 使用
ansible-lint -vv尝试获取堆栈跟踪,但未成功 - 调整模块内参数顺序,会触发其他int或bool类型参数的警告
- 将
port参数改为type=str类型,其他非str类型参数仍会触发警告 - 用
default(omit)处理可选参数,警告依旧 - 尝试另一种
smtp_server字典定义方式,问题未解决
实际执行任务一切正常,但ansible-lint对该字典参数的检测存在问题,请问有什么方法可以消除该警告?
内容的提问来源于stack exchange,提问作者TRW
相关产品推荐
相关产品推荐

