Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add options to LXC builder for influencing for how containers are bui…
…lt and started via - create_options: a list of options passed to lxc-create - start_options: a list of options passed to lxc-start - attach_options: a list of options passed to lxc-attach Also extended existing LXC builder BATS tests to exercise the new builder options, and added website docs.
- Loading branch information
Matt Schreiber
authored and
Matt Schreiber
committed
Oct 31, 2017
1 parent
fe4d464
commit 1f2135f
Showing
8 changed files
with
131 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,106 @@ | ||
#!/usr/bin/env bats | ||
# | ||
# This tests the lxc builder. The teardown function will | ||
# delete any images in the output-lxc-* folders. | ||
# This tests the lxc builder by creating minimal containers and checking that | ||
# custom lxc container configuration files are successfully applied. The | ||
# teardown function will delete any images in the output-lxc-* folders along | ||
# with the auto-generated lxc container configuration files and hook scripts. | ||
|
||
#load test_helper | ||
#fixtures builder-lxc | ||
FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures/builder-lxc" | ||
|
||
have_command() { | ||
command -v "$1" >/dev/null 2>&1 | ||
} | ||
|
||
# Required parameters | ||
command -v lxc-create >/dev/null 2>&1 || { | ||
have_command lxc-create || { | ||
echo "'lxc-create' must be installed via the lxc (or lxc1 for ubuntu >=16.04) package" >&2 | ||
exit 1 | ||
} | ||
|
||
DESTROY_HOOK_SCRIPT=$FIXTURE_ROOT/destroy-hook.sh | ||
DESTROY_HOOK_LOG=$FIXTURE_ROOT/destroy-hook.log | ||
printf > "$DESTROY_HOOK_SCRIPT" ' | ||
echo "$LXC_NAME" > "%s" | ||
' "$DESTROY_HOOK_LOG" | ||
chmod +x "$DESTROY_HOOK_SCRIPT" | ||
|
||
INIT_CONFIG=$FIXTURE_ROOT/lxc.custom.conf | ||
printf > "$INIT_CONFIG" ' | ||
lxc.hook.destroy = %s | ||
' "$DESTROY_HOOK_SCRIPT" | ||
|
||
teardown() { | ||
for f in "$INIT_CONFIG" "$DESTROY_HOOK_SCRIPT" "$DESTROY_HOOK_LOG"; do | ||
[ -e "$f" ] && rm -f "$f" | ||
done | ||
|
||
rm -rf output-lxc-* | ||
} | ||
|
||
@test "lxc: build centos minimal.json" { | ||
run packer build -var template_name=centos $FIXTURE_ROOT/minimal.json | ||
[ "$status" -eq 0 ] | ||
[ -f output-lxc-centos/rootfs.tar.gz ] | ||
[ -f output-lxc-centos/lxc-config ] | ||
assert_build() { | ||
local template_name="$1" | ||
shift | ||
|
||
local build_status=0 | ||
|
||
run packer build -var template_name="$template_name" "$@" | ||
|
||
[ "$status" -eq 0 ] || { | ||
echo "${template_name} build exited badly: $status" >&2 | ||
echo "$output" >&2 | ||
build_status="$status" | ||
} | ||
|
||
for expected in "output-lxc-${template_name}"/{rootfs.tar.gz,lxc-config}; do | ||
[ -f "$expected" ] || { | ||
echo "missing expected artifact '${expected}'" >&2 | ||
build_status=1 | ||
} | ||
done | ||
|
||
return $build_status | ||
} | ||
|
||
assert_container_name() { | ||
local container_name="$1" | ||
|
||
[ -f "$DESTROY_HOOK_LOG" ] || { | ||
echo "missing expected lxc.hook.destroy logfile '$DESTROY_HOOK_LOG'" | ||
return 1 | ||
} | ||
|
||
read -r lxc_name < "$DESTROY_HOOK_LOG" | ||
|
||
[ "$lxc_name" = "$container_name" ] | ||
} | ||
|
||
@test "lxc: build centos minimal.json" { | ||
have_command yum || skip "'yum' must be installed to build centos containers" | ||
local container_name=packer-lxc-centos | ||
assert_build centos -var init_config="$INIT_CONFIG" \ | ||
-var container_name="$container_name" \ | ||
$FIXTURE_ROOT/minimal.json | ||
assert_container_name "$container_name" | ||
} | ||
|
||
@test "lxc: build trusty minimal.json" { | ||
run packer build -var template_name=ubuntu -var template_parameters="SUITE=trusty" $FIXTURE_ROOT/minimal.json | ||
[ "$status" -eq 0 ] | ||
[ -f output-lxc-ubuntu/rootfs.tar.gz ] | ||
[ -f output-lxc-ubuntu/lxc-config ] | ||
have_command debootstrap || skip "'debootstrap' must be installed to build ubuntu containers" | ||
local container_name=packer-lxc-ubuntu | ||
assert_build ubuntu -var init_config="$INIT_CONFIG" \ | ||
-var container_name="$container_name" \ | ||
-var template_parameters="SUITE=trusty" \ | ||
$FIXTURE_ROOT/minimal.json | ||
assert_container_name "$container_name" | ||
} | ||
|
||
@test "lxc: build debian minimal.json" { | ||
run packer build -var template_name=debian -var template_parameters="SUITE=jessie" $FIXTURE_ROOT/minimal.json | ||
[ "$status" -eq 0 ] | ||
[ -f output-lxc-debian/rootfs.tar.gz ] | ||
[ -f output-lxc-debian/lxc-config ] | ||
have_command debootstrap || skip "'debootstrap' must be installed to build debian containers" | ||
local container_name=packer-lxc-debian | ||
assert_build debian -var init_config="$INIT_CONFIG" \ | ||
-var container_name="$container_name" \ | ||
-var template_parameters="SUITE=jessie" \ | ||
$FIXTURE_ROOT/minimal.json | ||
assert_container_name "$container_name" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters