- name: 'Install pure-ftpd related packages' apt: pkg: '{{ item }}' state: 'installed' update_cache: 'yes' with_items: - 'pure-ftpd' when: with_ftp - name: 'Install pure-ftpd configuration' lineinfile: dest: '/etc/pure-ftpd/conf/{{ item.dest }}' regexp: '{{ item.regexp }}' line: '{{ item.line }}' create: yes with_items: - { dest: 'BrokenClientsCompatibility', regexp: '^(yes|no)', line: 'yes' } - { dest: 'ChrootEveryone', regexp: '^(yes|no)', line: 'yes' } - { dest: 'DontResolve', regexp: '^(yes|no)', line: 'yes' } - { dest: 'NoAnonymous', regexp: '^(yes|no)', line: 'yes' } - { dest: 'NoChmod', regexp: '^(yes|no)', line: 'yes' } - { dest: 'PAMAuthentication', regexp: '^(yes|no)', line: 'yes' } - { dest: 'VerboseLog', regexp: '^(yes|no)', line: 'no' } - { dest: 'MinUID', regexp: '^[0-9]+$', line: '34' } # Debian's uid(backup) = 34 notify: - 'Restart pure-ftpd' when: with_ftp - name: 'Enable pure-ftpd internal DB' file: src: '/etc/pure-ftpd/conf/PureDB' path: '/etc/pure-ftpd/auth/80puredb' state: 'link' notify: - 'Restart pure-ftpd' when: with_ftp - name: 'Clean up pure-ftpd internal DB' raw: pure-pw list 2>/dev/null | sed -r 's/^(\S+)\s.*$/\1/' | while read u ; do pure-pw userdel "${u}" ; done when: with_ftp - name: 'Create FTP accounts home directory' file: path: '{{item.home}}' owner: '{{item.uid}}' group: '{{item.gid}}' mode: 0755 state: 'directory' with_items: ftp_accounts when: ftp_accounts and with_ftp - name: 'Add FTP accounts in pure-ftpd' raw: printf "{{item.password}}\n{{item.password}}\n" | pure-pw useradd "{{item.user}}" -d "{{item.home}}" -u "{{item.uid}}" -g "{{item.gid}}" with_items: ftp_accounts when: ftp_accounts and with_ftp - name: 'Rebuild pure-ftpd internal DB' raw: pure-pw mkdb 2>/dev/null when: with_ftp - name: 'Ensure pure-ftpd is running' service: name: 'pure-ftpd' state: 'started' when: with_ftp