首页 > 解决方案 > 针对无效用户的 Ansible Cisco 配置合规性检查

问题描述

我正在尝试使用 Ansible 验证 Cisco 配置。我希望能够判断是否配置了除有效用户之外的任何用户。

有效用户:用户名 admin,用户名只读

无效用户:用户名secretbackdoor

我试图创建一个用户列表,然后标记任何无效的用户。我到目前为止的代码如下:

---
- hosts: cisco
  gather_facts: no

  tasks:

- name: show run
  ios_command:
    commands:
     - show run
  register: cisco_show_run

    - name: list_cisco_usernames
  set_fact: cisco_usernames="{{ cisco_show_run.stdout[0] | regex_findall('username (\S+)', multiline=True) }}"

- name: print usernames
  debug:
    msg: {{ item }}
  with_items: "{{ cisco_usernames }}"

这将打印出三个用户。不知道下一步该去哪里。

标签: ansiblecisco

解决方案


“设置理论过滤器”可能是下一个选项。例如

- hosts: localhost
  vars:
    valid_users: [admin, readonly]
    invalid_users: [secretbackdoor]
    cisco_usernames: [admin, readonly, secretbackdoor]

  tasks:

    - name: Display users not in valid_users
      debug:
        msg: Not among valid users {{ not_valid }}
      when: not_valid|length > 0
      vars:
        not_valid: "{{ cisco_usernames|difference(valid_users) }}"

    - name: Display users in invalid_users
      debug:
        msg: Among invalid users {{ not_valid }}
      when: not_valid|length > 0
      vars:
        not_valid: "{{ cisco_usernames|intersect(invalid_users) }}"

给出(删节)

ok: [localhost] => 
  msg: Not among valid users ['secretbackdoor']

ok: [localhost] => 
  msg: Among invalid users ['secretbackdoor']

推荐阅读