diff --git a/meta/main.yml b/meta/main.yml index 653ba14b..eda378b9 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -32,6 +32,7 @@ galaxy_info: - 42.1 - 42.2 - 42.3 + - 15.0 categories: - cloud - lxc diff --git a/tasks/lxc_install_zypper.yml b/tasks/lxc_install_zypper.yml index bc2d5388..0fcaa87e 100644 --- a/tasks/lxc_install_zypper.yml +++ b/tasks/lxc_install_zypper.yml @@ -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', '>=') diff --git a/templates/prep-scripts/opensuse_leap_42_prep.sh.j2 b/templates/prep-scripts/opensuse_leap_prep.sh.j2 similarity index 100% rename from templates/prep-scripts/opensuse_leap_42_prep.sh.j2 rename to templates/prep-scripts/opensuse_leap_prep.sh.j2 diff --git a/vars/suse-42.yml b/vars/suse-42.yml index 24d333a3..4b1bbe11 100644 --- a/vars/suse-42.yml +++ b/vars/suse-42.yml @@ -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 diff --git a/vars/suse-host.yml b/vars/suse-host.yml new file mode 100644 index 00000000..2d10939e --- /dev/null +++ b/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}" diff --git a/vars/suse.yml b/vars/suse.yml new file mode 100644 index 00000000..06ecb52e --- /dev/null +++ b/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