---

# ---
# Some Checks
# ---

- name: Check if file '/etc/postfix/relay_domains' exists
  stat:
    path: /etc/postfix/relay_domains
  register: relay_domains_actual

- name: (copy_files.yml) Get checksum of '/etc/postfix/relay_domains'
  set_fact:
    relay_domains_sha1: "{{ relay_domains_actual.stat.checksum }}"
  when:
    - relay_domains_actual.stat.exists
  
# ---
# Copy files - main 
# ---

- name: (copy_files.yml) Copy plain files
  copy:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_plain_files }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when: 
    - copy_plain_files is defined
    - copy_plain_files|length > 0
  tags:
    - copy-files
    - copy-plain-files

- name: (copy_files.yml) Copy plain files Postfix (/etc/postfix)
  copy:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_plain_files_postfix }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when: 
    - inventory_hostname in groups['mail_server']
    - copy_plain_files_postfix is defined
    - copy_plain_files_postfix|length > 0
  tags:
    - copy-files
    - copy-plain-files
  notify: "Reload postfwd"

- name: (copy_files.yml) Copy host specific plain files Postfix (/etc/postfix)
  copy:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_plain_files_postfix_host_specific }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when: 
    - inventory_hostname in groups['mail_server']
    - copy_plain_files_postfix_host_specific is defined
    - copy_plain_files_postfix_host_specific|length > 0
  tags:
    - copy-files
    - copy-plain-files
  notify: "Reload postfwd"

- name: (copy_files.yml) Copy plain files Postfix Firewall (postfwd)
  copy:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_plain_files_postfwd }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when: 
    - inventory_hostname in groups['mail_server']
    - copy_plain_files_postfwd is defined
    - copy_plain_files_postfwd|length > 0
  tags:
    - copy-files
    - copy-plain-files
  notify: "Reload postfwd"

- name: (copy_files.yml) Copy host specific plain files Postfix Firewall (postfwd)
  copy:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_plain_files_postfwd_host_specific }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when: 
    - inventory_hostname in groups['mail_server']
    - copy_plain_files_postfwd_host_specific is defined
    - copy_plain_files_postfwd_host_specific|length > 0
  tags:
    - copy-files
    - copy-plain-files
  notify: "Reload postfwd"


- name: (copy_files.yml) Copy template files
  template:
    src: '{{ item.src_path }}'
    dest: '{{ item.dest_path }}'
    owner: root
    group: root
    mode: '0644'
  loop: "{{ copy_template_files }}"
  loop_control:
    label: 'dest: {{ item.name }}'
  when:
    - copy_template_files is defined
    - copy_template_files|length > 0
  tags:
    - copy-files
    - copy-template-files

# ---
# Some final tasks
# ---

- name: Get checksum oif (possible upodated) file '/etc/postfix/relay_domains' exists
  stat:
    path: /etc/postfix/relay_domains
  register: relay_domains_new

- name: (copy_files.yml) Get checksum of '/etc/postfix/relay_domains'
  set_fact:
    relay_domains_sha1_new: "{{ relay_domains_new.stat.checksum }}"
  when:
    - relay_domains_new.stat.exists
    
- name: (copy_files.yml) Renew database /etc/postfix/relay_domains.db
  shell: '/usr/sbin/postmap btree:/etc/postfix/relay_domains'
  when:
    - relay_domains_actual.stat.exists
    - relay_domains_new.stat.exists
    - relay_domains_actual.stat.checksum != relay_domains_new.stat.checksum
  notify: "Reload postfwd"
