- name: Get secrets for SNMP manager set_fact: manager: "{{ lookup('passwordstore', 'host/'+snmp_manager.name, returnall=true, missing='empty') | from_yaml }}" - name: Get existing SNMP users set_fact: current_user: "{{ ansible_net_config | split('\n') | select('match', '^snmp-server usm-user '+manager.snmp_user) }}" target_user: "snmp-server usm-user {{ manager.snmp_user }} authentication sha {{ manager.snmp_pass }} privacy des {{ manager.snmp_pass }} " - name: Remove existing SNMP user to reset password when: "current_user and target_user is not in current_user" block: - name: Remove SNMP user ansible.netcommon.cli_config: config: "{{ item }}" loop: - "no snmp-server usm-user {{ manager.snmp_user }}" - "no snmp-server group public user {{ manager.snmp_user }} security-model usm" notify: write config - set_fact: current_user: false - name: Create SNMP user when: "not current_user" ansible.netcommon.cli_config: config: "{{ item }}" loop: - "{{ target_user }}" - "snmp-server group public user {{ manager.snmp_user }} security-model usm" no_log: true notify: write config