[WIP] Multi-distro support for rsyslog-server role

This is intended to serve as an example of how we
might be able to implement a single role for use in
multiple distors.  I have tested these changes with
Ubuntu 14.04 as well as CentOS 7.  I ran this role
directly, outside of openstack-ansible, but I do not
anticipate many changes to this role, only that
openstack-ansible as a whole will fail when trying
to configure a CentOS server at this time.

Change-Id: I78c8c3be9d00fc505fabc83de36dfd43b8e85848
This commit is contained in:
Michael Gugino 2016-01-29 16:34:37 -05:00
parent 19dd1bdd91
commit 086785d96a
3 changed files with 71 additions and 5 deletions

View File

@ -16,10 +16,24 @@
# rsyslog_server_apt_repos:
# - { repo: "ppa:adiscon/v8-stable", state: "present" }
#We create a dictionary of distros in case there are name descrepancies.
rsyslog_apt_distros:
Ubuntu: "{{ rsyslog_server_apt_packages }}"
Debian: "{{ rsyslog_server_apt_packages }}"
rsyslog_yum_distros:
CentOS: "{{ rsyslog_server_yum_packages }}"
RedHat: "{{ rsyslog_server_yum_packages }}"
rsyslog_server_apt_packages:
- rsyslog
- logrotate
rsyslog_server_yum_packages:
- rsyslog
- logrotate
rsyslog_server_spool_directory: /var/spool/rsyslog
rsyslog_server_storage_directory: /var/log/rsyslog

View File

@ -13,12 +13,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# Ensure a supported distro is found
- assert:
that:
- (ansible_distribution in {{ rsyslog_apt_distros }} or
ansible_distribution in {{ rsyslog_yum_distros }})
# apt-based distros
- name: Rsyslog apt repository
apt_repository:
repo: "{{ item.repo }}"
state: "{{ item.state }}"
with_items: rsyslog_server_apt_repos
when: rsyslog_server_apt_repos is defined
when:
- rsyslog_server_apt_repos is defined
- ansible_distribution in {{ rsyslog_apt_distros }}
register: add_repos
until: add_repos|success
retries: 5
@ -30,6 +39,8 @@
apt:
update_cache: yes
cache_valid_time: 600
when:
- ansible_distribution in {{ rsyslog_apt_distros }}
register: apt_update
until: apt_update|success
retries: 5
@ -37,14 +48,53 @@
tags:
- rsyslog-apt-packages
- name: Install rsyslog packages
- name: Install rsyslog apt packages
apt:
pkg: "{{ item }}"
state: latest
register: install_packages
until: install_packages|success
when:
- ansible_distribution in {{ rsyslog_apt_distros }}
register: install_apt_packages
until: install_apt_packages|success
retries: 5
delay: 2
with_items: rsyslog_server_apt_packages
with_items: "{{ rsyslog_apt_distros[ansible_distribution] | default([]) }}"
tags:
- rsyslog-apt-packages
# End apt-based distros
# yum-based distors
- name: Rsyslog yum repository
template:
src: yumrepo.conf.j2
dest: "/etc/yum.repos.d/{{ item.dest }}"
owner: "root"
group: "root"
with_items: rsyslog_server_yum_repos
when:
- rsyslog_server_yum_repos is defined
- ansible_distribution in {{ rsyslog_yum_distros }}
tags:
- rsyslog-config
- name: yum clean all
command: "/usr/bin/yum clean all"
when:
- ansible_distribution in {{ rsyslog_yum_distros }}
- name: Install rsyslog yum packages
when:
- ansible_distribution in {{ rsyslog_yum_distros }}
yum:
pkg: "{{ item }}"
state: latest
register: install_rpm_packages
until: install_rpm_packages|success
retries: 5
delay: 2
with_items: "{{ rsyslog_yum_distros[ansible_distribution] | default([]) }}"
tags:
- rsyslog-yum-packages
# End yum-based distros

View File

@ -22,5 +22,7 @@
with_items:
- "{{ rsyslog_server_storage_directory }}"
- "{{ rsyslog_server_spool_directory }}"
when:
- ansible_distribution in {{ rsyslog_apt_distros }}
tags:
- rsyslog-server-dirs