add Final Infrastructure Setup

This commit is contained in:
Patryk Hegenberg 2026-03-29 13:45:10 +02:00
commit 7733dde658
174 changed files with 204949 additions and 0 deletions

View file

@ -0,0 +1,128 @@
---
- name: Create tixstream group
group:
name: "{{ smbgroup }}"
state: present
- name: create tixstream user
user:
name: "{{ smbuser }}"
shell: /bin/bash
groups: "{{ smbgroup }}"
append: yes
- name: create deployment directory
file: path={{ remote_deployment_dir }} state=directory
- include_tasks: mft-ubuntu-24.yml
when: ansible_distribution == "Ubuntu" and ansible_facts['distribution_version'] == "24.04"
- name: Print the package name
debug:
msg: "The box is {{ package_to_install }}"
- unarchive:
src: "{{ package_to_install.path }}"
dest: "{{ remote_deployment_dir }}"
when: oldpackage is undefined and newpackage is undefined
- unarchive:
src: "{{ package_to_install }}"
dest: "{{ remote_deployment_dir }}"
when: oldpackage is defined or newpackage is defined
- name: List unarchived MFT bundle directory
find:
paths: "{{ remote_deployment_dir }}"
patterns: "tixstream-mft-ubuntu*"
file_type: directory
register: found_directories
- name: Get latest unarchived MFT bundle directory
set_fact:
package_dir: "{{ found_directories.files | sort(attribute='mtime',reverse=true) | first }}"
- name: Check if an old version should be deployed (install script has different name)
stat: path={{ package_dir.path }}/install_mft_bundle.sh
register: old_install_script
- name: Set the correct name of the install script
set_fact:
install_script: "{{'install_mft_bundle.sh' if old_install_script.stat.exists else 'install.sh'}}"
- name: Execute MFT install script
command: "{{ package_dir.path }}/{{ install_script }} --assumeyes -u {{ smbuser }} -g {{ smbgroup }}"
- name: Set name to the nodes name in transfer-job-manager config
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^custom.transfer-job-manager.name.*$'
line: "custom.transfer-job-manager.name={{ item.value.name }}"
state: present
when: item.value.hostname == ansible_fqdn and item.value.contains_setup is defined and "mft" in item.value.contains_setup
with_dict: "{{ configs.host_config }}"
- name: Set hostname to the nodes hostname in transfer-job-manager config for a normal MFT node
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^custom.transfer-job-manager.hostname.*$'
line: "custom.transfer-job-manager.hostname={{ item.value.hostname }}"
state: present
when: item.value.hostname == ansible_fqdn and item.value.contains_setup is defined and "mft" in item.value.contains_setup
with_dict: "{{ configs.host_config }}"
- name: Set hostname to the nodes hostname in transfer-job-manager config for a clustered MFT node
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^custom.transfer-job-manager.hostname.*$'
line: "custom.transfer-job-manager.hostname={{ item.value.cluster_hostname }}"
state: present
when: item.value.hostname == ansible_fqdn and item.value.contains_setup is defined and "mft-cluster-node" in item.value.contains_setup
with_dict: "{{ configs.host_config }}"
- name: Set transfer-job-manager job scheduling options in the config
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^{{ item.option }}.*$'
line: "{{ item.line }}"
state: present
with_items: "{{ configs.mft_services.transfer_job_manager.scheduler_properties }}"
- name: Set transfer-job-manager sending max-datarate options in the config
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^custom.transfer-job-manager.default-sending-data-rate'
line: "custom.transfer-job-manager.default-sending-data-rate=10000000"
state: present
- name: Set transfer-job-manager receiving max-datarate options in the config
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^custom.transfer-job-manager.default-receiving-data-rate'
line: "custom.transfer-job-manager.default-receiving-data-rate=10000000"
state: present
- name: Enable transfer-job-manager watch folder feature
lineinfile:
dest: "{{ configs.mft_services.transfer_job_manager.config }}"
regexp: '^{{ item.option }}.*$'
line: "{{ item.line }}"
state: present
with_items: "{{ configs.mft_services.transfer_job_manager.watchfolder_properties }}"
# Use command module because service module fails to just 'enable' the services
- name: Enable MFT services to start on boot for centos
command: chkconfig {{ item.value.name }} on
with_dict: "{{ configs.mft_services }}"
when: (ansible_distribution == 'CentOS')
- name: Enable MFT services to start on boot for Ubuntu
service:
name: "{{ item.value.name }}"
enabled: yes
with_dict: "{{ configs.mft_services }}"
when: (ansible_distribution == 'Ubuntu')
# vim:ft=ansible

