diff --git a/roles/matrix-base/defaults/main.yml b/roles/matrix-base/defaults/main.yml index fc119a44e..9ffffc2fa 100644 --- a/roles/matrix-base/defaults/main.yml +++ b/roles/matrix-base/defaults/main.yml @@ -42,6 +42,14 @@ matrix_docker_network: "matrix" # matrix domain (`matrix_server_fqn_matrix`). matrix_well_known_matrix_server_enabled: true +# Controls whether Docker is automatically installed. +# If you change this to false you must install and update Docker manually. +matrix_docker_installation_enabled: true + +# Controls the Docker package that is installed. +# Possible values are "docker-ce" (default) and "docker.io" (Debian). +matrix_docker_package_name: docker-ce + # Variables to Control which parts of our roles run. run_postgres_import: true run_postgres_upgrade: true diff --git a/roles/matrix-base/tasks/main.yml b/roles/matrix-base/tasks/main.yml index 6587d81dd..909cad200 100644 --- a/roles/matrix-base/tasks/main.yml +++ b/roles/matrix-base/tasks/main.yml @@ -7,7 +7,7 @@ tags: - setup-all -- import_tasks: "{{ role_path }}/tasks/setup_server_base.yml" +- import_tasks: "{{ role_path }}/tasks/server_base/setup.yml" when: run_setup|bool tags: - setup-all diff --git a/roles/matrix-base/tasks/server_base/setup.yml b/roles/matrix-base/tasks/server_base/setup.yml new file mode 100644 index 000000000..45feb1527 --- /dev/null +++ b/roles/matrix-base/tasks/server_base/setup.yml @@ -0,0 +1,19 @@ +--- + +- include_tasks: "{{ role_path }}/tasks/server_base/setup_centos.yml" + when: ansible_distribution == 'CentOS' + +- include_tasks: "{{ role_path }}/tasks/server_base/setup_debian.yml" + when: ansible_os_family == 'Debian' + +- name: Ensure Docker is started and autoruns + service: + name: docker + state: started + enabled: yes + +- name: Ensure ntpd is started and autoruns + service: + name: "{{ 'ntpd' if ansible_os_family == 'RedHat' else 'ntp' }}" + state: started + enabled: yes diff --git a/roles/matrix-base/tasks/server_base/setup_centos.yml b/roles/matrix-base/tasks/server_base/setup_centos.yml new file mode 100644 index 000000000..2554e26e9 --- /dev/null +++ b/roles/matrix-base/tasks/server_base/setup_centos.yml @@ -0,0 +1,35 @@ +--- + +- name: Ensure Docker repository is enabled + template: + src: "{{ role_path }}/files/yum.repos.d/{{ item }}" + dest: "/etc/yum.repos.d/{{ item }}" + owner: "root" + group: "root" + mode: 0644 + with_items: + - docker-ce.repo + when: matrix_docker_installation_enabled|bool and matrix_docker_package_name == 'docker-ce' + +- name: Ensure Docker's RPM key is trusted + rpm_key: + state: present + key: https://download.docker.com/linux/centos/gpg + when: matrix_docker_installation_enabled|bool and matrix_docker_package_name == 'docker-ce' + +- name: Ensure yum packages are installed + yum: + name: + - bash-completion + - docker-python + - ntp + - fuse + state: latest + update_cache: yes + +- name: Ensure Docker is installed + yum: + name: + - "{{ matrix_docker_package_name }}" + state: latest + when: matrix_docker_installation_enabled|bool diff --git a/roles/matrix-base/tasks/server_base/setup_debian.yml b/roles/matrix-base/tasks/server_base/setup_debian.yml new file mode 100644 index 000000000..3a9192f05 --- /dev/null +++ b/roles/matrix-base/tasks/server_base/setup_debian.yml @@ -0,0 +1,42 @@ +--- + +- name: Ensure APT usage dependencies are installed + apt: + name: + - apt-transport-https + - ca-certificates + state: present + update_cache: yes + +- name: Ensure Docker's APT key is trusted + apt_key: + url: https://download.docker.com/linux/ubuntu/gpg + id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 + state: present + register: add_repository_key + ignore_errors: true + when: matrix_docker_installation_enabled|bool and matrix_docker_package_name == 'docker-ce' + +- name: Ensure Docker repository is enabled + apt_repository: + repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable" + state: present + update_cache: yes + when: matrix_docker_installation_enabled|bool and matrix_docker_package_name == 'docker-ce' + +- name: Ensure APT packages are installed + apt: + name: + - bash-completion + - python-docker + - ntp + - fuse + state: latest + update_cache: yes + +- name: Ensure Docker is installed + apt: + name: + - "{{ matrix_docker_package_name }}" + state: latest + when: matrix_docker_installation_enabled|bool diff --git a/roles/matrix-base/tasks/setup_server_base.yml b/roles/matrix-base/tasks/setup_server_base.yml deleted file mode 100644 index b32355c59..000000000 --- a/roles/matrix-base/tasks/setup_server_base.yml +++ /dev/null @@ -1,90 +0,0 @@ ---- - -- name: Ensure Docker repository is enabled (CentOS) - template: - src: "{{ role_path }}/files/yum.repos.d/{{ item }}" - dest: "/etc/yum.repos.d/{{ item }}" - owner: "root" - group: "root" - mode: 0644 - with_items: - - docker-ce.repo - when: ansible_distribution == 'CentOS' - -- name: Ensure Docker's RPM key is trusted - rpm_key: - state: present - key: https://download.docker.com/linux/centos/gpg - when: ansible_distribution == 'CentOS' - -- name: Ensure yum packages are installed (CentOS) - yum: - name: - - bash-completion - - docker-ce - - docker-python - - ntp - - fuse - state: latest - update_cache: yes - when: ansible_distribution == 'CentOS' - -- name: Ensure APT usage dependencies are installed (Debian) - apt: - name: - - apt-transport-https - - ca-certificates - state: present - update_cache: yes - when: ansible_os_family == 'Debian' - -- name: Gather package facts (Debian) - package_facts: - when: ansible_os_family == 'Debian' - -- name: Ensure Docker's APT key is trusted (Debian) - apt_key: - url: https://download.docker.com/linux/ubuntu/gpg - id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 - state: present - register: add_repository_key - ignore_errors: true - when: ansible_os_family == 'Debian' and 'docker.io' not in ansible_facts.packages - -- name: Ensure Docker repository is enabled (Debian) - apt_repository: - repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable" - state: present - update_cache: yes - when: ansible_os_family == 'Debian' and 'docker.io' not in ansible_facts.packages - -- name: Ensure APT packages are installed (Debian) - apt: - name: - - bash-completion - - python-docker - - ntp - - fuse - state: latest - update_cache: yes - when: ansible_os_family == 'Debian' - -- name: Ensure docker-ce is installed (Debian) - apt: - name: - - docker-ce - state: latest - update_cache: yes - when: ansible_os_family == 'Debian' and 'docker.io' not in ansible_facts.packages - -- name: Ensure Docker is started and autoruns - service: - name: docker - state: started - enabled: yes - -- name: Ensure ntpd is started and autoruns - service: - name: "{{ 'ntpd' if ansible_os_family == 'RedHat' else 'ntp' }}" - state: started - enabled: yes