From cc5d03c2d1a65bb2ff3ba7c24de757729b839fc7 Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Thu, 30 Jun 2016 15:20:41 -0700 Subject: [PATCH] app-admin/etcd-wrapper: init at 2.3.7 and 3.0.2 --- .../app-admin/etcd-wrapper/Manifest | 2 + .../etcd-wrapper/etcd-wrapper-2.3.7.ebuild | 1 + .../etcd-wrapper/etcd-wrapper-3.0.2.ebuild | 1 + .../etcd-wrapper/files/etcd-wrapper.ebuild | 82 +++++++++++++++++++ .../files/etcd-wrapper.service.template | 17 ++++ .../etcd-wrapper/files/etcd-wrapper.template | 72 ++++++++++++++++ 6 files changed, 175 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/Manifest create mode 120000 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-2.3.7.ebuild create mode 120000 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-3.0.2.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.service.template create mode 100644 sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.template diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/Manifest b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/Manifest new file mode 100644 index 0000000000..2345046c78 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/Manifest @@ -0,0 +1,2 @@ +DIST etcd-v2.3.7_pubkey.gpg 6179 SHA256 56eb40918ba8dfbfc30bfddb3d235c3485825af1e7bd9816bdc478716d40544b SHA512 74d2de868f3df73452c50f196320857283c97d0f1d654fd4788be7aa621b50d0767527679ce0f111a86b69ce301329e58d188cb219def306580e0a24c4037738 WHIRLPOOL 3499e633cbb5e28cb3a373263137af30c83573b513d479190ca1402591a7e4fdf78c497f9ac84ced0ffb5fd1dda440eb04a31b81da2a8f964d914c8d1cbb7969 +DIST etcd-v3.0.2_pubkey.gpg 6179 SHA256 56eb40918ba8dfbfc30bfddb3d235c3485825af1e7bd9816bdc478716d40544b SHA512 74d2de868f3df73452c50f196320857283c97d0f1d654fd4788be7aa621b50d0767527679ce0f111a86b69ce301329e58d188cb219def306580e0a24c4037738 WHIRLPOOL 3499e633cbb5e28cb3a373263137af30c83573b513d479190ca1402591a7e4fdf78c497f9ac84ced0ffb5fd1dda440eb04a31b81da2a8f964d914c8d1cbb7969 diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-2.3.7.ebuild b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-2.3.7.ebuild new file mode 120000 index 0000000000..6c6224dbd9 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-2.3.7.ebuild @@ -0,0 +1 @@ +files/etcd-wrapper.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-3.0.2.ebuild b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-3.0.2.ebuild new file mode 120000 index 0000000000..6c6224dbd9 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/etcd-wrapper-3.0.2.ebuild @@ -0,0 +1 @@ +files/etcd-wrapper.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.ebuild b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.ebuild new file mode 100644 index 0000000000..e656b3fb75 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.ebuild @@ -0,0 +1,82 @@ +# +# Copyright (c) 2016 CoreOS, Inc.. All rights reserved. +# Distributed under the terms of the GNU General Public License v2 +# $Header:$ +# + +EAPI=6 + +inherit systemd + +DESCRIPTION="etcd (System Application Container)" +HOMEPAGE="https://github.com/coreos/etcd" +KEYWORDS="amd64" + +LICENSE="Apache-2.0" +IUSE="" + +MY_PV=${PV} +MY_PV=${MY_PV/_alpha/-alpha.} +MY_PV=${MY_PV/_beta/-beta.} + +case ${MY_PV} in +2*) + SLOT="2" + ;; +3*) + SLOT="3" + ;; +*) + die "Unknown etcd version ${MY_PV}" + ;; +esac + +SRC_URI="https://coreos.com/dist/pubkeys/app-signing-pubkey.gpg -> etcd-v${MY_PV}_pubkey.gpg" + +IMG_FILENAME="etcd-v${MY_PV}-linux-${ARCH}.aci" +PUBKEY_FILENAME="etcd-v${MY_PV}_pubkey.gpg" +IMG_PREFIX="coreos.com/etcd" +IMG_PUBKEY="${DISTDIR}/${PUBKEY_FILENAME}" +RKT="rkt" +VERSION_DIR=/usr/lib/coreos/versions +VERSION_DIR_VAR=/var/lib/coreos/versions +IMG_VERSION_FILE="${VERSION_DIR}/etcd${SLOT}" +IMG_VERSION_FILE_VAR="${VERSION_DIR_VAR}/etcd${SLOT}" +IMG_VERSION_DIR="${VERSION_DIR}/etcd${SLOT}.d" +ENV_PREFIX="ETCD" + +DEPEND="" +RDEPEND=">=app-emulation/rkt-1.9.1[rkt_stage1_fly]" + +S=${WORKDIR} + +pkg_preinst() { + echo ${ENV_PREFIX}_IMG="https://github.com/coreos/etcd/releases/download/v${MY_PV}/etcd-v${MY_PV}-linux-${ARCH}.aci" >> "${D}/${IMG_VERSION_FILE}" + echo ${ENV_PREFIX}_IMG_USER=etcd >> "${D}/${IMG_VERSION_FILE}" + echo ${ENV_PREFIX}_DATA_DIR=/var/lib/etcd${SLOT} >> "${D}/${IMG_VERSION_FILE}" + echo ${ENV_PREFIX}_IMG_PREFIX=${IMG_PREFIX} >> "${D}/${IMG_VERSION_FILE}" + echo ${ENV_PREFIX}_IMG_PUBKEY=${IMG_VERSION_DIR}/${PUBKEY_FILENAME} >> "${D}/${IMG_VERSION_FILE}" +} + +src_install() { + insinto "${IMG_VERSION_DIR}" + doins "${DISTDIR}/${PUBKEY_FILENAME}" + + local wrapper_file="${TMP}/etcd${SLOT}-wrapper" + cat ${FILESDIR}/etcd-wrapper.template > ${wrapper_file} + sed -i ${wrapper_file} -e \ + "s,{{SOURCE_FILES}},${IMG_VERSION_FILE} ${IMG_VERSION_FILE_VAR},g" \ + || die + dobin ${wrapper_file} + + local service_file="${TMP}/etcd${SLOT}-wrapper.service" + cat "${FILESDIR}/etcd-wrapper.service.template" > ${service_file} + cat ${service_file} + sed -i ${service_file} -e \ + "s,{{SLOT}},${SLOT},g" \ + || die + sed -i ${service_file} -e \ + "s,{{SOURCE_FILES}},${IMG_VERSION_FILE} ${IMG_VERSION_FILE_VAR},g" \ + || die + systemd_dounit "${service_file}" +} diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.service.template b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.service.template new file mode 100644 index 0000000000..57f170b288 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.service.template @@ -0,0 +1,17 @@ +[Unit] +Description=etcd{{SLOT}} (System Application Container) +Conflicts=etcd{{SLOT}}.service + +[Service] +Type=notify +Environment=ETCD_NAME=%m +Environment=ETCD_IMG_USER=etcd +Environment="SOURCE_FILES={{SOURCE_FILES}}" +ExecStart=/usr/bin/etcd{{SLOT}}-wrapped +Restart=always +RestartSec=10s +LimitNOFILE=40000 +TimeoutStartSec=0 + +[Install] +WantedBy=multi-user.target diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.template b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.template new file mode 100644 index 0000000000..5a5cfd144e --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/etcd-wrapper/files/etcd-wrapper.template @@ -0,0 +1,72 @@ +#!/usr/bin/bash -e + +# Wrapper for launching etcd via rkt. + +SOURCE_FILES=${SOURCE_FILES:-{{SOURCE_FILES}}} + +for source_file in ${SOURCE_FILES}; do + if [[ -e "${source_file}" ]]; then + source "${source_file}" + fi +done + +REQUIRED_ENV_VARS="ETCD_IMG ETCD_IMG_USER ETCD_DATA_DIR" +for rev in $REQUIRED_ENV_VARS ; do + if [[ -z ${!rev} ]]; then + echo ${rev} is not set + exit 1 + fi +done + +SSL_CERTS_SRC=${SSL_CERTS_SRC:-/etc/ssl/certs} +ETC_HOSTS_SRC=${ETC_HOSTS_SRC:-/etc/hosts} +SYSTEMD_SYSTEM_DIR_SRC=${SYSTEMD_SYSTEM_DIR_SRC:-/run/systemd/system} + +RKT=${RKT:-/usr/bin/rkt} +ETCD_IMG_EXEC=${ETCD_IMG_EXEC:-/etcd} + +RKT_STAGE1_ARG=${RKT_STAGE1_ARG:-"--stage1-from-dir=stage1-fly.aci"} + +if [[ ! -e ${ETCD_DATA_DIR} ]]; then + mkdir -p ${ETCD_DATA_DIR} + chown ${ETCD_IMG_USER} ${ETCD_DATA_DIR} +fi + +if [[ ! -z ${ETCD_IMG_PUBKEY} ]]; then + ${RKT} trust ${RKT_TRUST_ARGS} \ + --prefix=${ETCD_IMG_PREFIX} \ + --skip-fingerprint-review \ + ${ETCD_IMG_PUBKEY} +fi + +if [[ -d ${SYSTEMD_SYSTEM_DIR_SRC} ]]; then + RKT_RUN_ARGS="${RKT_RUN_ARGS} \ + --mount volume=systemd-dir,target=/run/systemd/system \ + --volume systemd-dir,kind=host,source=${SYSTEMD_SYSTEM_DIR_SRC},readOnly=true \ + " +fi + +if [[ -S ${NOTIFY_SOCKET} ]]; then + RKT_RUN_ARGS="${RKT_RUN_ARGS} \ + --mount volume=notify,target=/run/systemd/notify \ + --volume notify,kind=host,source=${NOTIFY_SOCKET} \ + --set-env=NOTIFY_SOCKET=/run/systemd/notify \ + " +fi + +set -x +exec ${RKT} ${RKT_GLOBAL_ARGS} \ + run ${RKT_RUN_ARGS} \ + --volume data-dir,kind=host,source=${ETCD_DATA_DIR} \ + \ + --mount volume=etc-ssl-certs,target=/etc/ssl/certs \ + --volume etc-ssl-certs,kind=host,source=${SSL_CERTS_SRC} \ + \ + --mount volume=etc-hosts,target=/etc/hosts \ + --volume etc-hosts,kind=host,source=${ETC_HOSTS_SRC} \ + \ + ${RKT_STAGE1_ARG} \ + ${ETCD_IMG} ${ETCD_IMG_ARGS} \ + --user=$(id -u ${ETCD_IMG_USER}) + --exec=${ETCD_IMG_EXEC} -- \ + "$@"