cloud-init: refactor cloud-init and move to cloud-init-config

refactor cloud-init across different boards and make it under
cloud-init-config

BUG=b/175418043
TEST=presubmit
RELEASE_NOTE=None

Change-Id: I2032e804e14342b5c37f7f33804d5763267504cc
Reviewed-on: https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/9800
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
diff --git a/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0-r3.ebuild b/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0-r3.ebuild
deleted file mode 120000
index 1e51c11..0000000
--- a/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-cloud-init-config-lakitu-1.0.0.ebuild
\ No newline at end of file
diff --git a/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0.ebuild b/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0.ebuild
deleted file mode 100644
index 5ef8a14..0000000
--- a/project-lakitu/app-emulation/cloud-init-config-lakitu/cloud-init-config-lakitu-1.0.0.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-EAPI=6
-
-DESCRIPTION="Configuration of cloud-init for lakitu"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="app-emulation/cloud-init"
-RDEPEND="
-	${DEPEND}
-	!<app-emulation/cloud-init-18.5-r4
-"
-
-S=${WORKDIR}
-
-src_install() {
-	insinto /etc/cloud/cloud.cfg.d
-	doins "${FILESDIR}/10-disable_ssh_publish_hostkeys.cfg"
-	doins "${FILESDIR}/91-datasource-gce.cfg"
-}
-
diff --git a/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0-r1.ebuild b/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0-r1.ebuild
new file mode 120000
index 0000000..803172c
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0-r1.ebuild
@@ -0,0 +1 @@
+cloud-init-config-1.0.0.ebuild
\ No newline at end of file
diff --git a/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0.ebuild b/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0.ebuild
new file mode 100644
index 0000000..8629878
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/cloud-init-config-1.0.0.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+EAPI=6
+
+DESCRIPTION="Configuration of cloud-init for lakitu"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="platform_aws platform_azure platform_gcp platform_vsphere"
+
+DEPEND="app-emulation/cloud-init"
+RDEPEND="
+	${DEPEND}
+	!<app-emulation/cloud-init-18.5-r4
+"
+
+S=${WORKDIR}
+
+src_install() {
+	insinto /etc/cloud/cloud.cfg.d
+	if use platform_gcp; then
+		doins "${FILESDIR}/gcp/10-disable_ssh_publish_hostkeys.cfg"
+		doins "${FILESDIR}/gcp/91-datasource-gce.cfg"
+	elif use platform_aws; then
+		doins "${FILESDIR}"/aws/90-default-user.cfg
+		doins "${FILESDIR}"/aws/91-datasource-ec2.cfg
+	elif use platform_azure; then
+		doins "${FILESDIR}"/azure/10_hostname.cfg
+		doins "${FILESDIR}"/azure/90-default-user.cfg
+		doins "${FILESDIR}"/azure/91-datasource-azure.cfg
+	elif use platform_vsphere; then
+		doins "${FILESDIR}"/vsphere/10_hostname.cfg
+		doins "${FILESDIR}"/vsphere/90-default-user.cfg
+		doins "${FILESDIR}"/vsphere/91-datasource-vmware-ovf.cfg
+	fi
+}
+
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/aws/90-default-user.cfg b/project-lakitu/app-emulation/cloud-init-config/files/aws/90-default-user.cfg
new file mode 100644
index 0000000..9d560e1
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/aws/90-default-user.cfg
@@ -0,0 +1,15 @@
+# A set of users which may be applied and/or used by various modules
+# when a 'default' entry is found it will reference the 'default_user'
+# from the distro configuration specified below
+users:
+   - default
+
+system_info:
+   # Default user name + that default users groups (if added/used)
+   default_user:
+      name: cos
+      lock_passwd: True
+      gecos: COS Cloud user
+      groups: [wheel, adm, systemd-journal]
+      sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+      shell: /bin/bash
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/aws/91-datasource-ec2.cfg b/project-lakitu/app-emulation/cloud-init-config/files/aws/91-datasource-ec2.cfg
new file mode 100644
index 0000000..6e4bc1b
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/aws/91-datasource-ec2.cfg
@@ -0,0 +1 @@
+datasource_list: [ Ec2, NoCloud, None ]
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/azure/10_hostname.cfg b/project-lakitu/app-emulation/cloud-init-config/files/azure/10_hostname.cfg
new file mode 100644
index 0000000..27a92fd
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/azure/10_hostname.cfg
@@ -0,0 +1,2 @@
+# Enable setting hostname via cloud-init.
+preserve_hostname: false
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/azure/90-default-user.cfg b/project-lakitu/app-emulation/cloud-init-config/files/azure/90-default-user.cfg
new file mode 100644
index 0000000..9d560e1
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/azure/90-default-user.cfg
@@ -0,0 +1,15 @@
+# A set of users which may be applied and/or used by various modules
+# when a 'default' entry is found it will reference the 'default_user'
+# from the distro configuration specified below
+users:
+   - default
+
+system_info:
+   # Default user name + that default users groups (if added/used)
+   default_user:
+      name: cos
+      lock_passwd: True
+      gecos: COS Cloud user
+      groups: [wheel, adm, systemd-journal]
+      sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+      shell: /bin/bash
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/azure/91-datasource-azure.cfg b/project-lakitu/app-emulation/cloud-init-config/files/azure/91-datasource-azure.cfg
new file mode 100644
index 0000000..2748fbf
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/azure/91-datasource-azure.cfg
@@ -0,0 +1,6 @@
+datasource_list: [ Ec2, NoCloud, None ]
+datasource:
+  Azure:
+    set_hostname: False
+    agent_command: __builtin__
+
diff --git a/project-lakitu/app-emulation/cloud-init-config-lakitu/files/10-disable_ssh_publish_hostkeys.cfg b/project-lakitu/app-emulation/cloud-init-config/files/gcp/10-disable_ssh_publish_hostkeys.cfg
similarity index 100%
rename from project-lakitu/app-emulation/cloud-init-config-lakitu/files/10-disable_ssh_publish_hostkeys.cfg
rename to project-lakitu/app-emulation/cloud-init-config/files/gcp/10-disable_ssh_publish_hostkeys.cfg
diff --git a/project-lakitu/app-emulation/cloud-init-config-lakitu/files/91-datasource-gce.cfg b/project-lakitu/app-emulation/cloud-init-config/files/gcp/91-datasource-gce.cfg
similarity index 100%
rename from project-lakitu/app-emulation/cloud-init-config-lakitu/files/91-datasource-gce.cfg
rename to project-lakitu/app-emulation/cloud-init-config/files/gcp/91-datasource-gce.cfg
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/vsphere/10_hostname.cfg b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/10_hostname.cfg
new file mode 100644
index 0000000..27a92fd
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/10_hostname.cfg
@@ -0,0 +1,2 @@
+# Enable setting hostname via cloud-init.
+preserve_hostname: false
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/vsphere/90-default-user.cfg b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/90-default-user.cfg
new file mode 100644
index 0000000..9d560e1
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/90-default-user.cfg
@@ -0,0 +1,15 @@
+# A set of users which may be applied and/or used by various modules
+# when a 'default' entry is found it will reference the 'default_user'
+# from the distro configuration specified below
+users:
+   - default
+
+system_info:
+   # Default user name + that default users groups (if added/used)
+   default_user:
+      name: cos
+      lock_passwd: True
+      gecos: COS Cloud user
+      groups: [wheel, adm, systemd-journal]
+      sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+      shell: /bin/bash
diff --git a/project-lakitu/app-emulation/cloud-init-config/files/vsphere/91-datasource-vmware-ovf.cfg b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/91-datasource-vmware-ovf.cfg
new file mode 100644
index 0000000..2d2cea7
--- /dev/null
+++ b/project-lakitu/app-emulation/cloud-init-config/files/vsphere/91-datasource-vmware-ovf.cfg
@@ -0,0 +1 @@
+datasource_list: [ OVF, NoCloud, None ]
diff --git a/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5-r1.ebuild b/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5-r1.ebuild
deleted file mode 120000
index 86907df..0000000
--- a/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-cloud-init-config-1.5.ebuild
\ No newline at end of file
diff --git a/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5.ebuild b/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5.ebuild
deleted file mode 100644
index 476be27..0000000
--- a/project-lakitu/virtual/cloud-init-config/cloud-init-config-1.5.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-EAPI=6
-
-DESCRIPTION="Virtual package for environment specific cloud-init configuration."
-HOMEPAGE=""
-SRC_URI=""
-
-LICENSE=""
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND=""
-RDEPEND="${DEPEND}
-	app-emulation/cloud-init-config-lakitu
-"
diff --git a/project-lakitu/virtual/target-lakitu/target-lakitu-1.5.ebuild b/project-lakitu/virtual/target-lakitu/target-lakitu-1.5.ebuild
index 960e53c..9577ef3 100644
--- a/project-lakitu/virtual/target-lakitu/target-lakitu-1.5.ebuild
+++ b/project-lakitu/virtual/target-lakitu/target-lakitu-1.5.ebuild
@@ -87,7 +87,7 @@
 	criu? ( sys-process/criu )
 	virtual/chromeos-bsp
 	virtual/chromeos-firewall
-	virtual/cloud-init-config
+	app-emulation/cloud-init-config
 	virtual/implicit-system
 	virtual/lakitu-network-init
 	virtual/linux-sources