bachelor-thesis/infrastructure/ansible/roles/smtplog/tasks/main.yml

175 lines
4.5 KiB
YAML

---
- name: Set current_host_config variable to access parameters referencing this host
set_fact:
current_host_config: "{{ item.value }}"
when: item.value.hostname == ansible_fqdn
with_dict: "{{ configs.host_config }}"
- name: install python-setuptools for Python interpreter
package:
name: python-setuptools
state: present
become: true
when: ansible_distribution_major_version == "7"
- name: Deinstall postfix
package:
name: postfix
state: absent
become: true
ignore_errors: true
- name: Install python 3.6
package:
name: python36
state: present
become: true
when: ansible_distribution == "CentOS"
#Pip module has a parameter for system packages but it was added in 2.17 which might
# be to new for some developer work stations
#
- name: Install aiosmtpd for pip3
command: pip3 install --break-system-packages aiosmtpd
become: true
when: ansible_distribution == "Ubuntu" and ansible_distribution_major_version == "24"
- name: Install aiosmtpd for pip3
command: pip3 install aiosmtpd
become: true
when: (ansible_distribution == "Ubuntu" and (ansible_distribution_major_version == "20" or ansible_distribution_major_version == "22"))
- name: Install aiosmtpd for pip3
command: pip3 install aiosmtpd
become: true
when: ((ansible_os_family == "RedHat" and (ansible_distribution_major_version == "7" or ansible_distribution_major_version == "8")) or ansible_distribution == "Rocky" )
- name: Create smtplog directory
file:
path: "{{ remote_deployment_dir }}/smtplog"
state: directory
- name: Find smtpservices package
local_action:
module: find
paths: "{{ configs.deployment_dir }}"
patterns: "smtplog*.zip"
file_type: file
register: found_packages
become: false
- name: Order packages to install
set_fact:
latest_package: "{{ found_packages.files | sort(attribute='mtime',reverse=true) | first }}"
- name: Unpack smtpservice
unarchive:
src: "{{ latest_package.path }}"
dest: "{{ remote_deployment_dir }}/smtplog"
- name: Set the smtplog/smtpweb script location
find:
path: "{{ remote_deployment_dir }}/smtplog"
pattern: "smtplog*"
file_type: directory
register: smtplog_deploy_dir
- name: Set smtplog/smtpweb path
set_fact:
smtplog_path: "{{ smtplog_deploy_dir.files | map(attribute='path') | join('') }}"
- name: Install smtplog script
copy:
src: "{{ smtplog_path }}/smtplog.py"
dest: /usr/local/bin/smtplog.py
owner: root
group: root
mode: 0755
remote_src: true
become: true
- name: Install smtplog systemd unit
copy:
src: "{{ smtplog_path }}/smtplog.service"
dest: "{{ smtplog_service_file }}"
owner: root
group: root
mode: 0644
remote_src: true
become: true
- name: Set smtplog log directory
lineinfile:
dest: "{{ smtplog_service_file }}"
regexp: '^WorkingDirectory.*$'
line: "WorkingDirectory={{ smtplog_logdir }}"
state: present
become: true
- name: Set smtplog service start command line
lineinfile:
dest: "{{ smtplog_service_file }}"
regexp: '^ExecStart.*$'
line: "ExecStart={{ smtplog_dir }}/smtplog.py -a {{ current_host_config.smtplog_server_ip | default(current_host_config.ip) }} -d {{smtplog_maildir}} -p {{ smtplog_port }}"
state: present
become: true
- name: Create log directory
file:
path: "{{ smtplog_logdir }}"
state: directory
mode: 0755
become: true
- name: Install smtpweb script
copy:
src: "{{ smtplog_path }}/smtpweb.py"
dest: /usr/local/bin/smtpweb.py
owner: root
group: root
mode: 0755
remote_src: true
become: true
- name: Install smtpweb systemd unit
copy:
src: "{{ smtplog_path }}/smtpweb.service"
dest: "{{ smtpweb_service_file }}"
owner: root
group: root
mode: 0644
remote_src: true
become: true
- name: Set smtpweb log directory
lineinfile:
dest: "{{ smtpweb_service_file }}"
regexp: '^WorkingDirectory.*$'
line: "WorkingDirectory={{ smtpweb_logdir }}"
state: present
become: true
- name: Set smtpweb service start command line
lineinfile:
dest: "{{ smtpweb_service_file }}"
regexp: '^ExecStart.*$'
line: "ExecStart={{ smtplog_dir }}/smtpweb.py -a 127.0.0.1 -d {{smtplog_maildir}} -p {{ smtpweb_port }}"
state: present
become: true
- name: Create smptweb log directory
file:
path: "{{ smtpweb_logdir }}"
state: directory
mode: 0755
become: true
- name: Start and enable smtplog
service: name={{ item }} state=started enabled=True
with_items:
- smtplog
- smtpweb
become: true
# vim:ft=ansible