Zammad-Rolle

This commit is contained in:
phil 2021-07-28 18:28:22 +02:00
commit a6b16394ed
27 changed files with 552 additions and 0 deletions

52
tasks/database.yml Normal file
View file

@ -0,0 +1,52 @@
---
- name: "database: Datenbank anlegen"
postgresql_db:
name: "{{ zammad_database_name }}"
encoding: UTF8
template: template0
become: true
become_user: postgres
delegate_to: "{{ database_host }}"
- name: "database: Benutzer einrichten"
postgresql_user:
name: "{{ zammad_database_user }}"
password: "{{ zammad_database_password }}"
db: "{{ zammad_database_name }}"
become: true
become_user: postgres
delegate_to: "{{ database_host }}"
- name: "database: Konfiguration kopieren"
template:
src: database.yml.j2
dest: "{{ zammad_database_configuration }}"
- name: "database: Stoppe Service"
service:
name: zammad
state: stopped
register: unused_disable
failed_when: "unused_disable is failed and ('find' not in unused_disable.msg and 'found' not in unused_disable.msg)"
- name: "database: Führe Migrationen aus"
shell: "RAILS_ENV=production rbenv exec bundle exec rake db:migrate"
args:
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"
- name: "database: Führe Seeds aus"
shell: "RAILS_ENV=production rbenv exec bundle exec rake db:seed"
args:
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"
when: zammad_database_configured.stat.exists == False
- name: "database: Precompile Assets"
shell: "RAILS_ENV=production rbenv exec bundle exec rake assets:precompile"
args:
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"

29
tasks/gateway.yml Normal file
View file

@ -0,0 +1,29 @@
---
- name: "gateway: Domain zur Zertifikatsliste hinzufügen"
lineinfile:
path: /etc/dehydrated/domains.txt
insertafter: "^### systemausfall"
line: "{{ zammad_domain }}"
when: "'dehydrated' in ansible_facts.packages"
register: add_certificate
delegate_to: "{{ gateway_host }}"
- name: "gateway: Zertifikat erstellen"
command: dehydrated --cron -g
when: add_certificate.changed
delegate_to: "{{ gateway_host }}"
- name: "gateway: Proxy einrichten"
template:
src: nginx-rp-site.j2
dest: "/etc/nginx/sites-available/{{ zammad_domain }}"
force: no
delegate_to: "{{ gateway_host }}"
- name: "gateway: Seite aktivieren"
file:
src: "/etc/nginx/sites-available/{{ zammad_domain }}"
dest: "/etc/nginx/sites-enabled/{{ zammad_domain }}"
state: link
notify: reload reverse_proxy
delegate_to: "{{ gateway_host }}"

4
tasks/locales.yml Normal file
View file

@ -0,0 +1,4 @@
- name: "locales: Richte locales ein"
locale_gen:
name: en_US.UTF-8
state: present

17
tasks/main.yml Normal file
View file

@ -0,0 +1,17 @@
- name: "Prüfe vorhandene Datenbank-Konfiguration"
stat:
path: "{{ zammad_database_configuration }}"
register: zammad_database_configured
- import_tasks: packages.yml
- import_tasks: locales.yml
- import_tasks: user.yml
- import_tasks: zammad.yml
- import_tasks: ruby.yml
- import_tasks: database.yml
- import_tasks: syslog.yml
- import_tasks: webserver.yml
- import_tasks: systemd.yml
- import_tasks: monit.yml
tags: monit
- import_tasks: gateway.yml

5
tasks/monit.yml Normal file
View file

@ -0,0 +1,5 @@
- name: "monit: Kopiere Konfiguration"
template:
src: monit.j2
dest: /etc/monit/conf-enabled/zammad
notify: reload monit

37
tasks/packages.yml Normal file
View file

@ -0,0 +1,37 @@
---
- name: "packages: Fakten sammeln"
package_facts:
manager: apt
- name: "packages: Abhängigkeiten installieren"
apt:
default_release: "{{ debian_version }}"
pkg:
- autoconf
- automake
- autotools-dev
- bison
- build-essential
- curl
- gawk
- git
- libffi-dev
- libgdbm-dev
- libgmp-dev
- libimlib2-dev
- libncurses5-dev
- libpq-dev
- libreadline-dev
- libssl-dev
- libtool
- libxml2-dev
- libxslt1-dev
- libyaml-0-2
- libyaml-dev
- locales
- nginx-light
- patch
- pkg-config
- rbenv
- sudo
- zlib1g-dev

