diff options
author | zsdc <taras@vyos.io> | 2020-06-24 21:27:58 +0300 |
---|---|---|
committer | zsdc <taras@vyos.io> | 2020-06-25 14:57:16 +0300 |
commit | ebc80decd21a448de58cc7e551e98949e96113d0 (patch) | |
tree | dfa0a4996c98072204609b9472a8ce3ec16718a8 /docker-vyos/vyos_install_common.sh | |
parent | 488ebdf6ca0de558dbbadcab1342f7625aa3a588 (diff) | |
download | vyos-build-ebc80decd21a448de58cc7e551e98949e96113d0.tar.gz vyos-build-ebc80decd21a448de58cc7e551e98949e96113d0.zip |
Docker: T2640: Added ability to build Docker images with VyOS
This implementation works, but it is on the proof-of-concept stage and requires extended testing.
Diffstat (limited to 'docker-vyos/vyos_install_common.sh')
-rw-r--r-- | docker-vyos/vyos_install_common.sh | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/docker-vyos/vyos_install_common.sh b/docker-vyos/vyos_install_common.sh new file mode 100644 index 00000000..0039bc31 --- /dev/null +++ b/docker-vyos/vyos_install_common.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Copyright (C) 2020 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Set environment variables +export DEBIAN_FRONTEND="noninteractive" + +# Prepare for further tasks +function prepare_apt() { + # Update packages list + apt-get update + + # Install jq (required to easily extract variables from defaults.json) + apt-get install -y --no-install-recommends jq gnupg + + # Add VyOS repository to the system + local APT_VYOS_MIRROR=`jq --raw-output .vyos_mirror /tmp/defaults.json` + local APT_VYOS_BRANCH=`jq --raw-output .vyos_branch /tmp/defaults.json` + local APT_ADDITIONAL_REPOS=`jq --raw-output .additional_repositories[] /tmp/defaults.json` + local RELEASE_TRAIN=`jq --raw-output .release_train /tmp/defaults.json` + + if [[ "${RELEASE_TRAIN}" == "crux" ]]; then + echo -e "deb ${APT_VYOS_MIRROR}/vyos ${APT_VYOS_BRANCH} main\ndeb ${APT_VYOS_MIRROR}/debian ${APT_VYOS_BRANCH} main\n${APT_ADDITIONAL_REPOS}" > /etc/apt/sources.list.d/vyos.list + fi + + if [[ "${RELEASE_TRAIN}" == "equuleus" ]]; then + echo -e "deb ${APT_VYOS_MIRROR} ${APT_VYOS_BRANCH} main\n${APT_ADDITIONAL_REPOS}" > /etc/apt/sources.list.d/vyos.list + # Add backports repository + echo -e "deb http://deb.debian.org/debian buster-backports main\ndeb http://deb.debian.org/debian buster-backports non-free" >> /etc/apt/sources.list.d/vyos.list + fi + + # Copy additional repositories and preferences, if persented + if grep -sq deb /tmp/*.list.chroot; then + cat /tmp/*list.chroot >> /etc/apt/sources.list.d/vyos.list + fi + if grep -sq Package /tmp/*.pref.chroot; then + cat /tmp/*pref.chroot >> /etc/apt/preferences.d/10vyos + fi + + # Add GPG keys + if [[ ! -e /etc/apt/trusted.gpg.d/vyos.gpg ]]; then + echo "Adding GPG keys to the system" + cat /tmp/*.key.chroot | apt-key --keyring /etc/apt/trusted.gpg.d/vyos.gpg add - + fi + + # Update packages list + apt-get -o Acquire::Check-Valid-Until=false update +} + +# Cleanup APT after finish +function cleanup_apt() { + # delete jq tool + dpkg -P jq + # Clear APT cache + apt-get clean + rm -rf /var/lib/apt/lists/* + rm /etc/apt/sources.list.d/vyos.list + if [[ -e /etc/apt/preferences.d/10vyos ]]; then + rm /etc/apt/preferences.d/10vyos + fi +} + +# Filter list elements +function filter_list() { + local list_elements=("${!1}") + local filtered_elements=("${!2}") + local list_elements_filtered + + for list_element in "${list_elements[@]}"; do + local filtered="" + + for filtered_element in "${filtered_elements[@]}"; do + if [[ ${list_element} =~ ${filtered_element} ]]; then + filtered=True + fi + done + + if [[ -z "${filtered}" ]]; then + list_elements_filtered+=("${list_element}") + fi + done + echo ${list_elements_filtered[@]} +} |