通过ansible创建非交互式samba用户

通过ansible创建非交互式samba用户,ansible,samba,Ansible,Samba,尽管以下命令在shell中键入时有效 echo -ne "myser\nmypass\n" | smbpasswd -a -s myuser 以下任务在ansible中失败 - name: add dms samba user command: echo -ne "myuser\nmypass\n" | smbpasswd -a -s myuser notify: restart samba 它不会产生任何错误,但不会创建用户 使用Ubuntu 16.0.4上的ansib

尽管以下命令在shell中键入时有效

echo -ne "myser\nmypass\n" | smbpasswd -a -s myuser
以下任务在ansible中失败

  - name: add dms samba user
    command: echo -ne "myuser\nmypass\n" | smbpasswd -a -s myuser
    notify: restart samba
它不会产生任何错误,但不会创建用户


使用
Ubuntu 16.0.4上的
ansible 2.3.0.0
命令模块不支持流水线。使用shell模块处理类似的内容

见:


如上所述,管道不能与命令模块一起工作。我在过去使用过类似的方法来创建Samba用户:

- 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 }}"

仅当用户尚不存在时,任务才会运行。因此,更改密码在本例中不起作用。

请在Ansible Playbook中尝试此方法:

- name: set Samba passwords for each user
  shell: "printf '{{ item.passwd }}\n{{ item.passwd }}\n' | smbpasswd -a {{ item.name }}"
  with_items:
  - "{{ users }}"
  tags: smbpasswd
请注意,您需要将包含
用户:
的变量文件映射为以下格式:

users:
- name: userName
  passwd: myClearTextPassword
请注意,为了支持smbpasswd,您将以明文形式传递此密码。此外,请注意,这只是需要包含在您的手册中的一项任务。

可能重复的任务