diff options
Diffstat (limited to 'sysutils/py-google-compute-engine')
13 files changed, 341 insertions, 0 deletions
diff --git a/sysutils/py-google-compute-engine/Makefile b/sysutils/py-google-compute-engine/Makefile new file mode 100644 index 000000000000..1cb1d34ef1e8 --- /dev/null +++ b/sysutils/py-google-compute-engine/Makefile @@ -0,0 +1,51 @@ +PORTNAME= google-compute-engine +DISTVERSION= 2.8.17 +PORTREVISION= 2 +CATEGORIES= sysutils python +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= releng-gce@FreeBSD.org +COMMENT= Guest Environment for Google Compute Engine +WWW= https://github.com/GoogleCloudPlatform/compute-image-packages + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}distro>0:sysutils/py-distro@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}netaddr>0:net/py-netaddr@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}netifaces>0:net/py-netifaces@${PY_FLAVOR} \ + google_oslogin_control:sysutils/google-compute-engine-oslogin \ + sudo:security/sudo + +USES= python shebangfix +USE_PYTHON= autoplist concurrent distutils + +WRKSRC_SUBDIR= packages/python-google-compute-engine + +NO_ARCH= yes +SHEBANG_FILES= ../google-compute-engine/src/usr/bin/google_optimize_local_ssd \ + ../google-compute-engine/src/usr/bin/google_set_multiqueue + +USE_GITHUB= yes +GH_ACCOUNT= GoogleCloudPlatform +GH_PROJECT= compute-image-packages +GH_TAGNAME= 20190522 + +USE_RC_SUBR= google_accounts_daemon google_clock_skew_daemon \ + google_instance_setup google_network_daemon google_startup + +SUB_LIST= PYTHON_CMD="${PYTHON_CMD}" \ + PYTHON_VER="${PYTHON_VER}" +REINPLACE_ARGS= -i '' + +post-install: + @${MKDIR} ${STAGEDIR}${PREFIX}/etc/syslog.d ${STAGEDIR}/etc + ${INSTALL_DATA} ${FILESDIR}/instance_configs.cfg.distro.sample \ + ${STAGEDIR}${PREFIX}/etc/instance_configs.cfg.distro.sample + ${INSTALL_DATA} ${FILESDIR}/90-google.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/syslog.d/90-google.conf.sample + ${INSTALL_DATA} ${FILESDIR}/google_set_hostname \ + ${STAGEDIR}/etc/dhclient-exit-hooks + +.include <bsd.port.mk> diff --git a/sysutils/py-google-compute-engine/distinfo b/sysutils/py-google-compute-engine/distinfo new file mode 100644 index 000000000000..fd869ea55c26 --- /dev/null +++ b/sysutils/py-google-compute-engine/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1618297612 +SHA256 (GoogleCloudPlatform-compute-image-packages-2.8.17-20190522_GH0.tar.gz) = 8cfb338c3c768ea7e76e479728a1438b2f10b0df13bddd70c9fbcbfc1273efd6 +SIZE (GoogleCloudPlatform-compute-image-packages-2.8.17-20190522_GH0.tar.gz) = 132314 diff --git a/sysutils/py-google-compute-engine/files/90-google.conf.sample b/sysutils/py-google-compute-engine/files/90-google.conf.sample new file mode 100644 index 000000000000..81b2ed7ff9f9 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/90-google.conf.sample @@ -0,0 +1,6 @@ +# Google Compute Engine default console logging. +# +# daemon: logging from Google provided daemons. +# kern: logging information in case of an unexpected crash during boot. +# +daemon,kern.* /dev/console diff --git a/sysutils/py-google-compute-engine/files/google_accounts_daemon.in b/sysutils/py-google-compute-engine/files/google_accounts_daemon.in new file mode 100644 index 000000000000..7d75cb87f806 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_accounts_daemon.in @@ -0,0 +1,35 @@ +#!/bin/sh + +# PROVIDE: google_accounts_daemon +# BEFORE: LOGIN +# REQUIRE: NETWORKING syslogd google_instance_setup google_network_daemon +# KEYWORD: shutdown +# +# google_accounts_daemon_enable (bool): Set to NO by default. +# Set it to YES to enable google_accounts_daemon. +# + +. /etc/rc.subr + +# Required to execute scripts +export PATH=%%LOCALBASE%%/bin:$PATH + +name="google_accounts_daemon" +rcvar="google_accounts_daemon_enable" + +load_rc_config "${name}" + +: ${google_accounts_daemon_enable:="NO"} + +command_interpreter="%%PYTHON_CMD%%" +command=%%PREFIX%%/bin/${name}-%%PYTHON_VER%% +pidfile=/var/run/${name}.pid +start_cmd="google_accounts_daemon_start" + +google_accounts_daemon_start() +{ + check_startmsgs && echo "Starting ${name}." + daemon -p ${pidfile} -t ${name} ${command} +} + +run_rc_command "$1" diff --git a/sysutils/py-google-compute-engine/files/google_clock_skew_daemon.in b/sysutils/py-google-compute-engine/files/google_clock_skew_daemon.in new file mode 100644 index 000000000000..2fdc27069e34 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_clock_skew_daemon.in @@ -0,0 +1,32 @@ +#!/bin/sh + +# PROVIDE: google_clock_skew_daemon +# BEFORE: LOGIN +# REQUIRE: NETWORKING syslogd ntpd google_instance_setup google_network_daemon +# KEYWORD: shutdown +# +# google_clock_skew_daemon_enable (bool): Set to NO by default. +# Set it to YES to enable google_clock_skew_daemon. +# + +. /etc/rc.subr + +name="google_clock_skew_daemon" +rcvar="google_clock_skew_daemon_enable" + +load_rc_config "${name}" + +: ${google_clock_skew_daemon_enable:="NO"} + +command_interpreter="%%PYTHON_CMD%%" +command=%%PREFIX%%/bin/${name}-%%PYTHON_VER%% +pidfile=/var/run/${name}.pid +start_cmd="google_clock_skew_daemon_start" + +google_clock_skew_daemon_start() +{ + check_startmsgs && echo "Starting ${name}." + daemon -p ${pidfile} -t ${name} ${command} +} + +run_rc_command "$1" diff --git a/sysutils/py-google-compute-engine/files/google_instance_setup.in b/sysutils/py-google-compute-engine/files/google_instance_setup.in new file mode 100644 index 000000000000..d4262ce721f4 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_instance_setup.in @@ -0,0 +1,25 @@ +#!/bin/sh + +# PROVIDE: google_instance_setup +# BEFORE: LOGIN +# REQUIRE: NETWORKING syslogd +# +# google_instance_setup_enable (bool): Set to NO by default. +# Set it to YES to enable google_instance_setup. +# + +. /etc/rc.subr + +name="google_instance_setup" +rcvar="google_instance_setup_enable" +stop_cmd=":" + +load_rc_config "${name}" + +: ${google_instance_setup_enable:="NO"} + +command_interpreter="%%PYTHON_CMD%%" +command=%%PREFIX%%/bin/${name}-%%PYTHON_VER%% +pidfile=/var/run/${name}.pid + +run_rc_command "$1" diff --git a/sysutils/py-google-compute-engine/files/google_network_daemon.in b/sysutils/py-google-compute-engine/files/google_network_daemon.in new file mode 100644 index 000000000000..52b8e36e8028 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_network_daemon.in @@ -0,0 +1,32 @@ +#!/bin/sh + +# PROVIDE: google_network_daemon +# BEFORE: LOGIN +# REQUIRE: NETWORKING syslogd google_instance_setup google_network_daemon +# KEYWORD: shutdown +# +# google_network_daemon_enable (bool): Set to NO by default. +# Set it to YES to enable google_network_daemon. +# + +. /etc/rc.subr + +name="google_network_daemon" +rcvar="google_network_daemon_enable" + +load_rc_config "${name}" + +: ${google_network_daemon_enable:="NO"} + +command_interpreter="%%PYTHON_CMD%%" +command=%%PREFIX%%/bin/${name}-%%PYTHON_VER%% +pidfile=/var/run/${name}.pid +start_cmd="google_network_daemon_start" + +google_network_daemon_start() +{ + check_startmsgs && echo "Starting ${name}." + daemon -p ${pidfile} -t ${name} ${command} +} + +run_rc_command "$1" diff --git a/sysutils/py-google-compute-engine/files/google_set_hostname b/sysutils/py-google-compute-engine/files/google_set_hostname new file mode 100644 index 000000000000..f0d50de9ef26 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_set_hostname @@ -0,0 +1,60 @@ +#!/bin/sh +# Copyright 2016 Google Inc. All 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. + +# Deal with a new hostname assignment. + +if [ -n "$new_host_name" ] && [ -n "$new_ip_address" ]; then + # Delete entries with new_host_name or new_ip_address in /etc/hosts. + sed -i "" '/Added by Google/d' /etc/hosts + + # Add an entry for our new_host_name/new_ip_address in /etc/hosts. + echo "${new_ip_address} ${new_host_name} ${new_host_name%%.*} # Added by Google" >> /etc/hosts + + # Add an entry for reaching the metadata server in /etc/hosts. + echo "169.254.169.254 metadata.google.internal # Added by Google" >> /etc/hosts +fi + +# /sbin/dhclient-scripts in both ubuntu and centos have some problems for us: +# 1) BOUND doesn't always set hostname (e.g. if old_host_name is unset in +# precise pangolin) +# 2) Using too long of a FQDN as a hostname causes some tools to break in +# some distros (e.g. ssh-keygen) and hostname tool complains when given +# a FQDN that is > 64 bytes. +# +# As a result, we set the host name in all circumstances here, to the truncated +# unqualified domain name. + +if [ -n "$new_host_name" ]; then + hostname "${new_host_name%%.*}" + + # If NetworkManager is installed set the hostname with nmcli. + # to resolve issues with NetworkManager resetting the hostname + # to the FQDN on DHCP renew. + nmcli=$(which nmcli 2> /dev/null) + if [ -x "$nmcli" ]; then + nmcli general hostname "${new_host_name%%.*}" + fi + + # Restart rsyslog to update the hostname. + systemctl=$(which systemctl 2> /dev/null) + if [ -x "$systemctl" ]; then + hasrsyslog=$($systemctl | grep rsyslog | cut -f1 -d' ') + if [ ! -z "$hasrsyslog" ]; then + $systemctl -q --no-block restart "$hasrsyslog" + fi + else + pkill -HUP syslogd + fi +fi diff --git a/sysutils/py-google-compute-engine/files/google_startup.in b/sysutils/py-google-compute-engine/files/google_startup.in new file mode 100644 index 000000000000..5d0f98561ca7 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/google_startup.in @@ -0,0 +1,43 @@ +#!/bin/sh + +# PROVIDE: google_startup +# BEFORE: LOGIN +# REQUIRE: NETWORKING syslogd google_instance_setup google_network_daemon +# KEYWORD: shutdown +# +# google_startup_enable (bool): Set to NO by default. +# Set it to YES to enable google_startup. +# + +. /etc/rc.subr + +# Required to execute gsutil +export PATH=%%LOCALBASE%%/bin:$PATH + +name="google_startup" +rcvar="google_startup_enable" + +load_rc_config "${name}" + +: ${google_startup_enable:="NO"} + +command_interpreter="%%PYTHON_CMD%%" +command=%%PREFIX%%/bin/google_metadata_script_runner-%%PYTHON_VER%% +command_startup_args="--script-type startup" +command_shutdown_args="--script-type shutdown" +pidfile=/var/run/${name}.pid +start_cmd="google_startup_start" +stop_cmd="google_startup_stop" + +google_startup_start() +{ + ${command} ${command_startup_args} +} + +google_startup_stop() +{ + echo "Stopping ${name}." + ${command} ${command_shutdown_args} +} + +run_rc_command "$1" diff --git a/sysutils/py-google-compute-engine/files/instance_configs.cfg.distro.sample b/sysutils/py-google-compute-engine/files/instance_configs.cfg.distro.sample new file mode 100644 index 000000000000..68e85c3ccba5 --- /dev/null +++ b/sysutils/py-google-compute-engine/files/instance_configs.cfg.distro.sample @@ -0,0 +1,17 @@ +[Accounts] +gpasswd_add_cmd = pw groupmod {group} -m {user} +gpasswd_remove_cmd = pw groupmod {group} -d {user} +useradd_cmd = pw useradd {user} -m +userdel_cmd = pw userdel {user} -r +usermod_cmd = pw usermod {user} -G {groups} +groupadd_cmd = pw groupadd {group} + +[MetadataScripts] +default_shell = /bin/sh + +[InstanceSetup] +set_multiqueue = false +optimize_local_ssd = false +# google-cloud-sdk only supports python2 at the moment, disabling boto will +# avoid issues when running this agent with python3. +set_boto_config = false diff --git a/sysutils/py-google-compute-engine/pkg-descr b/sysutils/py-google-compute-engine/pkg-descr new file mode 100644 index 000000000000..b68c0352adc1 --- /dev/null +++ b/sysutils/py-google-compute-engine/pkg-descr @@ -0,0 +1,12 @@ +Google Compute Engine offers scripts and daemons which run in the +background and provides the following services: + +- Accounts daemon to setup and manage user accounts, and to enable SSH key based + authentication. +- Clock skew daemon to keep the system clock in sync after VM start and stop + events. +- Instance setup scripts to execute VM configuration scripts during boot. +- IP forwarding daemon that integrates network load balancing with forwarding + rule changes into the guest. +- Metadata scripts to run user provided scripts at VM startup and shutdown. +- Network setup service to enable multiple network interfaces on boot. diff --git a/sysutils/py-google-compute-engine/pkg-message b/sysutils/py-google-compute-engine/pkg-message new file mode 100644 index 000000000000..cc1a929304d1 --- /dev/null +++ b/sysutils/py-google-compute-engine/pkg-message @@ -0,0 +1,22 @@ +[ +{ type: install + message: <<EOM +google-compute-engine has been installed, and the following services are +available: + +google_accounts_daemon Responsible for provisioning and + deprovisioning user accounts +google_clock_skew_daemon Responsible for syncing the software clock with + the hypervisor clock +google_instance_setup Configure the guest at boot +google_network_daemon Responsible to manage network interfaces and ip + routes in the guest +google_startup Implement support for running host provided + startup / shutdown scripts + +To enable the above services, sysrc <servicename>_enable=YES + +Reboot your system or start the services, service <servicename> start +EOM +} +] diff --git a/sysutils/py-google-compute-engine/pkg-plist b/sysutils/py-google-compute-engine/pkg-plist new file mode 100644 index 000000000000..52518d3ac0ee --- /dev/null +++ b/sysutils/py-google-compute-engine/pkg-plist @@ -0,0 +1,3 @@ +@sample etc/instance_configs.cfg.distro.sample +@sample etc/syslog.d/90-google.conf.sample +/etc/dhclient-exit-hooks |