SUSE: Add support for openSUSE Leap 15

This also ensures that the OBS Virtualization repository is only created
for Leap 42.X since Leap 15.X already contains the necessary LXC
packages in the standard repos. Finally, we don't use the major version
for the Leap 15 files since there is a currently a bug in Ansible[1]
which returns 'NA' as major version for Leap 15.

This patch does not add any jobs since there is a circular dependency
with the lxc_container_create role. Once Leap 15 is supported in that
role, we will add jobs in this role as well.

[1]: https://github.com/ansible/ansible/issues/41410
Change-Id: I64e38ac7b7e8dec81b5f637301df8a112aa03d9b
This commit is contained in:
Markos Chandras 2018-06-05 09:23:15 +01:00
parent 36c6b3552d
commit 5f0f01c355
6 changed files with 135 additions and 11 deletions

View File

@ -32,6 +32,7 @@ galaxy_info:
- 42.1
- 42.2
- 42.3
- 15.0
categories:
- cloud
- lxc

View File

@ -21,6 +21,7 @@
repo: "{{ item.uri }}"
runrefresh: yes
with_items: "{{ lxc_hosts_external_repo }}"
when: lxc_hosts_external_repo is defined
tags:
- lxc_hosts-config
@ -62,12 +63,25 @@
tags:
- lxc_hosts-config
- name: Determine latest openSUSE container build information
uri:
url: "{{ _lxc_hosts_container_image_url_base }}/Dockerfile"
return_content: true
register: _lxc_opensuse_image_build_info
- name: Determine latest openSUSE container build information (Leap 15)
# Leap 15.0
block:
# NOTE(hwoarang) The build ID changes all the time so we need to have a hack to determine the latest one
# TODO: Talk to openSUSE people to improve that and possibly use the same location for 42.3 as well.
- shell: |
curl -s {{ _lxc_hosts_container_image_url_base }} | grep -P -o '{{ ansible_architecture }}.*?lxc.*?Buildlp.*?xz' | head -n 1
register: _lxc_opensuse_image_build_info
- set_fact:
opensuse_image_build_info: "{{ _lxc_opensuse_image_build_info.stdout }}"
when: ansible_distribution_version is version ('42', '<')
- name: Set fact for openSUSE container build information
set_fact:
opensuse_image_build_info: "{{ _lxc_opensuse_image_build_info.content|regex_search('Version: (.*)', '\\1')|join(' ') }}"
- name: Determine latest openSUSE container build information (Leap 42)
# Leap 42
block:
- uri:
url: "{{ _lxc_hosts_container_image_url_base }}/Dockerfile"
return_content: true
register: _lxc_opensuse_image_build_info
- set_fact:
opensuse_image_build_info: "{{ _lxc_opensuse_image_build_info.content|regex_search('Version: (.*)', '\\1')|join(' ') }}"
when: ansible_distribution_version is version ('42', '>=')

View File

@ -15,13 +15,12 @@
# limitations under the License.
_lxc_hosts_container_image_url_base: "https://github.com/openSUSE/docker-containers-build/raw/openSUSE-Leap-{{ ansible_distribution_version }}/{{ ansible_architecture }}"
_lxc_hosts_container_image_url: "{{ _lxc_hosts_container_image_url_base }}/openSUSE-Leap-{{ ansible_distribution_version}}-{{ ansible_architecture }}-{{ opensuse_image_build_info }}.tar.xz"
_lxc_cache_map:
distro: opensuse
arch: "{{ lxc_architecture_mapping.get( ansible_architecture ) }}"
release: "42.3"
release: "{{ ansible_distribution_version }}"
copy_from_host:
- /etc/default/locale
- /etc/environment
@ -31,7 +30,7 @@ _lxc_cache_map:
- /etc/zypp/repos.d/repo-oss.repo
- /etc/zypp/repos.d/repo-update.repo
_lxc_cache_prep_template: "prep-scripts/opensuse_leap_42_prep.sh.j2"
_lxc_cache_prep_template: "prep-scripts/opensuse_leap_prep.sh.j2"
_lxc_cache_distro_packages:
- ca-certificates-mozilla

54
vars/suse-host.yml Normal file
View File

@ -0,0 +1,54 @@
---
# Copyright 2016, Rackspace US, Inc.
# Copyright 2017, SUSE LINUX GmbH.
#
# 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.
lxc_hosts_external_repo:
- name: "OBS:Virtualization:containers"
uri: "{{ lxc_hosts_opensuse_mirror_obs_url }}/repositories/Virtualization:/containers/openSUSE_Leap_{{ ansible_distribution_version }}/"
# NOTE(hwoarang) Leap 15.X is newer than 42.X and it has all the necessary LXC packages so we don't need
# to use the OBS repository. As such we only add it if version is >= 42 so we can capture all the old Leap
# releases. Using the external repo can be removed once we drop support for 42.X
state: "{{ (ansible_distribution_version is version ('42', '>=')) | ternary ('present', 'absent') }}"
system_config_dir: "/etc/sysconfig"
systemd_utils_prefix: "/usr/lib/systemd"
# Required rpm packages.
lxc_hosts_distro_packages:
- apparmor-parser
- apparmor-profiles
- apparmor-utils
- aria2
- bridge-utils
- btrfsprogs
- dbus-1
- dnsmasq
- git-core
- libseccomp2
- lxc
- liblxc-devel
- python-lxc-python2
- systemd-container
- xz
lxc_xz_bin: xz
lxc_cached_network_interfaces:
- src: "lxc-net-suse-bridge.cfg.j2"
dest: "/etc/sysconfig/network/ifcfg-{{ lxc_net_bridge }}"
- src: "lxc-net-suseredhat-postdown.cfg.j2"
dest: "/etc/sysconfig/network/scripts/ifdown-post-{{ lxc_net_bridge }}"
mode: "0755"
interface: "${1}"

56
vars/suse.yml Normal file
View File

@ -0,0 +1,56 @@
---
# Copyright 2016, Rackspace US, Inc.
# Copyright 2017, SUSE LINUX GmbH.
#
# 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.
_lxc_hosts_container_image_url_base: "https://download.opensuse.org/repositories/Virtualization:/containers:/images:/openSUSE-Leap-{{ ansible_distribution_version }}/containers/"
_lxc_hosts_container_image_url: "{{ _lxc_hosts_container_image_url_base }}/opensuse-leap-{{ ansible_distribution_version }}-image.{{ opensuse_image_build_info }}"
_lxc_cache_map:
distro: opensuse
arch: "{{ lxc_architecture_mapping.get( ansible_architecture ) }}"
release: "{{ ansible_distribution_version }}"
copy_from_host:
- /etc/default/locale
- /etc/environment
- /etc/localtime
- /etc/locale.conf
- /etc/protocols
- /etc/zypp/repos.d/repo-oss.repo
- /etc/zypp/repos.d/repo-update.repo
_lxc_cache_prep_template: "prep-scripts/opensuse_leap_prep.sh.j2"
_lxc_cache_distro_packages:
- ca-certificates-mozilla
- cronie
- dbus-1
- gcc
- iproute2
- iputils
- libffi-devel
- libopenssl-devel
- netcfg
- openssh
- openssl
- python
- python-devel
- python-xml
- rsync
- sudo
- systemd
- systemd-sysvinit
- tar
- wget
- which