50
tasks/ruby.yml Normal file
View file

@ -0,0 +1,50 @@
- name: "ruby: rbenv einrichten"
lineinfile:
path: "{{ zammad_user_home }}/.bashrc"
line: eval "$(rbenv init -)"
- name: "ruby: rbenv plugin-verzeichnis erstellen"
file:
path: "{{ ruby_path }}/plugins"
state: directory
owner: "{{ zammad_user }}"
group: "{{ zammad_user }}"
- name: "ruby: ruby-build installieren"
git:
repo: "{{ ruby_build_repo }}"
dest: "{{ ruby_path }}/plugins/ruby-build"
- name: "ruby: Version prüfen"
stat:
path: "{{ ruby_path }}/versions/{{ ruby_version }}"
register: ruby_installed
- name: "ruby installieren"
command:
cmd: "rbenv install {{ ruby_version }}"
chdir: "{{ zammad_user_home }}"
become: true
become_user: "{{ zammad_user }}"
when: ruby_installed.stat.exists == False
- name: "ruby aktivieren"
shell: "rbenv local {{ ruby_version }}"
args:
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"
- name: "ruby: Bundler installieren"
command:
cmd: rbenv exec gem install bundler
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"
- name: "ruby: Ruby-Abhängigkeiten installieren"
shell: "RAILS_ENV=production {{ ruby_bin_path }}/bundle install --without test development mysql"
args:
chdir: "{{ zammad_home }}"
become: true
become_user: "{{ zammad_user }}"

10
tasks/syslog.yml Normal file
View file

@ -0,0 +1,10 @@
- name: "syslog: Erstelle Verzeichnis"
file:
src: "{{ zammad_home }}/log"
dest: "{{ zammad_log_path }}"
state: link
- name: "syslog: Konfiguriere logrotate"
template:
src: logrotate.j2
dest: /etc/logrotate.d/zammad

32
tasks/systemd.yml Normal file
View file

@ -0,0 +1,32 @@
- name: "systemd: Kopiere Services"
template:
src: "systemd/{{ item }}.j2"
dest: "/etc/systemd/system/{{ item }}"
loop:
- zammad-rails.service
- zammad-scheduler.service
- zammad-websocket.service
- name: "systemd: Kopiere Zammad-Service"
copy:
src: zammad.service
dest: /etc/systemd/system/zammad.service
- name: "systemd: Erstelle Konfigurationsverzeichnis"
file:
path: /etc/zammad
state: directory
- name: "systemd: Kopiere Konfiguration"
copy:
src: zammad.env
dest: /etc/zammad/zammad.env
force: no
- name: "systemd: Aktiviere Service"
systemd:
enabled: yes
daemon_reload: yes
state: started
name: zammad

6
tasks/user.yml Normal file
View file

@ -0,0 +1,6 @@
---
- name: "user: Systemkonto anlegen"
user:
name: "{{ zammad_user }}"
shell: /bin/bash
password_lock: yes

12
tasks/webserver.yml Normal file
View file

@ -0,0 +1,12 @@
- name: "webserver: Konfiguration kopieren"
template:
src: nginx-site.j2
dest: "{{ zammad_webserver_configuration }}"
- name: "webserver: Kofiguration aktivieren"
file:
src: "{{ zammad_webserver_configuration }}"
dest: "/etc/nginx/sites-enabled/{{ zammad_domain }}"
state: link

20
tasks/zammad.yml Normal file
View file

@ -0,0 +1,20 @@
- name: "zammad: Hole Zammad Repo"
git:
repo: "{{ zammad_repo }}"
dest: "{{ zammad_home }}"
version: "{{ zammad_version }}"
force: yes
- name: "zammad: Ändere Besitzrechte"
file:
path: "{{ zammad_home }}"
state: directory
recurse: yes
owner: "{{ zammad_user }}"
group: "{{ zammad_user }}"
# https://github.com/zammad/zammad/issues/325
- name: "zammad: Wende plain-Text-Patch an"
patch:
src: plain-text.patch
dest: "{{ zammad_home }}/app/models/channel/email_build.rb"