108 lines
3.5 KiB
Bash
Executable File
108 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bats
|
|
#
|
|
# This tests the ansible provisioner on Google Cloud Provider (i.e.
|
|
# googlecompute). The teardown function will delete any images with the text
|
|
# "packerbats" within the name.
|
|
|
|
load test_helper
|
|
fixtures provisioner-ansible
|
|
|
|
# Required parameters
|
|
: ${GC_ACCOUNT_FILE:?}
|
|
: ${GC_PROJECT_ID:?}
|
|
command -v gcloud >/dev/null 2>&1 || {
|
|
echo "'gcloud' must be installed" >&2
|
|
exit 1
|
|
}
|
|
|
|
USER_VARS="${USER_VARS} -var account_file=${GC_ACCOUNT_FILE}"
|
|
USER_VARS="${USER_VARS} -var project_id=${GC_PROJECT_ID}"
|
|
|
|
# This tests if GCE has an image that contains the given parameter.
|
|
gc_has_image() {
|
|
gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \
|
|
| grep $1 | wc -l
|
|
}
|
|
|
|
setup(){
|
|
rm -f $FIXTURE_ROOT/ansible-test-id
|
|
rm -f $FIXTURE_ROOT/ansible-server.key
|
|
ssh-keygen -N "" -f $FIXTURE_ROOT/ansible-test-id
|
|
ssh-keygen -N "" -f $FIXTURE_ROOT/ansible-server.key
|
|
}
|
|
|
|
teardown() {
|
|
gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \
|
|
| grep packerbats \
|
|
| xargs -n1 gcloud compute --project=${GC_PROJECT_ID} images delete
|
|
|
|
rm -f $FIXTURE_ROOT/ansible-test-id
|
|
rm -f $FIXTURE_ROOT/ansible-test-id.pub
|
|
rm -f $FIXTURE_ROOT/ansible-server.key
|
|
rm -f $FIXTURE_ROOT/ansible-server.key.pub
|
|
rm -rf $FIXTURE_ROOT/fetched-dir
|
|
}
|
|
|
|
@test "ansible provisioner: build docker.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/docker.json
|
|
[ "$status" -eq 0 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
@test "ansible provisioner: build minimal.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-minimal")" -eq 1 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build all_options.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/all_options.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-alloptions")" -eq 1 ]
|
|
diff -r dir fetched-dir/packer-test/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build galaxy.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/galaxy.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-galaxy")" -eq 1 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build scp.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/scp.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-scp")" -eq 1 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build scp-to-sftp.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/scp-to-sftp.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-scp-to-sftp")" -eq 1 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build sftp.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/sftp.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-sftp")" -eq 1 ]
|
|
diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|
|
|
|
@test "ansible provisioner: build winrm.json" {
|
|
cd $FIXTURE_ROOT
|
|
run packer build ${USER_VARS} $FIXTURE_ROOT/winrm.json
|
|
[ "$status" -eq 0 ]
|
|
[ "$(gc_has_image "packerbats-winrm")" -eq 1 ]
|
|
echo "packer does not support downloading files from download, skipping verification"
|
|
#diff -r dir fetched-dir/default/tmp/remote-dir > /dev/null
|
|
}
|