'dict object' has no attribute

32 views
Skip to first unread message

Jost Rakovec

unread,
Dec 14, 2020, 9:37:05 AM12/14/20
to Ansible Project
Hi

I would like to lock list of users on linux only if user exist, but have some problems:

lock-user1.yml  
---
- name: lock users
 hosts: webservers
 tasks:

   - name: Check if user exists
     getent:  
       database: passwd
       key: "{{ item }}"
     register: user_exists
     ignore_errors: true
     loop:  
       - uporabnik1
       - uporabnik2
       - uporabnik3
       - uporabnik4
       - uporabnik5
       - uporabnik15

   - name: lock
     user:
       name: "{{ item }}"
       password_lock: yes
     when: user_exists.rc == 0
     loop:
       - uporabnik1
       - uporabnik2
       - uporabnik3
       - uporabnik4
       - uporabnik5
       - uporabnik15

error:
fatal: [serverb]: FAILED! => {"msg": "The conditional check 'user_exists.rc == 0' failed. The error was: error while evaluating conditi
onal (user_exists.rc == 0): 'dict object' has no attribute 'rc'\n\nThe error appears to be in '/home/student/acer/lock-user1.yml': line
20, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n    -
name: lock\n      ^ here\n"}

question is, how can I get list of users to put them in  play  - name: lock

thanks

Vladimir Botka

unread,
Dec 14, 2020, 10:55:40 AM12/14/20
to Jost Rakovec, ansible...@googlegroups.com
On Mon, 14 Dec 2020 06:37:05 -0800 (PST)
Jost Rakovec <rak...@gmail.com> wrote:

> ... lock list of users on linux only if user exist

Try this

- name: Get passwd
getent:
database: passwd

- name: lock
user:
name: "{{ item }}"
password_lock: yes
loop: "{{ getent_passwd|intersect(my_users) }}"
vars:
my_users:
- uporabnik1
- uporabnik2
- uporabnik3
- uporabnik4
- uporabnik5

--
Vladimir Botka

jr

unread,
Dec 14, 2020, 1:23:06 PM12/14/20
to Ansible Project
thx Vladimir this works to, but I already made this:

 
---
- hosts: servera
 tasks:
   - getent:
       database: passwd

- name: lock
     user:
       name: "{{ item }}"
       password_lock: yes
     loop:
       - uporabnik1
       - uporabnik2
       - uporabnik3
       - uporabnik4
       - uporabnik5
       - uporabnik15
     when: item in my_users
     vars:
       my_users: "{{ getent_passwd.keys()|list }}"


Reply all
Reply to author
Forward
0 new messages