Optional Additional Setup
Profiles can specify 'setup_script' to do additional things. If additional files/dirs are required, a 'setup_copy' map will copy them to the build instance so that 'setup_script' can use/install them. TBD: docs.
This commit is contained in:
parent
d765bd4ab7
commit
d593de3833
@ -69,8 +69,8 @@ builders = [
|
||||
provisioners = [
|
||||
{
|
||||
type = "file"
|
||||
source = "../scripts/nvme-ebs-links"
|
||||
destination = "/tmp/nvme-ebs-links"
|
||||
source = "./profile/{{user `profile`}}/{{user `profile_build`}}/setup-ami.d"
|
||||
destination = "/tmp/setup-ami.d"
|
||||
}
|
||||
{
|
||||
type = "shell"
|
||||
|
@ -513,16 +513,35 @@ class ConfigBuilder:
|
||||
profile = os.path.splitext(os.path.split(file)[-1])[0]
|
||||
self.build_profile(profile)
|
||||
|
||||
def rel_symlink(self, src_path, dest_dir, dest):
|
||||
os.symlink(
|
||||
os.path.relpath(src_path, dest_dir),
|
||||
os.path.join(dest_dir, dest))
|
||||
|
||||
def build_profile(self, profile):
|
||||
build_config = pyhocon.ConfigFactory.parse_file(
|
||||
os.path.join(self.config_path, f"{profile}.conf"))
|
||||
|
||||
for build, cfg in build_config["BUILDS"].items():
|
||||
build_dir = os.path.join(self.out_dir, profile, build)
|
||||
setup_dir = os.path.join(build_dir, "setup-ami.d")
|
||||
|
||||
# Always start fresh
|
||||
shutil.rmtree(build_dir, ignore_errors=True)
|
||||
os.makedirs(build_dir)
|
||||
os.makedirs(setup_dir)
|
||||
|
||||
# symlink nvme script
|
||||
self.rel_symlink("scripts/nvme-ebs-links", setup_dir, "nvme-ebs-links")
|
||||
|
||||
# symlink additional setup_script
|
||||
if "setup_script" in cfg.keys():
|
||||
self.rel_symlink(cfg["setup_script"], setup_dir, "setup_script")
|
||||
del cfg["setup_script"]
|
||||
|
||||
if "setup_copy" in cfg.keys():
|
||||
for dst, src in cfg["setup_copy"].items():
|
||||
self.rel_symlink(src, setup_dir, dst)
|
||||
del cfg["setup_copy"]
|
||||
|
||||
cfg["profile"] = profile
|
||||
cfg["profile_build"] = build
|
||||
|
@ -154,7 +154,7 @@ install_core_packages() {
|
||||
}
|
||||
|
||||
setup_mdev() {
|
||||
cp /tmp/nvme-ebs-links "$TARGET/lib/mdev"
|
||||
cp /tmp/setup-ami.d/nvme-ebs-links "$TARGET/lib/mdev"
|
||||
|
||||
# insert nvme ebs mdev configs just above "# fallback" comment
|
||||
sed -n -i \
|
||||
@ -288,6 +288,19 @@ configure_ntp() {
|
||||
-i "$TARGET/etc/chrony/chrony.conf"
|
||||
}
|
||||
|
||||
setup_script() {
|
||||
if [ -f /tmp/setup-ami.d/setup_script ]; then
|
||||
einfo "Executing additional setup script"
|
||||
(
|
||||
cd /tmp/setup-ami.d
|
||||
chmod u+x ./setup_script
|
||||
TARGET="$TARGET" ./setup_script
|
||||
)
|
||||
else
|
||||
einfo "No additional setup script"
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
# Sweep cruft out of the image that doesn't need to ship or will be
|
||||
# re-generated when the image boots
|
||||
@ -344,6 +357,8 @@ main() {
|
||||
create_alpine_user
|
||||
configure_ntp
|
||||
|
||||
setup_script
|
||||
|
||||
einfo "All done, cleaning up"
|
||||
cleanup
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user