treewide: add license header and enable haslicense linter

Change-Id: I873a8d4082d75e8f813d8a726a41187eea7a065e
Reviewed-on: https://review.monogon.dev/c/monogon/+/3825
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/cloud/agent/agent.go b/cloud/agent/agent.go
index e0bfd81..c5873eb 100644
--- a/cloud/agent/agent.go
+++ b/cloud/agent/agent.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/agent/api/gomod-generated-placeholder.go b/cloud/agent/api/gomod-generated-placeholder.go
index 778f64e..da08b30 100644
--- a/cloud/agent/api/gomod-generated-placeholder.go
+++ b/cloud/agent/api/gomod-generated-placeholder.go
@@ -1 +1,4 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package api
diff --git a/cloud/agent/e2e/main_test.go b/cloud/agent/e2e/main_test.go
index dcde625..84fd611 100644
--- a/cloud/agent/e2e/main_test.go
+++ b/cloud/agent/e2e/main_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package e2e
 
 import (
diff --git a/cloud/agent/hwreport.go b/cloud/agent/hwreport.go
index c37a640..5be56ae 100644
--- a/cloud/agent/hwreport.go
+++ b/cloud/agent/hwreport.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/agent/hwreport_test.go b/cloud/agent/hwreport_test.go
index b2d8649..43f61fd 100644
--- a/cloud/agent/hwreport_test.go
+++ b/cloud/agent/hwreport_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/agent/install.go b/cloud/agent/install.go
index 30d6869..cdc8fa5 100644
--- a/cloud/agent/install.go
+++ b/cloud/agent/install.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/agent/takeover/e2e/main_test.go b/cloud/agent/takeover/e2e/main_test.go
index b141e63..9ab6769 100644
--- a/cloud/agent/takeover/e2e/main_test.go
+++ b/cloud/agent/takeover/e2e/main_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package e2e
 
 import (
diff --git a/cloud/agent/takeover/takeover.go b/cloud/agent/takeover/takeover.go
index bf7760c..9af4872 100644
--- a/cloud/agent/takeover/takeover.go
+++ b/cloud/agent/takeover/takeover.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // takeover is a self-contained executable which when executed loads the BMaaS
 // agent via kexec. It is intended to be called over SSH, given a binary
 // TakeoverInit message over standard input and (if all preparation work
diff --git a/cloud/api/gomod-generated-placeholder.go b/cloud/api/gomod-generated-placeholder.go
index 778f64e..da08b30 100644
--- a/cloud/api/gomod-generated-placeholder.go
+++ b/cloud/api/gomod-generated-placeholder.go
@@ -1 +1,4 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package api
diff --git a/cloud/apigw/main.go b/cloud/apigw/main.go
index 9c0ebff..4d2ca31 100644
--- a/cloud/apigw/main.go
+++ b/cloud/apigw/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/apigw/model/migrations.go b/cloud/apigw/model/migrations.go
index 2c07768..95b5dcf 100644
--- a/cloud/apigw/model/migrations.go
+++ b/cloud/apigw/model/migrations.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package model
 
 import (
diff --git a/cloud/apigw/server/server.go b/cloud/apigw/server/server.go
index 902b4e0..d075e98 100644
--- a/cloud/apigw/server/server.go
+++ b/cloud/apigw/server/server.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package server
 
 import (
diff --git a/cloud/apigw/server/server_test.go b/cloud/apigw/server/server_test.go
index 704de36..1455f63 100644
--- a/cloud/apigw/server/server_test.go
+++ b/cloud/apigw/server/server_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package server
 
 import (
diff --git a/cloud/bmaas/bmdb/backoff_test.go b/cloud/bmaas/bmdb/backoff_test.go
index 9d22f2a..19d3f51 100644
--- a/cloud/bmaas/bmdb/backoff_test.go
+++ b/cloud/bmaas/bmdb/backoff_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/bmdb.go b/cloud/bmaas/bmdb/bmdb.go
index 242c3d9..400aa4a 100644
--- a/cloud/bmaas/bmdb/bmdb.go
+++ b/cloud/bmaas/bmdb/bmdb.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package bmdb implements a connector to the Bare Metal Database, which is the
 // main data store backing information about bare metal machines.
 //
diff --git a/cloud/bmaas/bmdb/connection.go b/cloud/bmaas/bmdb/connection.go
index a739f9b..8024eb8 100644
--- a/cloud/bmaas/bmdb/connection.go
+++ b/cloud/bmaas/bmdb/connection.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/metrics/metrics.go b/cloud/bmaas/bmdb/metrics/metrics.go
index 509827b..242ac2d 100644
--- a/cloud/bmaas/bmdb/metrics/metrics.go
+++ b/cloud/bmaas/bmdb/metrics/metrics.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package metrics implements a Prometheus metrics submission interface for BMDB
 // client components. A Metrics object can be attached to a BMDB object, which
 // will make all BMDB sessions/transactions/work statistics be submitted to that
diff --git a/cloud/bmaas/bmdb/migrations_test.go b/cloud/bmaas/bmdb/migrations_test.go
index 1a70655..fe5b75c 100644
--- a/cloud/bmaas/bmdb/migrations_test.go
+++ b/cloud/bmaas/bmdb/migrations_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/model/interfaces.go b/cloud/bmaas/bmdb/model/interfaces.go
index 9c8f601..1d559d6 100644
--- a/cloud/bmaas/bmdb/model/interfaces.go
+++ b/cloud/bmaas/bmdb/model/interfaces.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package model
 
 import "context"
diff --git a/cloud/bmaas/bmdb/model/migrations.go b/cloud/bmaas/bmdb/model/migrations.go
index 2c07768..95b5dcf 100644
--- a/cloud/bmaas/bmdb/model/migrations.go
+++ b/cloud/bmaas/bmdb/model/migrations.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package model
 
 import (
diff --git a/cloud/bmaas/bmdb/queries_test.go b/cloud/bmaas/bmdb/queries_test.go
index 7ceae89..917033f 100644
--- a/cloud/bmaas/bmdb/queries_test.go
+++ b/cloud/bmaas/bmdb/queries_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/reflection/reflection.go b/cloud/bmaas/bmdb/reflection/reflection.go
index b9f6d11..0976905 100644
--- a/cloud/bmaas/bmdb/reflection/reflection.go
+++ b/cloud/bmaas/bmdb/reflection/reflection.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package reflection implements facilities to retrieve information about the
 // implemented Tags and their types from a plain CockroachDB SQL connection,
 // bypassing the queries/types defined in models. Then, the retrieved Schema can
diff --git a/cloud/bmaas/bmdb/reflection/schema.go b/cloud/bmaas/bmdb/reflection/schema.go
index 6c364a9..bceb931 100644
--- a/cloud/bmaas/bmdb/reflection/schema.go
+++ b/cloud/bmaas/bmdb/reflection/schema.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package reflection
 
 import (
diff --git a/cloud/bmaas/bmdb/reflection_test.go b/cloud/bmaas/bmdb/reflection_test.go
index 8f365d8..17abc9d 100644
--- a/cloud/bmaas/bmdb/reflection_test.go
+++ b/cloud/bmaas/bmdb/reflection_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/sessions.go b/cloud/bmaas/bmdb/sessions.go
index 95b8be5..22ea3fd 100644
--- a/cloud/bmaas/bmdb/sessions.go
+++ b/cloud/bmaas/bmdb/sessions.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/sessions_test.go b/cloud/bmaas/bmdb/sessions_test.go
index 36fb4a4..8839c17 100644
--- a/cloud/bmaas/bmdb/sessions_test.go
+++ b/cloud/bmaas/bmdb/sessions_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package bmdb
 
 import (
diff --git a/cloud/bmaas/bmdb/webug/functions.go b/cloud/bmaas/bmdb/webug/functions.go
index 4c5c625..3c8f43b 100644
--- a/cloud/bmaas/bmdb/webug/functions.go
+++ b/cloud/bmaas/bmdb/webug/functions.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package webug
 
 import (
diff --git a/cloud/bmaas/bmdb/webug/views.go b/cloud/bmaas/bmdb/webug/views.go
index 7c43054..a0bab7b 100644
--- a/cloud/bmaas/bmdb/webug/views.go
+++ b/cloud/bmaas/bmdb/webug/views.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package webug
 
 import (
diff --git a/cloud/bmaas/bmdb/webug/webug.go b/cloud/bmaas/bmdb/webug/webug.go
index f4d3e4a..137a0fd 100644
--- a/cloud/bmaas/bmdb/webug/webug.go
+++ b/cloud/bmaas/bmdb/webug/webug.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package webug implements a web-based debug/troubleshooting/introspection
 // system for the BMDB. It's optimized for use by developers and trained
 // operators, prioritizing information density, fast navigation and heavy
diff --git a/cloud/bmaas/scruffy/bmdb_stats.go b/cloud/bmaas/scruffy/bmdb_stats.go
index 338c91a..90b2df2 100644
--- a/cloud/bmaas/scruffy/bmdb_stats.go
+++ b/cloud/bmaas/scruffy/bmdb_stats.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package scruffy
 
 import (
diff --git a/cloud/bmaas/scruffy/bmdb_stats_test.go b/cloud/bmaas/scruffy/bmdb_stats_test.go
index 0d0f199..0e28755 100644
--- a/cloud/bmaas/scruffy/bmdb_stats_test.go
+++ b/cloud/bmaas/scruffy/bmdb_stats_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package scruffy
 
 import (
diff --git a/cloud/bmaas/scruffy/cmd/main.go b/cloud/bmaas/scruffy/cmd/main.go
index b675fda..457c05a 100644
--- a/cloud/bmaas/scruffy/cmd/main.go
+++ b/cloud/bmaas/scruffy/cmd/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/bmaas/scruffy/hw_stats.go b/cloud/bmaas/scruffy/hw_stats.go
index 0aff67b..0006ef2 100644
--- a/cloud/bmaas/scruffy/hw_stats.go
+++ b/cloud/bmaas/scruffy/hw_stats.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package scruffy
 
 import (
diff --git a/cloud/bmaas/scruffy/hw_stats_test.go b/cloud/bmaas/scruffy/hw_stats_test.go
index dbcab2d..7dc8139 100644
--- a/cloud/bmaas/scruffy/hw_stats_test.go
+++ b/cloud/bmaas/scruffy/hw_stats_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package scruffy
 
 import (
diff --git a/cloud/bmaas/scruffy/labels.go b/cloud/bmaas/scruffy/labels.go
index b88f799..c90e43a 100644
--- a/cloud/bmaas/scruffy/labels.go
+++ b/cloud/bmaas/scruffy/labels.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package scruffy
 
 import (
diff --git a/cloud/bmaas/scruffy/server.go b/cloud/bmaas/scruffy/server.go
index 01d22bf..d020a77 100644
--- a/cloud/bmaas/scruffy/server.go
+++ b/cloud/bmaas/scruffy/server.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package scruffy implements Scruffy, The Janitor.
 //
 // Scruffy is a BMaaS component which runs a bunch of important, housekeeping-ish
diff --git a/cloud/bmaas/server/agent_callback_service.go b/cloud/bmaas/server/agent_callback_service.go
index 97636f7..cbd912a 100644
--- a/cloud/bmaas/server/agent_callback_service.go
+++ b/cloud/bmaas/server/agent_callback_service.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package server
 
 import (
diff --git a/cloud/bmaas/server/agent_callback_service_test.go b/cloud/bmaas/server/agent_callback_service_test.go
index 4a3a9f4..f5d1383 100644
--- a/cloud/bmaas/server/agent_callback_service_test.go
+++ b/cloud/bmaas/server/agent_callback_service_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package server
 
 import (
diff --git a/cloud/bmaas/server/api/gomod-generated-placeholder.go b/cloud/bmaas/server/api/gomod-generated-placeholder.go
index 778f64e..da08b30 100644
--- a/cloud/bmaas/server/api/gomod-generated-placeholder.go
+++ b/cloud/bmaas/server/api/gomod-generated-placeholder.go
@@ -1 +1,4 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package api
diff --git a/cloud/bmaas/server/cmd/main.go b/cloud/bmaas/server/cmd/main.go
index 8dbb7f8..6c14ab3 100644
--- a/cloud/bmaas/server/cmd/main.go
+++ b/cloud/bmaas/server/cmd/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/bmaas/server/server.go b/cloud/bmaas/server/server.go
index 0d188c2..8cedf2b 100644
--- a/cloud/bmaas/server/server.go
+++ b/cloud/bmaas/server/server.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package server
 
 import (
diff --git a/cloud/equinix/cli/cmd_delete.go b/cloud/equinix/cli/cmd_delete.go
index 97eb26f..5e1d132 100644
--- a/cloud/equinix/cli/cmd_delete.go
+++ b/cloud/equinix/cli/cmd_delete.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/cli/cmd_list.go b/cloud/equinix/cli/cmd_list.go
index ab6b9cf..917494a 100644
--- a/cloud/equinix/cli/cmd_list.go
+++ b/cloud/equinix/cli/cmd_list.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/cli/cmd_move.go b/cloud/equinix/cli/cmd_move.go
index ec32071..e835a7e 100644
--- a/cloud/equinix/cli/cmd_move.go
+++ b/cloud/equinix/cli/cmd_move.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/cli/cmd_reboot.go b/cloud/equinix/cli/cmd_reboot.go
index e788f01..0f7f317 100644
--- a/cloud/equinix/cli/cmd_reboot.go
+++ b/cloud/equinix/cli/cmd_reboot.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/cli/cmd_yoink.go b/cloud/equinix/cli/cmd_yoink.go
index c351d47..1de5803 100644
--- a/cloud/equinix/cli/cmd_yoink.go
+++ b/cloud/equinix/cli/cmd_yoink.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/cli/main.go b/cloud/equinix/cli/main.go
index a85c0d0..85de18b 100644
--- a/cloud/equinix/cli/main.go
+++ b/cloud/equinix/cli/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/equinix/wrapngo/duct_tape.go b/cloud/equinix/wrapngo/duct_tape.go
index d5dab7c..21581ce 100644
--- a/cloud/equinix/wrapngo/duct_tape.go
+++ b/cloud/equinix/wrapngo/duct_tape.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package wrapngo
 
 import (
diff --git a/cloud/equinix/wrapngo/metrics.go b/cloud/equinix/wrapngo/metrics.go
index fef506b..f6cabcb 100644
--- a/cloud/equinix/wrapngo/metrics.go
+++ b/cloud/equinix/wrapngo/metrics.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package wrapngo
 
 import (
diff --git a/cloud/equinix/wrapngo/wrapn.go b/cloud/equinix/wrapngo/wrapn.go
index 8ee654c..eee0b57 100644
--- a/cloud/equinix/wrapngo/wrapn.go
+++ b/cloud/equinix/wrapngo/wrapn.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package wrapngo wraps packngo methods providing the following usability
 // enhancements:
 // - API call rate limiting
diff --git a/cloud/equinix/wrapngo/wrapngo_live_test.go b/cloud/equinix/wrapngo/wrapngo_live_test.go
index 166da4b..0ccce37 100644
--- a/cloud/equinix/wrapngo/wrapngo_live_test.go
+++ b/cloud/equinix/wrapngo/wrapngo_live_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package wrapngo
 
 import (
diff --git a/cloud/lib/component/component.go b/cloud/lib/component/component.go
index 1acd961..46fa58a 100644
--- a/cloud/lib/component/component.go
+++ b/cloud/lib/component/component.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package component implements reusable bits for cloud service components. Each
 // component is currently defined as being a standalone Go binary with its own
 // internal gRPC listener. Subsequent listeners (eg. public gRPC or HTTP) can be
diff --git a/cloud/lib/component/crdb.go b/cloud/lib/component/crdb.go
index 0bdbb4d..07306d1 100644
--- a/cloud/lib/component/crdb.go
+++ b/cloud/lib/component/crdb.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package component
 
 import (
diff --git a/cloud/lib/component/devcerts.go b/cloud/lib/component/devcerts.go
index 2a5f60a..837ad98 100644
--- a/cloud/lib/component/devcerts.go
+++ b/cloud/lib/component/devcerts.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package component
 
 import (
diff --git a/cloud/lib/sinbin/sinbin.go b/cloud/lib/sinbin/sinbin.go
index 7c6bf3c..b1c905b 100644
--- a/cloud/lib/sinbin/sinbin.go
+++ b/cloud/lib/sinbin/sinbin.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package sinbin implements a sinbin for naughty processed elements that we wish
 // to time out for a while. This is kept in memory, and effectively implements a
 // simplified version of the Circuit Breaker pattern.
diff --git a/cloud/lib/sinbin/sinbin_test.go b/cloud/lib/sinbin/sinbin_test.go
index 7403bb1..715ac94 100644
--- a/cloud/lib/sinbin/sinbin_test.go
+++ b/cloud/lib/sinbin/sinbin_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package sinbin
 
 import (
diff --git a/cloud/shepherd/manager/control_loop.go b/cloud/shepherd/manager/control_loop.go
index 3e5c832..138b6cb 100644
--- a/cloud/shepherd/manager/control_loop.go
+++ b/cloud/shepherd/manager/control_loop.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/fake_ssh_client.go b/cloud/shepherd/manager/fake_ssh_client.go
index cc8c42a..d932210 100644
--- a/cloud/shepherd/manager/fake_ssh_client.go
+++ b/cloud/shepherd/manager/fake_ssh_client.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/initializer.go b/cloud/shepherd/manager/initializer.go
index 1961fe2..f4495e8 100644
--- a/cloud/shepherd/manager/initializer.go
+++ b/cloud/shepherd/manager/initializer.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/initializer_test.go b/cloud/shepherd/manager/initializer_test.go
index 9545b5f..3c95527 100644
--- a/cloud/shepherd/manager/initializer_test.go
+++ b/cloud/shepherd/manager/initializer_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/manager.go b/cloud/shepherd/manager/manager.go
index 3ae7854..ae8115e 100644
--- a/cloud/shepherd/manager/manager.go
+++ b/cloud/shepherd/manager/manager.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // Package manager, itself a part of BMaaS project, provides implementation
 // governing Equinix bare metal server lifecycle according to conditions set by
 // Bare Metal Database (BMDB).
diff --git a/cloud/shepherd/manager/provider_test.go b/cloud/shepherd/manager/provider_test.go
index 3f6b139..003fd5e 100644
--- a/cloud/shepherd/manager/provider_test.go
+++ b/cloud/shepherd/manager/provider_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/provisioner.go b/cloud/shepherd/manager/provisioner.go
index e777e23..e13c63e 100644
--- a/cloud/shepherd/manager/provisioner.go
+++ b/cloud/shepherd/manager/provisioner.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/provisioner_test.go b/cloud/shepherd/manager/provisioner_test.go
index aea7717..eba178c 100644
--- a/cloud/shepherd/manager/provisioner_test.go
+++ b/cloud/shepherd/manager/provisioner_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/recoverer.go b/cloud/shepherd/manager/recoverer.go
index a94700a..8925f17 100644
--- a/cloud/shepherd/manager/recoverer.go
+++ b/cloud/shepherd/manager/recoverer.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/ssh_key_signer.go b/cloud/shepherd/manager/ssh_key_signer.go
index 7a8d08a..b28b0b5 100644
--- a/cloud/shepherd/manager/ssh_key_signer.go
+++ b/cloud/shepherd/manager/ssh_key_signer.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package manager
 
 import (
diff --git a/cloud/shepherd/manager/test_agent/main.go b/cloud/shepherd/manager/test_agent/main.go
index 8f29c30..98daf1b 100644
--- a/cloud/shepherd/manager/test_agent/main.go
+++ b/cloud/shepherd/manager/test_agent/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 // test_agent is used by the Equinix Metal Manager test code. Its only role
 // is to ensure successful delivery of the BMaaS agent executable to the test
 // hosts, together with its subsequent execution.
diff --git a/cloud/shepherd/mini/main.go b/cloud/shepherd/mini/main.go
index a5fb799..75a5005 100644
--- a/cloud/shepherd/mini/main.go
+++ b/cloud/shepherd/mini/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/mini/provider.go b/cloud/shepherd/mini/provider.go
index eb6fc08..1ee55c4 100644
--- a/cloud/shepherd/mini/provider.go
+++ b/cloud/shepherd/mini/provider.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/mini/ssh.go b/cloud/shepherd/mini/ssh.go
index bf2e996..dceafc4 100644
--- a/cloud/shepherd/mini/ssh.go
+++ b/cloud/shepherd/mini/ssh.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/fakequinix_test.go b/cloud/shepherd/provider/equinix/fakequinix_test.go
index 62892cc..aa0b234 100644
--- a/cloud/shepherd/provider/equinix/fakequinix_test.go
+++ b/cloud/shepherd/provider/equinix/fakequinix_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/initializer_test.go b/cloud/shepherd/provider/equinix/initializer_test.go
index 767ee29..587b70a 100644
--- a/cloud/shepherd/provider/equinix/initializer_test.go
+++ b/cloud/shepherd/provider/equinix/initializer_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/main.go b/cloud/shepherd/provider/equinix/main.go
index b47c454..1322039 100644
--- a/cloud/shepherd/provider/equinix/main.go
+++ b/cloud/shepherd/provider/equinix/main.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/provider.go b/cloud/shepherd/provider/equinix/provider.go
index 1752349..16dedf0 100644
--- a/cloud/shepherd/provider/equinix/provider.go
+++ b/cloud/shepherd/provider/equinix/provider.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/provider_config.go b/cloud/shepherd/provider/equinix/provider_config.go
index b54488f..146b010 100644
--- a/cloud/shepherd/provider/equinix/provider_config.go
+++ b/cloud/shepherd/provider/equinix/provider_config.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/provisioner_test.go b/cloud/shepherd/provider/equinix/provisioner_test.go
index b57546a..6a5b0c6 100644
--- a/cloud/shepherd/provider/equinix/provisioner_test.go
+++ b/cloud/shepherd/provider/equinix/provisioner_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/recoverer_test.go b/cloud/shepherd/provider/equinix/recoverer_test.go
index 109c375..6d1447f 100644
--- a/cloud/shepherd/provider/equinix/recoverer_test.go
+++ b/cloud/shepherd/provider/equinix/recoverer_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/updater.go b/cloud/shepherd/provider/equinix/updater.go
index 15b218b..5b6e089 100644
--- a/cloud/shepherd/provider/equinix/updater.go
+++ b/cloud/shepherd/provider/equinix/updater.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/provider/equinix/updater_test.go b/cloud/shepherd/provider/equinix/updater_test.go
index e400690..ed3da7a 100644
--- a/cloud/shepherd/provider/equinix/updater_test.go
+++ b/cloud/shepherd/provider/equinix/updater_test.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package main
 
 import (
diff --git a/cloud/shepherd/shepherd.go b/cloud/shepherd/shepherd.go
index 2c2a655..aeaab46 100644
--- a/cloud/shepherd/shepherd.go
+++ b/cloud/shepherd/shepherd.go
@@ -1,3 +1,6 @@
+// Copyright The Monogon Project Authors.
+// SPDX-License-Identifier: Apache-2.0
+
 package shepherd
 
 import (