From d745c579f4a6ed18512ca4964d7e893a27d2ee19 Mon Sep 17 00:00:00 2001 From: "Billie H. Cleek" Date: Fri, 29 Jul 2016 23:12:41 -0700 Subject: [PATCH] add blackbox tests for ansible provisioner Add bats tests for the ansible provisioner. The tests exercise all options and the minimal set of options of the provisioner. Fix the bats tests for the googlecompute builder. --- test/builder_googlecompute.bats | 12 ++-- .../builder-googlecompute/minimal.json | 2 - .../provisioner-ansible/all_options.json | 39 ++++++++++++ .../fixtures/provisioner-ansible/dir/file.txt | 1 + .../provisioner-ansible/largish-file.txt | Bin 0 -> 66560 bytes .../fixtures/provisioner-ansible/minimal.json | 20 ++++++ .../fixtures/provisioner-ansible/playbook.yml | 13 ++++ test/provisioner_ansible.bats | 58 ++++++++++++++++++ 8 files changed, 136 insertions(+), 9 deletions(-) create mode 100644 test/fixtures/provisioner-ansible/all_options.json create mode 100644 test/fixtures/provisioner-ansible/dir/file.txt create mode 100644 test/fixtures/provisioner-ansible/largish-file.txt create mode 100644 test/fixtures/provisioner-ansible/minimal.json create mode 100644 test/fixtures/provisioner-ansible/playbook.yml create mode 100755 test/provisioner_ansible.bats diff --git a/test/builder_googlecompute.bats b/test/builder_googlecompute.bats index d7062a9a8..1051bb99a 100755 --- a/test/builder_googlecompute.bats +++ b/test/builder_googlecompute.bats @@ -7,28 +7,26 @@ load test_helper fixtures builder-googlecompute # Required parameters -: ${GC_BUCKET_NAME:?} : ${GC_ACCOUNT_FILE:?} : ${GC_PROJECT_ID:?} -command -v gcutil >/dev/null 2>&1 || { - echo "'gcutil' must be installed" >&2 +command -v gcloud >/dev/null 2>&1 || { + echo "'gcloud' must be installed" >&2 exit 1 } -USER_VARS="-var bucket_name=${GC_BUCKET_NAME}" 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() { - gcutil --format=names --project=${GC_PROJECT_ID} listimages \ + gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \ | grep $1 | wc -l } teardown() { - gcutil --format=names --project=${GC_PROJECT_ID} listimages \ + gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \ | grep packerbats \ - | xargs -n1 gcutil --project=${GC_PROJECT_ID} deleteimage --force + | xargs -n1 gcloud compute --project=${GC_PROJECT_ID} images delete } @test "googlecompute: build minimal.json" { diff --git a/test/fixtures/builder-googlecompute/minimal.json b/test/fixtures/builder-googlecompute/minimal.json index 218e98b9a..95dd99254 100644 --- a/test/fixtures/builder-googlecompute/minimal.json +++ b/test/fixtures/builder-googlecompute/minimal.json @@ -1,13 +1,11 @@ { "variables": { - "bucket_name": null, "account_file": null, "project_id": null }, "builders": [{ "type": "googlecompute", - "bucket_name": "{{user `bucket_name`}}", "account_file": "{{user `account_file`}}", "project_id": "{{user `project_id`}}", diff --git a/test/fixtures/provisioner-ansible/all_options.json b/test/fixtures/provisioner-ansible/all_options.json new file mode 100644 index 000000000..4628c4709 --- /dev/null +++ b/test/fixtures/provisioner-ansible/all_options.json @@ -0,0 +1,39 @@ +{ + "variables": {}, + "provisioners": [ + { + "type": "shell-local", + "command": "echo 'TODO(bc): write the public key to $HOME/.ssh/known_hosts and stop using ANSIBLE_HOST_KEY_CHECKING=False'" + }, { + "type": "shell", + "inline": [ + "apt-get update", + "apt-get -y install python openssh-sftp-server", + "ls -l /usr/lib" + ] + }, { + "type": "ansible", + "playbook_file": "./playbook.yml", + "extra_arguments": [ + "-vvvv", "--private-key", "ansible-test-id" + ], + "sftp_command": "/usr/lib/sftp-server -e -l INFO", + "ansible_env_vars": ["PACKER_ANSIBLE_TEST", "1", "ANSIBLE_HOST_KEY_CHECKING", "False"], + "groups": ["PACKER_TEST"], + "empty_groups": ["PACKER_EMPTY_GROUP"], + "host_alias": "packer-test", + "user": "packer", + "local_port": 2222, + "ssh_host_key_file": "ansible-server.key", + "ssh_authorized_key_file": "ansible-test-id.pub" + } + ], + "builders": [{ + "type": "googlecompute", + "account_file": "{{user `account_file`}}", + "project_id": "{{user `project_id`}}", + "image_name": "packerbats-alloptions-{{timestamp}}", + "source_image": "debian-7-wheezy-v20141108", + "zone": "us-central1-a" + }] +} diff --git a/test/fixtures/provisioner-ansible/dir/file.txt b/test/fixtures/provisioner-ansible/dir/file.txt new file mode 100644 index 000000000..0637880d7 --- /dev/null +++ b/test/fixtures/provisioner-ansible/dir/file.txt @@ -0,0 +1 @@ +This is a file diff --git a/test/fixtures/provisioner-ansible/largish-file.txt b/test/fixtures/provisioner-ansible/largish-file.txt new file mode 100644 index 0000000000000000000000000000000000000000..4df7b06689cf2f0b2cc1f51bfe08a15404ed8078 GIT binary patch literal 66560 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/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 minimal.json" { + cd $FIXTURE_ROOT + run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json + [ "$status" -eq 0 ] + [ "$(gc_has_image "packerbats-minimal")" -eq 1 ] +} + +@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 ] +}