sysutils/py-google-compute-engine: revive port
This reverts commit 5a7ff51021 and uses
www/py-boto3 instead of the removed devel/py-boto, and releng-gce@
assumes maintainership.
This is meant to be a temporary measure as we are exploring alternatives
for GCE support.
MFH: 2025Q2
This commit is contained in:
@@ -4248,7 +4248,6 @@ textproc/rubygem-nokogumbo||2025-03-31|Has expired: Upstream has merged into tex
|
||||
net/libmediawiki||2025-03-31|Has expired: Project abandoned upstream
|
||||
net/py-tacacs_plus||2025-03-31|Has expired: Depends on expired devel/py-pytest-runner
|
||||
devel/py-imgkit||2025-03-31|Has expired: Depends on expired converters/wkhtmltopdf
|
||||
sysutils/py-google-compute-engine||2025-03-31|Has expired: Depends on expired devel/py-boto
|
||||
devel/ocaml-type_conv|devel/ocaml-ppxlib|2025-03-31|Has expired: Deprecated, upstream recommends migrating to devel/ocaml-ppxlib
|
||||
multimedia/dirac||2025-03-31|Has expired: Legacy video codec superseded by multiple formats. Files can be decoded using FFmpeg
|
||||
ports-mgmt/py-pytoport||2025-03-31|Has expired: Depends on expired misc/py-spdx-lookup
|
||||
|
||||
@@ -1028,6 +1028,7 @@
|
||||
SUBDIR += py-filelock
|
||||
SUBDIR += py-focker
|
||||
SUBDIR += py-glances
|
||||
SUBDIR += py-google-compute-engine
|
||||
SUBDIR += py-hared
|
||||
SUBDIR += py-hcloud
|
||||
SUBDIR += py-honcho
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
@sample etc/instance_configs.cfg.distro.sample
|
||||
@sample etc/syslog.d/90-google.conf.sample
|
||||
/etc/dhclient-exit-hooks
|
||||
Reference in New Issue
Block a user