summaryrefslogtreecommitdiff
path: root/sysutils/py-google-compute-engine
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/py-google-compute-engine')
-rw-r--r--sysutils/py-google-compute-engine/Makefile51
-rw-r--r--sysutils/py-google-compute-engine/distinfo3
-rw-r--r--sysutils/py-google-compute-engine/files/90-google.conf.sample6
-rw-r--r--sysutils/py-google-compute-engine/files/google_accounts_daemon.in35
-rw-r--r--sysutils/py-google-compute-engine/files/google_clock_skew_daemon.in32
-rw-r--r--sysutils/py-google-compute-engine/files/google_instance_setup.in25
-rw-r--r--sysutils/py-google-compute-engine/files/google_network_daemon.in32
-rw-r--r--sysutils/py-google-compute-engine/files/google_set_hostname60
-rw-r--r--sysutils/py-google-compute-engine/files/google_startup.in43
-rw-r--r--sysutils/py-google-compute-engine/files/instance_configs.cfg.distro.sample17
-rw-r--r--sysutils/py-google-compute-engine/pkg-descr12
-rw-r--r--sysutils/py-google-compute-engine/pkg-message22
-rw-r--r--sysutils/py-google-compute-engine/pkg-plist3
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