ansiblesamba

Non interactive samba user creation via ansible


Although the following command works when typing in in shell

echo -ne "myser\nmypass\n" | smbpasswd -a -s myuser

The following task fails in ansible

  - name: add dms samba user
    command: echo -ne "myuser\nmypass\n" | smbpasswd -a -s myuser
    notify: restart samba

It does not produce any errors, but the user is not created.

Working with ansible 2.3.0.0 on Ubuntu 16.0.4.


Solution

  • As stated, pipes won't work with the command module. I've used something like this in the past to create Samba users:

    - name: Configure Samba users.
      shell: >
        (pdbedit --user={{ item.username }} 2>&1 > /dev/null)
        || (echo '{{ item.password }}'; echo '{{ item.password }}')
        | smbpasswd -s -a {{ item.username }}
      register: smbpasswd
      changed_when: "'Added user' in smbpasswd.stdout"
      with_items: "{{ samba_users }}"
      loop_control:
        label: "{{ item.username }}"
    

    The task will only run if the user does not exist yet. So changing passwords won't work with this example.