From a64745174b251ad6b33685d4309de627482fd138 Mon Sep 17 00:00:00 2001 From: Markos Chandras Date: Wed, 12 Jul 2017 11:51:48 +0100 Subject: [PATCH] Add support for the openSUSE Leap distributions Add support for the openSUSE Leap distributions. Additionally, for openSUSE, we need to load some extra apache2 modules which are not there by default. Finally, Apache on openSUSE configures some of it's components in httpd.conf and some others in default-server.conf so it's not possible to drop one of them as that will likely break Apache. A future improvement would be to drop both and provide a good httpd.conf template. Until then, we need to drop the default configuration for the root directory as that breaks Horizon since it does not allow symlinks and global access to it. Change-Id: I51613df836c6a507f6f36967c0ce4b76ba9202a9 --- meta/main.yml | 8 ++++++ tasks/horizon_apache.yml | 40 ++++++++++++++++++++++----- vars/debian.yml | 13 +++++++++ vars/suse-42.yml | 59 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 vars/suse-42.yml diff --git a/meta/main.yml b/meta/main.yml index 697d4adf..a0bbd059 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -23,6 +23,14 @@ galaxy_info: - name: Ubuntu versions: - xenial + - name: EL + versions: + - 7 + - name: opensuse + versions: + - 42.1 + - 42.2 + - 42.3 categories: - cloud - python diff --git a/tasks/horizon_apache.yml b/tasks/horizon_apache.yml index 4c32c452..9d3b443a 100644 --- a/tasks/horizon_apache.yml +++ b/tasks/horizon_apache.yml @@ -28,14 +28,9 @@ state: "{{ item.state }}" ignore_configcheck: yes with_items: - - { state: present, name: wsgi } - - { state: present, name: ssl } - - { state: absent, name: mpm_event } - - { state: present, name: mpm_worker } - - { state: present, name: rewrite } - - { state: present, name: headers } + - "{{ horizon_apache_modules }}" when: - - ansible_pkg_mgr == 'apt' + - ansible_pkg_mgr in ['apt', 'zypper'] notify: Restart apache2 - name: Drop apache2 configs @@ -54,6 +49,37 @@ with_items: "{{ horizon_apache_default_sites }}" notify: Restart apache2 +# NOTE(hwoarang) Default openSUSE apache configuration ships +# with a configuration in /etc/apache2/httpd.conf +# so we need to get rid of it to allow all the symlinks in the +# root filesystem that horizon requires +# TODO: Can this be improved somehow? +- block: + - name: Tag beginning of main apache2 directory configuration (SUSE) + lineinfile: + dest: "{{ horizon_apache_conf }}" + insertbefore: '^' + line: "# BEGIN ANSIBLE MANAGED BLOCK" + state: present + notify: Restart apache2 + + - name: Tag end of main apache2 directory configuration (SUSE) + lineinfile: + dest: "{{ horizon_apache_conf }}" + insertafter: '^' + line: "# END ANSIBLE MANAGED BLOCK" + state: present + notify: Restart apache2 + + - name: Remove default apache2 configuration for root directory (SUSE) + blockinfile: + dest: "{{ horizon_apache_conf }}" + marker: "# {mark} ANSIBLE MANAGED BLOCK" + content: "" + notify: Restart apache2 + + when: ansible_pkg_mgr == 'zypper' + - name: Enable Horizon Site file: src: "{{ horizon_apache_site_available }}" diff --git a/vars/debian.yml b/vars/debian.yml index 232e0433..2bd0963c 100644 --- a/vars/debian.yml +++ b/vars/debian.yml @@ -46,3 +46,16 @@ horizon_apache_configs: horizon_apache_default_sites: - "/etc/apache2/sites-enabled/000-default.conf" +horizon_apache_modules: + - name: "wsgi" + state: "present" + - name: "ssl" + state: "present" + - name: "mpm_event" + state: "absent" + - name: "mpm_worker" + state: "present" + - name: "rewrite" + state: "present" + - name: "headers" + state: "present" diff --git a/vars/suse-42.yml b/vars/suse-42.yml new file mode 100644 index 00000000..6d95fcd2 --- /dev/null +++ b/vars/suse-42.yml @@ -0,0 +1,59 @@ +--- +# Copyright 2014, Rackspace US, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +horizon_system_service_name: apache2 + +horizon_distro_packages: + - cronie + - cronie-anacron + - gettext + - git-core + - apache2 + - apache2-utils + - libxslt-devel + - apache2-mod_wsgi + - python-MySQL-python + - openssl + - libopenssl-devel + - which + +horizon_apache_conf: "/etc/apache2/httpd.conf" +horizon_apache_default_log_folder: "/var/log/apache2" +horizon_apache_default_log_owner: "root" +horizon_apache_default_log_grp: "root" +horizon_apache_security_conf: "{{ horizon_apache_conf }}" + +horizon_apache_configs: + - { src: "horizon_apache_ports.conf.j2", dest: "/etc/apache2/conf.d/ports.conf", owner: "root", group: "root" } + - { src: "openstack_dashboard.conf.j2", dest: "/etc/apache2/conf.d/openstack-dashboard.conf", owner: "root", group: "root" } + +horizon_apache_default_sites: + - "/etc/apache2/conf.d/gitweb.conf" + +horizon_apache_modules: + - name: "authz_host" + state: "present" + - name: "access_compat" + state: "present" + - name: "version" + state: "present" + - name: "ssl" + state: "present" + - name: "wsgi" + state: "present" + - name: "rewrite" + state: "present" + - name: "headers" + state: "present"