245 lines
7.3 KiB
YAML
245 lines
7.3 KiB
YAML
---
|
|
# ---
|
|
# Some Checks
|
|
# ---
|
|
|
|
- name: Check if file '/etc/postfix/relay_domains' exists
|
|
ansible.builtin.stat:
|
|
path: /etc/postfix/relay_domains
|
|
register: common_relay_domains_actual
|
|
|
|
- name: (copy_files.yml) Get checksum of '/etc/postfix/relay_domains'
|
|
ansible.builtin.set_fact:
|
|
common_relay_domains_sha1: "{{ common_relay_domains_actual.stat.checksum }}"
|
|
when:
|
|
- common_relay_domains_actual.stat.exists
|
|
|
|
# ---
|
|
# Copy files - main
|
|
# ---
|
|
|
|
- name: (copy_files.yml) Copy plain files
|
|
ansible.builtin.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) HOST-TREE precheck host specific source directory on controller
|
|
ansible.builtin.stat:
|
|
path: "{{ role_path }}/files/{{ inventory_hostname }}"
|
|
delegate_to: localhost
|
|
become: false
|
|
register: common_host_dir
|
|
when:
|
|
- inventory_hostname in groups['mail_server']
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
|
|
- name: (copy_files.yml) HOST-TREE precheck host specific template directory on controller
|
|
ansible.builtin.stat:
|
|
path: "{{ role_path }}/templates/{{ inventory_hostname }}"
|
|
delegate_to: localhost
|
|
become: false
|
|
register: common_host_template_dir
|
|
when:
|
|
- inventory_hostname in groups['mail_server']
|
|
tags:
|
|
- copy-files
|
|
- copy-template-files
|
|
|
|
- name: (copy_files.yml) GLOBAL copy plain files Postfix (/etc/postfix)
|
|
ansible.builtin.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
|
|
- not (
|
|
common_host_dir.stat.exists and
|
|
(lookup('ansible.builtin.fileglob', role_path ~ '/files/' ~ inventory_hostname ~ item.dest_path, wantlist=True) | length > 0)
|
|
)
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
notify: "Reload postfwd"
|
|
|
|
- name: (copy_files.yml) FALLBACK legacy copy host specific plain files Postfix (/etc/postfix)
|
|
ansible.builtin.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
|
|
- not common_host_dir.stat.exists
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
notify: "Reload postfwd"
|
|
|
|
- name: (copy_files.yml) GLOBAL copy plain files Postfix Firewall (postfwd)
|
|
ansible.builtin.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
|
|
- not (
|
|
common_host_dir.stat.exists and
|
|
(lookup('ansible.builtin.fileglob', role_path ~ '/files/' ~ inventory_hostname ~ item.dest_path, wantlist=True) | length > 0)
|
|
)
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
notify: "Reload postfwd"
|
|
|
|
- name: (copy_files.yml) FALLBACK legacy copy host specific plain files Postfix Firewall (postfwd)
|
|
ansible.builtin.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
|
|
- not common_host_dir.stat.exists
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
notify: "Reload postfwd"
|
|
|
|
- name: (copy_files.yml) HOST-TREE copy all host specific files by directory structure
|
|
ansible.builtin.copy:
|
|
src: "{{ role_path }}/files/{{ inventory_hostname }}/"
|
|
dest: "/"
|
|
owner: root
|
|
group: root
|
|
mode: preserve
|
|
when:
|
|
- inventory_hostname in groups['mail_server']
|
|
- common_host_dir.stat.exists
|
|
- common_host_dir.stat.isdir
|
|
tags:
|
|
- copy-files
|
|
- copy-plain-files
|
|
notify: "Reload postfwd"
|
|
|
|
- name: (copy_files.yml) HOST-TREE collect host specific template files by directory structure
|
|
ansible.builtin.find:
|
|
paths: "{{ role_path }}/templates/{{ inventory_hostname }}"
|
|
recurse: true
|
|
file_type: file
|
|
patterns: "*.j2"
|
|
delegate_to: localhost
|
|
become: false
|
|
register: common_host_template_files
|
|
when:
|
|
- inventory_hostname in groups['mail_server']
|
|
- common_host_template_dir.stat.exists
|
|
- common_host_template_dir.stat.isdir
|
|
tags:
|
|
- copy-files
|
|
- copy-template-files
|
|
|
|
- name: (copy_files.yml) HOST-TREE render host specific template files by directory structure
|
|
ansible.builtin.template:
|
|
src: "{{ item.path }}"
|
|
dest: "/{{ item.path | regex_replace('^' ~ (role_path ~ '/templates/' ~ inventory_hostname ~ '/'), '') | regex_replace('\\.j2$', '') }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
loop: "{{ common_host_template_files.files }}"
|
|
loop_control:
|
|
label: "dest: /{{ item.path | regex_replace('^' ~ (role_path ~ '/templates/' ~ inventory_hostname ~ '/'), '') | regex_replace('\\.j2$', '') }}"
|
|
when:
|
|
- inventory_hostname in groups['mail_server']
|
|
- common_host_template_dir.stat.exists
|
|
- common_host_template_dir.stat.isdir
|
|
- common_host_template_files.files | length > 0
|
|
tags:
|
|
- copy-files
|
|
- copy-template-files
|
|
|
|
- name: (copy_files.yml) GLOBAL copy template files (variable list)
|
|
ansible.builtin.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
|
|
- not (
|
|
inventory_hostname in groups['mail_server'] and
|
|
common_host_template_dir.stat.exists and
|
|
(lookup('ansible.builtin.fileglob', role_path ~ '/templates/' ~ inventory_hostname ~ item.dest_path ~ '.j2', wantlist=True) | length > 0)
|
|
)
|
|
tags:
|
|
- copy-files
|
|
- copy-template-files
|
|
|
|
# ---
|
|
# Some final tasks
|
|
# ---
|
|
|
|
- name: Get checksum oif (possible upodated) file '/etc/postfix/relay_domains' exists
|
|
ansible.builtin.stat:
|
|
path: /etc/postfix/relay_domains
|
|
register: common_relay_domains_new
|
|
|
|
- name: (copy_files.yml) Get checksum of '/etc/postfix/relay_domains'
|
|
ansible.builtin.set_fact:
|
|
common_relay_domains_sha1_new: "{{ common_relay_domains_new.stat.checksum }}"
|
|
when:
|
|
- common_relay_domains_new.stat.exists
|
|
|
|
- name: (copy_files.yml) Renew database /etc/postfix/relay_domains.db
|
|
ansible.builtin.command: "/usr/sbin/postmap btree:/etc/postfix/relay_domains"
|
|
changed_when: true
|
|
when:
|
|
- common_relay_domains_actual.stat.exists
|
|
- common_relay_domains_new.stat.exists
|
|
- common_relay_domains_actual.stat.checksum != common_relay_domains_new.stat.checksum
|
|
notify: "Reload postfwd"
|