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
This commit is contained in:
Markos Chandras 2017-07-12 11:51:48 +01:00
parent d7c2565493
commit a64745174b
4 changed files with 113 additions and 7 deletions

View File

@ -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

View File

@ -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 <Directory /> 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: '^<Directory />'
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: '^</Directory>'
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 }}"

View File

@ -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"

59
vars/suse-42.yml Normal file
View File

@ -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"