Add gentoo support
Required to support Gentoo is the ability to bind mount a new shared directory. In order to support this, _lxc_container_bind_mounts has been created for use in per-distro variables. For Gentoo the new bind mounts allows the sharing of package data, shrinking both the container size and the time needed to install packages. Also needed was the creation of the `sysctl_path` variable as Gentoo installs sysctl to an alternate location. Change-Id: I8c20631aff9ee30289ef2f7f862ba0d4e1bb4569
This commit is contained in:
parent
f067343085
commit
c84d4924ef
@ -38,7 +38,7 @@
|
||||
file:
|
||||
path: "{{ item['host_directory'] }}"
|
||||
state: "directory"
|
||||
with_items: "{{ lxc_container_default_bind_mounts | union(lxc_container_bind_mounts) }}"
|
||||
with_items: "{{ lxc_container_default_bind_mounts | union(_lxc_container_bind_mounts) | union(lxc_container_bind_mounts) }}"
|
||||
delegate_to: "{{ physical_host }}"
|
||||
|
||||
- name: Add bind mount configuration to container
|
||||
@ -46,7 +46,7 @@
|
||||
dest: "/var/lib/lxc/{{ inventory_hostname }}/config"
|
||||
line: "lxc.mount.entry = {{ item['host_directory'] }} {{ item['container_directory'].lstrip('/') }} none bind,create=dir 0 0"
|
||||
backup: "true"
|
||||
with_items: "{{ lxc_container_default_bind_mounts | union(lxc_container_bind_mounts) }}"
|
||||
with_items: "{{ lxc_container_default_bind_mounts | union(_lxc_container_bind_mounts) | union(lxc_container_bind_mounts) }}"
|
||||
delegate_to: "{{ physical_host }}"
|
||||
register: bind_configuration_container
|
||||
notify:
|
||||
|
@ -4,7 +4,7 @@ set -ev
|
||||
# Generate the lxc container create prep commands
|
||||
{{ lxc_container_commands }}
|
||||
|
||||
{% for item in lxc_container_default_bind_mounts | union(lxc_container_bind_mounts) %}
|
||||
{% for item in lxc_container_default_bind_mounts | union(_lxc_container_bind_mounts) | union(lxc_container_bind_mounts) %}
|
||||
{% if item['container_directory'] is defined %}
|
||||
# Create dir "{{ item['container_directory'] }}"
|
||||
mkdir -p "{{ item['container_directory'] }}"
|
||||
|
@ -10,7 +10,7 @@ Before=sysinit.target shutdown.target
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/sbin/sysctl -p
|
||||
ExecStart={{ sysctl_path }}/sysctl -p
|
||||
TimeoutSec=90s
|
||||
|
||||
[Install]
|
||||
|
46
vars/gentoo.yml
Normal file
46
vars/gentoo.yml
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
# Copyright 2018, Matthew Thode
|
||||
#
|
||||
# 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.
|
||||
|
||||
# TODO: COnfigure with networkd or the other system.
|
||||
# These seem to be unused placeholder items
|
||||
lxc_container_default_route_interfaces: "/etc/network/interfaces.d/{{ item.value.interface }}.cfg"
|
||||
lxc_container_interface_target: "/etc/network/interfaces.d/{{ item.value.interface }}.cfg"
|
||||
lxc_container_default_interface: "/etc/network/interfaces"
|
||||
|
||||
# no official systemd image is published, but machinectl seems to work
|
||||
lxc_container_backing_store: machinectl
|
||||
|
||||
lxc_container_map:
|
||||
distro: gentoo
|
||||
arch: "{{ lxc_architecture_mapping.get( hostvars[physical_host]['ansible_architecture'] | lower ) }}"
|
||||
release: 17.0-systemd
|
||||
|
||||
lxc_container_default_config_list:
|
||||
- "lxc.start.auto=1"
|
||||
- "lxc.start.delay=15"
|
||||
- "lxc.group=onboot"
|
||||
- "lxc.group=openstack"
|
||||
- "lxc.autodev=1"
|
||||
- "lxc.pty.max=1024"
|
||||
- "lxc.hook.autodev=/var/lib/lxc/{{ inventory_hostname }}/autodev"
|
||||
|
||||
sysctl_path: "/usr/sbin"
|
||||
|
||||
# shared binpkgs and distfiles
|
||||
_lxc_container_bind_mounts:
|
||||
- host_directory: "/openstack/portage/packages"
|
||||
container_directory: "/usr/portage/packages"
|
||||
- host_directory: "/openstack/portage/distfiles"
|
||||
container_directory: "/usr/portage/distfiles"
|
@ -18,3 +18,5 @@
|
||||
# and "lxc_container_networks" variables and combined into a single
|
||||
# immutable hash.
|
||||
lxc_container_networks_combined: "{{ container_networks | default({}) | combine(container_extra_networks | default({})) | combine(lxc_container_networks) }}"
|
||||
sysctl_path: "/sbin"
|
||||
_lxc_container_bind_mounts: []
|
||||
|
Loading…
Reference in New Issue
Block a user