--- - name: Define users ansible.builtin.set_fact: users: - name: automation shell: /bin/bash sudo_nopasswd: true ssh_keys: - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEx+ltCKNIEM7F4PzGLv22cIu7N0Fpn5gxwV02xq0GS9 automation@internet-master.cz" - name: hellsos shell: /bin/bash sudo_nopasswd: true ssh_keys: - "ssh-ed25519 AAAAC3..." - name: jim shell: /bin/bash sudo_nopasswd: true ssh_keys: - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPFS4fsqMjMMu/Bi/884bw7yJBqvWusDRESvanH6Owco jakub@jimbuntu" - name: Pick sudo group per distro ansible.builtin.set_fact: sudo_group: >- {{ 'wheel' if ansible_facts.os_family in ['RedHat','Rocky','AlmaLinux','Fedora','OracleLinux','Suse'] else 'sudo' }} - name: Ensure users exist ansible.builtin.user: name: "{{ item.name }}" shell: "{{ item.shell }}" groups: "{{ sudo_group }}" append: true create_home: true loop: "{{ users }}" - name: Install authorized SSH keys ansible.builtin.authorized_key: user: "{{ item.name }}" key: "{{ item.ssh_keys | join('\n') }}" exclusive: true loop: "{{ users }}" - name: Configure passwordless sudo ansible.builtin.copy: dest: "/etc/sudoers.d/{{ item.name }}" mode: '0440' content: "{{ item.name }} ALL=(ALL:ALL) NOPASSWD:ALL\n" validate: 'visudo -cf %s' loop: "{{ users }}" when: item.sudo_nopasswd