View file

@ -0,0 +1,102 @@
---
- name: Install package dependencies for MFT on Ubuntu Java 8
apt:
name: openjdk-8-jdk
state: present
update_cache: yes
become: true
when: '"java8" in current_host_config.contains_setup'
- name: Install package dependencies for MFT on Ubuntu Java 11
apt:
name: openjdk-11-jdk
state: present
update_cache: yes
become: true
when: '"java11" in current_host_config.contains_setup'
- name: Install package dependencies for MFT on Ubuntu Java 21
apt:
name: openjdk-21-jre-headless
state: present
update_cache: yes
become: true
when: '"java21" in current_host_config.contains_setup'
#- name: Get package dependencies for MFT on CentOS Java21
# shell: "curl -O https://download.java.net/java/GA/jdk21.0.1/415e3f918a1f4062a0074a2794853d0d/12/GPL/openjdk-21.0.1_linux-x64_bin.tar.gz && sudo tar xvf openjdk-21.0.1_linux-x64_bin.tar.gz && sudo mv jdk-21.0.1 /opt/"
# args:
# chdir: /home/vagrant
#become: true
#when: '"java21" in current_host_config.contains_setup'
#- name: Get package dependencies for MFT on CentOS Java21
#shell: "sudo update-alternatives --install /usr/bin/java java /opt/jdk-21.0.1/bin/java 99"
#args:
# chdir: /opt/
#become: true
#when: '"java21" in current_host_config.contains_setup'
- name: List MFT packages
local_action: find paths="{{ configs.deployment_dir }}" patterns="tixstream-mft-{{ ansible_distribution|lower }}-24*.tgz" file_type=file
become: false
register: found_packages
- name: Get latest package
set_fact:
package_to_install: "{{ found_packages.files | sort(attribute='mtime',reverse=true) | first }}"
when: package_name is undefined or package_name == ""
- name: Set package name
set_fact:
package_to_install: "{{ configs.deployment_dir }}/{{ package_name }}"
when: package_name is defined and package_name != ""
- name: Get MFT version
set_fact:
mft_version: "{{ package_to_install.path | basename | regex_search('[0-9]+\\.[0-9]+\\.[0-9]+(?:\\.[0-9]+)?') }}"
- name: Check if Codemeter is installed
shell: "cmu -v"
args:
executable: /bin/bash
register: codemeter_installed
ignore_errors: true
when: mft_version is version('2.1.0', '>=')
- name: Codemeter packages local
local_action: find paths="{{ configs.deployment_dir }}" patterns="codemeter*.deb" file_type=file
become: false
register: codemeter_packages
when: mft_version is version('2.1.0', '>=')
- name: Set deb package
set_fact:
codemeter_deb_path: "{{ codemeter_packages.files | sort(attribute='mtime',reverse=true) | first }}"
when: mft_version is version('2.1.0', '>=')
- name: Copy Codemeter deb to VM
copy:
src: "{{ codemeter_deb_path.path }}"
dest: "{{ remote_deployment_dir }}"
when: mft_version is version('2.1.0', '>=')
- name: Codemeter packages remote
find:
paths: "{{ remote_deployment_dir }}"
patterns: "codemeter*.deb"
file_type: file
register: remote_codemeter_path
when: mft_version is version('2.1.0', '>=')
- name: Set deb package remote
set_fact:
codemeter_remote_deb: "{{ remote_codemeter_path.files | sort(attribute='mtime',reverse=true) | first }}"
when: mft_version is version('2.1.0', '>=')
- name: Install Codemeter
apt:
deb: "{{ codemeter_remote_deb.path }}"
state: present
when: codemeter_installed.rc is defined and codemeter_installed.rc != 0 and mft_version is version('2.1.0', '>=')