sync with previous repo
This commit is contained in:
16
roles/matrix-common-after/defaults/main.yml
Normal file
16
roles/matrix-common-after/defaults/main.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
# Specifies how long to wait between starting systemd services and checking if they're started.
|
||||
#
|
||||
# A too low value may lead to a failure, as services may not have enough time to start and potentially fail.
|
||||
#
|
||||
# A value higher than 30 seconds (or any multiple of that) may also not work well, because a failing systemd service
|
||||
# auto-restarts after 30 seconds (`RestartSec=30` in systemd service files).
|
||||
# Checking if a service is running right after it had potentially restarted in such a way will lead us to
|
||||
# thinking it's running, while it's merely starting again (and likely to fail again, given that it already did once).
|
||||
#
|
||||
# All of the services we manage are also started sequentially, which in itself can take a long time.
|
||||
# There may be a ~10 second (or even larger) interval between starting the first service and starting the last one.
|
||||
# This makes it even harder to pick a correct value. Such a 10 second gap and a waiting time of 20 seconds will
|
||||
# put us right at the "dangerous" 30-second mark.
|
||||
#
|
||||
# We can try to measure this gap and adjust our waiting time accordingly, but we currently don't.
|
||||
matrix_common_after_systemd_service_start_wait_for_timeout_seconds: 15
|
64
roles/matrix-common-after/tasks/awx_post.yml
Normal file
64
roles/matrix-common-after/tasks/awx_post.yml
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
|
||||
- name: Create user account @janitor
|
||||
command: |
|
||||
/usr/local/bin/matrix-synapse-register-user janitor {{ matrix_awx_janitor_user_password | quote }} 1
|
||||
register: cmd
|
||||
when: not matrix_awx_janitor_user_created|bool
|
||||
no_log: True
|
||||
|
||||
- name: Update AWX janitor user created variable
|
||||
delegate_to: 127.0.0.1
|
||||
lineinfile:
|
||||
path: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/matrix_vars.yml'
|
||||
regexp: "^#? *{{ item.key | regex_escape() }}:"
|
||||
line: "{{ item.key }}: {{ item.value }}"
|
||||
insertafter: 'AWX Settings'
|
||||
with_dict:
|
||||
'matrix_awx_janitor_user_created': 'true'
|
||||
when: not matrix_awx_janitor_user_created|bool
|
||||
|
||||
- name: Create user account @dimension
|
||||
command: |
|
||||
/usr/local/bin/matrix-synapse-register-user dimension {{ matrix_awx_dimension_user_password | quote }} 0
|
||||
register: cmd
|
||||
when: not matrix_awx_dimension_user_created|bool
|
||||
no_log: True
|
||||
|
||||
- name: Update AWX dimension user created variable
|
||||
delegate_to: 127.0.0.1
|
||||
lineinfile:
|
||||
path: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/matrix_vars.yml'
|
||||
regexp: "^#? *{{ item.key | regex_escape() }}:"
|
||||
line: "{{ item.key }}: {{ item.value }}"
|
||||
insertafter: 'AWX Settings'
|
||||
with_dict:
|
||||
'matrix_awx_dimension_user_created': 'true'
|
||||
when: not matrix_awx_dimension_user_created|bool
|
||||
|
||||
- name: Create user account @mjolnir
|
||||
command: |
|
||||
/usr/local/bin/matrix-synapse-register-user mjolnir {{ matrix_awx_mjolnir_user_password | quote }} 0
|
||||
register: cmd
|
||||
when: not matrix_awx_mjolnir_user_created|bool
|
||||
no_log: True
|
||||
|
||||
- name: Update AWX dimension user created variable
|
||||
delegate_to: 127.0.0.1
|
||||
lineinfile:
|
||||
path: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/matrix_vars.yml'
|
||||
regexp: "^#? *{{ item.key | regex_escape() }}:"
|
||||
line: "{{ item.key }}: {{ item.value }}"
|
||||
insertafter: 'AWX Settings'
|
||||
with_dict:
|
||||
'matrix_awx_mjolnir_user_created': 'true'
|
||||
when: not matrix_awx_mjolnir_user_created|bool
|
||||
|
||||
- name: Ensure /chroot/website location has correct permissions
|
||||
file:
|
||||
path: /chroot/website
|
||||
state: directory
|
||||
owner: matrix
|
||||
group: matrix
|
||||
mode: '0770'
|
||||
when: customise_base_domain_website is defined
|
6
roles/matrix-common-after/tasks/dump_runtime_results.yml
Normal file
6
roles/matrix-common-after/tasks/dump_runtime_results.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
# Ansible outputs the message in the `item=` field.
|
||||
# It's unnecessary to output it again in the actual message, so we don't.
|
||||
- debug:
|
||||
msg: ""
|
||||
with_items: "{{ matrix_playbook_runtime_results }}"
|
||||
when: "matrix_playbook_runtime_results is defined and matrix_playbook_runtime_results|length > 0"
|
25
roles/matrix-common-after/tasks/main.yml
Normal file
25
roles/matrix-common-after/tasks/main.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/start.yml"
|
||||
when: run_start|bool
|
||||
tags:
|
||||
- start
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/stop.yml"
|
||||
when: run_stop|bool
|
||||
tags:
|
||||
- stop
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/dump_runtime_results.yml"
|
||||
tags:
|
||||
- always
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/awx_post.yml"
|
||||
when: run_setup|bool and matrix_awx_enabled|bool
|
||||
tags:
|
||||
- always
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/run_docker_prune.yml"
|
||||
tags:
|
||||
- run-docker-prune
|
||||
|
||||
|
4
roles/matrix-common-after/tasks/run_docker_prune.yml
Normal file
4
roles/matrix-common-after/tasks/run_docker_prune.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
|
||||
- name: Run Docker System Prune
|
||||
command: "{{ matrix_host_command_docker }} system prune -a -f"
|
73
roles/matrix-common-after/tasks/start.yml
Normal file
73
roles/matrix-common-after/tasks/start.yml
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
|
||||
- name: Determine whether we should make services autostart
|
||||
set_fact:
|
||||
matrix_services_autostart_enabled_bool: "{{ true if matrix_services_autostart_enabled|default('') == '' else matrix_services_autostart_enabled|bool }}"
|
||||
|
||||
- name: Ensure systemd is reloaded
|
||||
service:
|
||||
daemon_reload: yes
|
||||
|
||||
- name: Ensure Matrix services are stopped
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: stopped
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Ensure Matrix services are started
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
enabled: "{{ matrix_services_autostart_enabled_bool }}"
|
||||
state: started
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
||||
when: not ansible_check_mode
|
||||
|
||||
# If we check service state immediately, we may succeed,
|
||||
# because it takes some time for the service to attempt to start and actually fail.
|
||||
#
|
||||
# Waiting too long (30s) may not work for a similar reason,
|
||||
# as we may run into systemd's automatic restart logic retrying the service.
|
||||
- name: Wait a bit, so that services can start (or fail)
|
||||
wait_for:
|
||||
timeout: "{{ matrix_common_after_systemd_service_start_wait_for_timeout_seconds }}"
|
||||
delegate_to: 127.0.0.1
|
||||
become: false
|
||||
|
||||
- block:
|
||||
- name: Populate service facts
|
||||
service_facts:
|
||||
|
||||
- name: Fail if service isn't detected to be running
|
||||
fail:
|
||||
msg: >-
|
||||
{{ item }} was not detected to be running.
|
||||
It's possible that there's a configuration problem or another service on your server interferes with it (uses the same ports, etc.).
|
||||
Try running `systemctl status {{ item }}` and `journalctl -fu {{ item }}` on the server to investigate.
|
||||
If you're on a slow or overloaded server, it may be that services take a longer time to start and that this error is a false-positive.
|
||||
You can consider raising the value of the `matrix_common_after_systemd_service_start_wait_for_timeout_seconds` variable.
|
||||
See `roles/matrix-common-after/defaults/main.yml` for more details about that.
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
||||
when:
|
||||
- "item.endswith('.service') and (ansible_facts.services[item]|default(none) is none or ansible_facts.services[item].state != 'running')"
|
||||
when: " ansible_distribution != 'Archlinux'"
|
||||
|
||||
- block:
|
||||
# Currently there is a bug in ansible that renders is incompatible with systemd.
|
||||
# service_facts is not collecting the data successfully.
|
||||
# Therefore iterating here manually
|
||||
- name: Fetch systemd information
|
||||
systemd:
|
||||
name: "{{ item }}"
|
||||
register: systemdstatus
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
||||
|
||||
- name: Fail if service isn't detected to be running
|
||||
fail:
|
||||
msg: >-
|
||||
{{ item.item }} was not detected to be running.
|
||||
It's possible that there's a configuration problem or another service on your server interferes with it (uses the same ports, etc.).
|
||||
Try running `systemctl status {{ item.item }}` and `journalctl -fu {{ item.item }}` on the server to investigate.
|
||||
with_items: "{{ systemdstatus.results }}"
|
||||
when: "item.status['ActiveState'] != 'active'"
|
||||
when: "ansible_distribution == 'Archlinux'"
|
7
roles/matrix-common-after/tasks/stop.yml
Normal file
7
roles/matrix-common-after/tasks/stop.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
|
||||
- name: Ensure Matrix services stopped
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: stopped
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
Reference in New Issue
Block a user