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 = [
|
provisioners = [
|
||||||
{
|
{
|
||||||
type = "file"
|
type = "file"
|
||||||
source = "../scripts/nvme-ebs-links"
|
source = "./profile/{{user `profile`}}/{{user `profile_build`}}/setup-ami.d"
|
||||||
destination = "/tmp/nvme-ebs-links"
|
destination = "/tmp/setup-ami.d"
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "shell"
|
type = "shell"
|
||||||
|
@ -513,16 +513,35 @@ class ConfigBuilder:
|
|||||||
profile = os.path.splitext(os.path.split(file)[-1])[0]
|
profile = os.path.splitext(os.path.split(file)[-1])[0]
|
||||||
self.build_profile(profile)
|
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):
|
def build_profile(self, profile):
|
||||||
build_config = pyhocon.ConfigFactory.parse_file(
|
build_config = pyhocon.ConfigFactory.parse_file(
|
||||||
os.path.join(self.config_path, f"{profile}.conf"))
|
os.path.join(self.config_path, f"{profile}.conf"))
|
||||||
|
|
||||||
for build, cfg in build_config["BUILDS"].items():
|
for build, cfg in build_config["BUILDS"].items():
|
||||||
build_dir = os.path.join(self.out_dir, profile, build)
|
build_dir = os.path.join(self.out_dir, profile, build)
|
||||||
|
setup_dir = os.path.join(build_dir, "setup-ami.d")
|
||||||
|
|
||||||
# Always start fresh
|
# Always start fresh
|
||||||
shutil.rmtree(build_dir, ignore_errors=True)
|
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"] = profile
|
||||||
cfg["profile_build"] = build
|
cfg["profile_build"] = build
|
||||||
|
@ -154,7 +154,7 @@ install_core_packages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setup_mdev() {
|
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
|
# insert nvme ebs mdev configs just above "# fallback" comment
|
||||||
sed -n -i \
|
sed -n -i \
|
||||||
@ -288,6 +288,19 @@ configure_ntp() {
|
|||||||
-i "$TARGET/etc/chrony/chrony.conf"
|
-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() {
|
cleanup() {
|
||||||
# Sweep cruft out of the image that doesn't need to ship or will be
|
# Sweep cruft out of the image that doesn't need to ship or will be
|
||||||
# re-generated when the image boots
|
# re-generated when the image boots
|
||||||
@ -344,6 +357,8 @@ main() {
|
|||||||
create_alpine_user
|
create_alpine_user
|
||||||
configure_ntp
|
configure_ntp
|
||||||
|
|
||||||
|
setup_script
|
||||||
|
|
||||||
einfo "All done, cleaning up"
|
einfo "All done, cleaning up"
|
||||||
cleanup
|
cleanup
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user