diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | google-guest-agent.spec | 297 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 299 insertions, 0 deletions
@@ -0,0 +1 @@ +/google-guest-agent_20260309.00.orig.tar.gz diff --git a/google-guest-agent.spec b/google-guest-agent.spec new file mode 100644 index 0000000..dd2b69d --- /dev/null +++ b/google-guest-agent.spec @@ -0,0 +1,297 @@ +# Copyright 2018 Google LLC + +# 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 + +# https://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. + +# Don't build debuginfo packages. +%define debug_package %{nil} + +# The only use for extra source is to build plugin manager. +%if 0%{?has_extra_source} +%define build_plugin_manager %{has_extra_source} +%endif + +%define _version 20260309.00 +%define _go /usr/bin/go +%define _gopath /tmp + +Name: google-guest-agent +Epoch: 1 +Version: %{_version} +Release: g1%{?dist} +Summary: Google Compute Engine guest agent. +License: ASL 2.0 +Url: https://cloud.google.com/compute/docs/images/guest-environment +Source0: %{name}_%{version}.orig.tar.gz + +%if 0%{?build_plugin_manager} +Source1: %{name}_extra-%{version}.orig.tar.gz +%endif + +Requires: google-compute-engine-oslogin >= 1:20231003 + +BuildArch: %{_arch} +%if ! 0%{?el6} +BuildRequires: systemd +%endif + +Obsoletes: python-google-compute-engine, python3-google-compute-engine + +%description +Contains the Google guest agent binary. + +%prep + +%if 0%{?build_plugin_manager} +%autosetup -a 1 +%else +%autosetup +%endif + +%build +for bin in google_guest_agent google_metadata_script_runner gce_workload_cert_refresh; do + pushd "$bin" + GOPATH=%{_gopath} CGO_ENABLED=0 %{_go} build -ldflags="-s -w -X main.version=%{_version}" -mod=readonly + popd +done +# Build side-by-side both new agent (plugin manager) and legacy agent. +%if 0%{?build_plugin_manager} +pushd %{name}-extra-%{version}/ + VERSION=%{version} make cmd/google_guest_agent/google_guest_agent + VERSION=%{version} make cmd/ggactl/ggactl_plugin + VERSION=%{version} make cmd/google_guest_compat_manager/google_guest_compat_manager + VERSION=%{version} make cmd/core_plugin/core_plugin + VERSION=%{version} make cmd/gce_metadata_script_runner/gce_metadata_script_runner + VERSION=%{version} make cmd/metadata_script_runner_compat/gce_compat_metadata_script_runner + make cmd/guest_telemetry_extension/guest_telemetry;\ +popd +%endif + +%install +install -d "%{buildroot}/%{_docdir}/%{name}" +cp -r THIRD_PARTY_LICENSES "%buildroot/%_docdir/%name/THIRD_PARTY_LICENSES" + +install -d %{buildroot}%{_bindir} +install -p -m 0755 google_guest_agent/google_guest_agent %{buildroot}%{_bindir}/google_guest_agent +install -p -m 0755 google_metadata_script_runner/google_metadata_script_runner %{buildroot}%{_bindir}/google_metadata_script_runner +install -p -m 0755 google_metadata_script_runner_adapt %{buildroot}%{_bindir}/google_metadata_script_runner_adapt +install -p -m 0755 gce_workload_cert_refresh/gce_workload_cert_refresh %{buildroot}%{_bindir}/gce_workload_cert_refresh +install -d %{buildroot}/usr/share/google-guest-agent +install -p -m 0644 instance_configs.cfg %{buildroot}/usr/share/google-guest-agent/instance_configs.cfg + +# Compat agent, it will become google_guest_agent after the full package transition. +%if 0%{?build_plugin_manager} +install -d %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestAgentCorePlugin +install -p -m 0755 %{name}-extra-%{version}/cmd/gce_metadata_script_runner/gce_metadata_script_runner %{buildroot}%{_bindir}/gce_metadata_script_runner +install -p -m 0755 %{name}-extra-%{version}/cmd/google_guest_agent/google_guest_agent %{buildroot}%{_bindir}/google_guest_agent_manager +install -p -m 0755 %{name}-extra-%{version}/cmd/ggactl/ggactl_plugin %{buildroot}%{_bindir}/ggactl_plugin +install -p -m 0755 %{name}-extra-%{version}/cmd/google_guest_compat_manager/google_guest_compat_manager %{buildroot}%{_bindir}/google_guest_compat_manager +install -p -m 0755 %{name}-extra-%{version}/cmd/core_plugin/core_plugin %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestAgentCorePlugin/core_plugin +install -p -m 0644 %{name}-extra-%{version}/build/configs/usr/lib/google/guest_agent/GuestAgentCorePlugin/manifest.binpb %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestAgentCorePlugin/manifest.binpb +install -p -m 0755 %{name}-extra-%{version}/cmd/metadata_script_runner_compat/gce_compat_metadata_script_runner %{buildroot}%{_bindir}/gce_compat_metadata_script_runner +install -d %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestTelemetryExtension +install -p -m 0644 %{name}-extra-%{version}/build/configs/usr/lib/google/guest_agent/GuestTelemetryExtension/manifest.binpb %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestTelemetryExtension/manifest.binpb +install -p -m 0755 %{name}-extra-%{version}/cmd/guest_telemetry_extension/guest_telemetry %{buildroot}%{_exec_prefix}/lib/google/guest_agent/GuestTelemetryExtension/guest_telemetry +%endif + +%if 0%{?el6} +install -d %{buildroot}/etc/init +install -p -m 0644 %{name}.conf %{buildroot}/etc/init/ +install -p -m 0644 google-startup-scripts.conf %{buildroot}/etc/init/ +install -p -m 0644 google-shutdown-scripts.conf %{buildroot}/etc/init/ +%else +install -d %{buildroot}%{_unitdir} +install -d %{buildroot}%{_presetdir} +install -p -m 0644 %{name}.service %{buildroot}%{_unitdir} + +%if 0%{?build_plugin_manager} +install -p -m 0644 google-guest-agent-manager.service %{buildroot}%{_unitdir} +install -p -m 0644 google-guest-compat-manager.service %{buildroot}%{_unitdir} +%endif + +install -p -m 0644 google-startup-scripts.service %{buildroot}%{_unitdir} +install -p -m 0644 google-shutdown-scripts.service %{buildroot}%{_unitdir} +install -p -m 0644 gce-workload-cert-refresh.service %{buildroot}%{_unitdir} +install -p -m 0644 gce-workload-cert-refresh.timer %{buildroot}%{_unitdir} +install -p -m 0644 90-%{name}.preset %{buildroot}%{_presetdir}/90-%{name}.preset +%endif + +%files +%{_docdir}/%{name} +%defattr(-,root,root,-) +/usr/share/google-guest-agent/instance_configs.cfg +%{_bindir}/google_guest_agent + +%if 0%{?build_plugin_manager} +%{_bindir}/gce_metadata_script_runner +%{_bindir}/google_guest_compat_manager +%{_bindir}/gce_compat_metadata_script_runner +%{_bindir}/google_guest_agent_manager +%{_bindir}/ggactl_plugin +%{_exec_prefix}/lib/google/guest_agent/GuestAgentCorePlugin/core_plugin +%{_exec_prefix}/lib/google/guest_agent/GuestAgentCorePlugin/manifest.binpb +%{_exec_prefix}/lib/google/guest_agent/GuestTelemetryExtension/guest_telemetry +%{_exec_prefix}/lib/google/guest_agent/GuestTelemetryExtension/manifest.binpb +%endif + +%{_bindir}/google_metadata_script_runner +%{_bindir}/google_metadata_script_runner_adapt +%{_bindir}/gce_workload_cert_refresh +%if 0%{?el6} +/etc/init/%{name}.conf +/etc/init/google-startup-scripts.conf +/etc/init/google-shutdown-scripts.conf +%else +%{_unitdir}/%{name}.service + +%if 0%{?build_plugin_manager} +%{_unitdir}/google-guest-agent-manager.service +%{_unitdir}/google-guest-compat-manager.service +%endif + +%{_unitdir}/google-startup-scripts.service +%{_unitdir}/google-shutdown-scripts.service +%{_unitdir}/gce-workload-cert-refresh.service +%{_unitdir}/gce-workload-cert-refresh.timer +%{_presetdir}/90-%{name}.preset +%endif + +%if ! 0%{?el6} +%post +if [ $1 -eq 1 ]; then + # Initial installation + + # Install instance configs if not already present. + if [ ! -f /etc/default/instance_configs.cfg ]; then + cp -a /usr/share/google-guest-agent/instance_configs.cfg /etc/default/ + fi + + # Use enable instead of preset because preset is not supported in + # chroots. + systemctl enable google-startup-scripts.service >/dev/null 2>&1 || : + systemctl enable google-shutdown-scripts.service >/dev/null 2>&1 || : + systemctl enable gce-workload-cert-refresh.timer >/dev/null 2>&1 || : + + %if 0%{?build_plugin_manager} + systemctl enable google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl enable google-guest-agent-manager.service >/dev/null 2>&1 || : + %endif + + if [ -d /run/systemd/system ]; then + systemctl daemon-reload >/dev/null 2>&1 || : + systemctl start gce-workload-cert-refresh.timer >/dev/null 2>&1 || : + %if 0%{?build_plugin_manager} + systemctl start google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl start google-guest-agent-manager.service >/dev/null 2>&1 || : + %endif + fi + + +else + # Package upgrade + %if 0%{?build_plugin_manager} + systemctl enable google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl enable google-guest-agent-manager.service >/dev/null 2>&1 || : + systemctl disable google-guest-agent.service >/dev/null 2>&1 || : + %endif + + if [ -d /run/systemd/system ]; then + systemctl daemon-reload >/dev/null 2>&1 || : + %if 0%{?build_plugin_manager} + if grep -q "false" "/etc/google-guest-agent/core-plugin-enabled"; then + systemctl enable google-guest-agent.service >/dev/null 2>&1 || : + systemctl start google-guest-agent.service >/dev/null 2>&1 || : + else + systemctl stop google-guest-agent.service >/dev/null 2>&1 || : + fi + systemctl restart google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl restart google-guest-agent-manager.service >/dev/null 2>&1 || : + %endif + fi + + # Re-enable the guest agent service if core plugin was enabled, since the + # service would have been disabled, and stay disabled post-upgrade. + if [ ! -f "/usr/bin/google_guest_compat_manager" ]; then + if [ -f "/etc/google-guest-agent/core-plugin-enabled" ] && [ ! -z $(grep "true" "/etc/google-guest-agent/core-plugin-enabled") ]; then + systemctl enable google-guest-agent.service > /dev/null 2>&1 || : + systemctl enable gce-workload-cert-refresh.timer > /dev/null 2>&1 || : + fi + fi +fi + +%preun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + %if 0%{?build_plugin_manager} + systemctl --no-reload disable google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl --no-reload disable google-guest-agent-manager.service >/dev/null 2>&1 || : + %endif + systemctl --no-reload disable google-guest-agent.service >/dev/null 2>&1 || : + systemctl --no-reload disable google-startup-scripts.service >/dev/null 2>&1 || : + systemctl --no-reload disable google-shutdown-scripts.service >/dev/null 2>&1 || : + systemctl --no-reload disable gce-workload-cert-refresh.timer >/dev/null 2>&1 || : + if [ -d /run/systemd/system ]; then + systemctl stop google-guest-agent.service >/dev/null 2>&1 || : + %if 0%{?build_plugin_manager} + systemctl stop google-guest-compat-manager.service >/dev/null 2>&1 || : + systemctl stop google-guest-agent-manager.service >/dev/null 2>&1 || : + ggactl_plugin coreplugin stop >/dev/null 2>&1 || : + ggactl_plugin dynamic-cleanup >/dev/null 2>&1 || : + %endif + fi +fi + +%postun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + + if [ -f /etc/default/instance_configs.cfg ]; then + rm /etc/default/instance_configs.cfg + fi + + if [ -d /run/systemd/system ]; then + systemctl daemon-reload >/dev/null 2>&1 || : + fi +fi + +%else + +# EL6 +%post +if [ $1 -eq 1 ]; then + # Install instance configs if not already present. + if [ ! -f /etc/default/instance_configs.cfg ]; then + cp -a /usr/share/google-guest-agent/instance_configs.cfg /etc/default/ + fi + + # Initial installation + initctl start google-guest-agent >/dev/null 2>&1 || : +else + # Upgrade + initctl restart google-guest-agent >/dev/null 2>&1 || : +fi + +%preun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + initctl stop google-guest-agent >/dev/null 2>&1 || : +fi + +%postun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + if [ -f /etc/default/instance_configs.cfg ]; then + rm /etc/default/instance_configs.cfg + fi +fi + +%endif @@ -0,0 +1 @@ +b06cd23defdc28d9893cfb79a2156665 google-guest-agent_20260309.00.orig.tar.gz |
