Skip to content

Commit

Permalink
SUSE: Add support for openSUSE Leap 15
Browse files Browse the repository at this point in the history
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]: ansible/ansible#41410
Change-Id: I64e38ac7b7e8dec81b5f637301df8a112aa03d9b
  • Loading branch information
Markos Chandras committed Jun 27, 2018
1 parent 36c6b35 commit 5f0f01c
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 11 deletions.
1 change: 1 addition & 0 deletions meta/main.yml
Expand Up @@ -32,6 +32,7 @@ galaxy_info:
- 42.1
- 42.2
- 42.3
- 15.0
categories:
- cloud
- lxc
Expand Down
30 changes: 22 additions & 8 deletions tasks/lxc_install_zypper.yml
Expand Up @@ -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

Expand Down Expand Up @@ -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', '>=')
5 changes: 2 additions & 3 deletions vars/suse-42.yml
Expand Up @@ -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
Expand All @@ -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
Expand Down
54 changes: 54 additions & 0 deletions vars/suse-host.yml
@@ -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 changes: 56 additions & 0 deletions vars/suse.yml
@@ -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

0 comments on commit 5f0f01c

Please sign in to comment.