通过ansible创建非交互式samba用户
尽管以下命令在shell中键入时有效通过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
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模块处理类似的内容
见:
- 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,您将以明文形式传递此密码。此外,请注意,这只是需要包含在您的手册中的一项任务。可能重复的任务