From 9bf0dc5e09c31651bba0a6806b7dce26930f6c7e Mon Sep 17 00:00:00 2001 From: Vladislav Kuzmin Date: Mon, 12 Apr 2021 19:09:29 +0400 Subject: [PATCH] Add libvirt-client This image based on the airshipctl toolbox krm-function. It allows to execute virsh inside a container. Change-Id: I9605fa2d4f7f3de858f60d2d40f71f58f3dd117c --- toolbox-virsh/Dockerfile | 5 ++ toolbox-virsh/Makefile | 108 +++++++++++++++++++++++++++++++++++++++ toolbox-virsh/README.md | 3 ++ 3 files changed, 116 insertions(+) create mode 100644 toolbox-virsh/Dockerfile create mode 100644 toolbox-virsh/Makefile create mode 100644 toolbox-virsh/README.md diff --git a/toolbox-virsh/Dockerfile b/toolbox-virsh/Dockerfile new file mode 100644 index 0000000..42afb6f --- /dev/null +++ b/toolbox-virsh/Dockerfile @@ -0,0 +1,5 @@ +FROM quay.io/airshipit/toolbox:latest + +RUN apk update \ + && apk add libvirt-client \ + && rm -rf /var/cache/apk/* diff --git a/toolbox-virsh/Makefile b/toolbox-virsh/Makefile new file mode 100644 index 0000000..59fd1a0 --- /dev/null +++ b/toolbox-virsh/Makefile @@ -0,0 +1,108 @@ +# Copyright 2018 AT&T Intellectual Property. All other rights reserved. +# +# 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. + +SHELL := /bin/bash +BUILD_DIR ?= build +PUSH_IMAGE ?= false +IMAGE_ID ?= none +COMMIT ?= $(shell git rev-parse HEAD) +LABEL ?= org.airshipit.build=community +IMAGE_NAME ?= toolbox-virsh +DOCKER_REGISTRY ?= quay.io +IMAGE_PREFIX ?= airshipit +IMAGE_TAG ?= latest +IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG} +SH_TO_CHECK := $(wildcard files/*.sh ) +PROXY ?= http://proxy.foo.com:8000 +NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local +USE_PROXY ?= false + +all: lint images + +check-docker: + @if [ -z $$(which docker) ]; then \ + echo "Missing \`docker\` client which is required for development"; \ + exit 2; \ + fi + +images: check-docker build_image + +docs: clean build_docs + +build_docs: + echo TODO + +build_image: + mkdir -p $(BUILD_DIR) +ifeq ($(IMAGE_ID), none) +ifeq ($(USE_PROXY), true) + docker build . \ + --iidfile $(BUILD_DIR)/image_id \ + --tag $(IMAGE) \ + --label $(LABEL) \ + --label "org.opencontainers.image.revision=$(COMMIT)" \ + --label "org.opencontainers.image.created=\ + $(shell date --rfc-3339=seconds --utc)" \ + --label "org.opencontainers.image.title=$(IMAGE_NAME)" \ + --build-arg http_proxy=$(PROXY) \ + --build-arg https_proxy=$(PROXY) \ + --build-arg HTTP_PROXY=$(PROXY) \ + --build-arg HTTPS_PROXY=$(PROXY) \ + --build-arg no_proxy=$(NO_PROXY) \ + --build-arg NO_PROXY=$(NO_PROXY) \ + --build-arg GIT_COMMIT=$(COMMIT) +else + docker build . \ + --iidfile $(BUILD_DIR)/image_id \ + --tag $(IMAGE) \ + --label $(LABEL) \ + --label "org.opencontainers.image.revision=$(COMMIT)" \ + --label "org.opencontainers.image.created=\ + $(shell date --rfc-3339=seconds --utc)" \ + --label "org.opencontainers.image.title=$(IMAGE_NAME)" \ + --build-arg GIT_COMMIT=$(COMMIT) +endif +else + echo $(IMAGE_ID) > $(BUILD_DIR)/image_id +endif +ifeq ($(PUSH_IMAGE), true) + docker push $(IMAGE) +endif + +clean: +ifeq ($(IMAGE_ID), none) + if [[ -s $(BUILD_DIR)/image_id ]]; \ + then \ + docker rmi $$(cat $(BUILD_DIR)/image_id); \ + fi +endif + rm -rf $(BUILD_DIR) + +# style checks +lint: test-shellcheck + echo "TODO" + +tests: lint unit_tests + +test-shellcheck: $(SH_TO_CHECK) + +unit_tests: + echo TODO + +$(SH_TO_CHECK): + docker run --rm -v $(shell pwd):/mnt \ + nlknguyen/alpine-shellcheck -x /mnt/$(@) + +.PHONY: test clean $(SH_TO_CHECK) test-shellcheck tests lint build_image \ + all build_docs docs check-docker images diff --git a/toolbox-virsh/README.md b/toolbox-virsh/README.md new file mode 100644 index 0000000..12cb746 --- /dev/null +++ b/toolbox-virsh/README.md @@ -0,0 +1,3 @@ +# toolbox-virsh image + +This image based on the airshipctl toolbox krm-function. It allows to execute libvirt-client(virsh) inside a container.