Update credentials.yml documentation and handling

Changes include:

 * Update Makefile to use credentials.yml when it exists
 * Add details on the use of the credentials.yml file to README.md.
 * Update credentials.template comments
This commit is contained in:
James Laska 2014-03-18 10:15:02 -04:00
parent cf0a0ca3d2
commit 750d9e2d59
3 changed files with 48 additions and 20 deletions

View file

@ -6,20 +6,28 @@ ifndef CLOUD_RESOURCE_PREFIX
CLOUD_RESOURCE_PREFIX := $(shell python -c "import string,random; print 'ansible-testing-' + ''.join(random.choice(string.ascii_letters + string.digits) for _ in xrange(8));") CLOUD_RESOURCE_PREFIX := $(shell python -c "import string,random; print 'ansible-testing-' + ''.join(random.choice(string.ascii_letters + string.digits) for _ in xrange(8));")
endif endif
CREDENTIALS_FILE = credentials.yml
# If credentials.yml exists, use it
ifneq ("$(wildcard $(CREDENTIALS_FILE))","")
CREDENTIALS_ARG = -e @$(CREDENTIALS_FILE)
else
CREDENTIALS_ARG =
endif
all: non_destructive destructive check_mode test_hash all: non_destructive destructive check_mode test_hash
non_destructive: non_destructive:
ansible-playbook non_destructive.yml -i $(INVENTORY) -e @$(VARS_FILE) -v $(TEST_FLAGS) ansible-playbook non_destructive.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)
destructive: destructive:
ansible-playbook destructive.yml -i $(INVENTORY) -e @$(VARS_FILE) -v $(TEST_FLAGS) ansible-playbook destructive.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)
check_mode: check_mode:
ansible-playbook check_mode.yml -i $(INVENTORY) -e @$(VARS_FILE) -v --check $(TEST_FLAGS) ansible-playbook check_mode.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v --check $(TEST_FLAGS)
test_hash: test_hash:
ANSIBLE_HASH_BEHAVIOUR=replace ansible-playbook test_hash.yml -i $(INVENTORY) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}' ANSIBLE_HASH_BEHAVIOUR=replace ansible-playbook test_hash.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}'
ANSIBLE_HASH_BEHAVIOUR=merge ansible-playbook test_hash.yml -i $(INVENTORY) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}' ANSIBLE_HASH_BEHAVIOUR=merge ansible-playbook test_hash.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}'
cloud: amazon rackspace cloud: amazon rackspace
@ -32,18 +40,18 @@ rackspace_cleanup:
@echo "FIXME - cleanup_rax.py not yet implemented" @echo "FIXME - cleanup_rax.py not yet implemented"
@# python cleanup_rax.py -y --match="^$(CLOUD_RESOURCE_PREFIX)" @# python cleanup_rax.py -y --match="^$(CLOUD_RESOURCE_PREFIX)"
credentials.yml: $(CREDENTIALS_FILE):
@echo "No credentials.yml file found. A file named 'credentials.yml' is needed to provide credentials needed to run cloud tests. See sample 'credentials.template' file." @echo "No credentials file found. A file named '$(CREDENTIALS_FILE)' is needed to provide credentials needed to run cloud tests. See sample 'credentials.template' file."
@exit 1 @exit 1
amazon: credentials.yml amazon: $(CREDENTIALS_FILE)
ansible-playbook amazon.yml -i $(INVENTORY) -e @$(VARS_FILE) -e @credentials.yml -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \ ansible-playbook amazon.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \
RC=$$? ; \ RC=$$? ; \
CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make amazon_cleanup ; \ CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make amazon_cleanup ; \
exit $$RC; exit $$RC;
rackspace: credentials.yml rackspace: $(CREDENTIALS_FILE)
ansible-playbook rackspace.yml -i $(INVENTORY) -e @$(VARS_FILE) -e @credentials.yml -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \ ansible-playbook rackspace.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -e "resource_prefix=$(CLOUD_RESOURCE_PREFIX)" -v $(TEST_FLAGS) ; \
RC=$$? ; \ RC=$$? ; \
CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make rackspace_cleanup ; \ CLOUD_RESOURCE_PREFIX="$(CLOUD_RESOURCE_PREFIX)" make rackspace_cleanup ; \
exit $$RC; exit $$RC;

View file

@ -5,15 +5,17 @@ The ansible integration system.
Tests for playbooks, by playbooks. Tests for playbooks, by playbooks.
Some tests may require cloud credentials. Some tests may require credentials. Credentials may be specified with `credentials.yml`.
Tests should be run as root. Tests should be run as root.
Configuration Configuration
============= =============
Making your own version of integration_config.yml can allow for setting some tunable parameters to help run Making your own version of `integration_config.yml` can allow for setting some
the tests better in your environment. tunable parameters to help run the tests better in your environment. Some
tests (e.g. cloud) will only run when access credentials are provided. For
more information about supported credentials, refer to `credentials.template`.
Prerequisites Prerequisites
============= =============
@ -41,12 +43,30 @@ Destructive Tests
These tests are allowed to install and remove some trivial packages. You will likely want to devote these These tests are allowed to install and remove some trivial packages. You will likely want to devote these
to a virtual environment. They won't reformat your filesystem, however :) to a virtual environment. They won't reformat your filesystem, however :)
make destructive make destructive
Cloud Tests Cloud Tests
=========== ===========
Details pending, but these require cloud credentials. These are not 'tests run in the cloud' so much as tests Cloud tests exercise capabilities of cloud modules (e.g. ec2_key). These are
that leverage the cloud modules and are organized by cloud provider. not 'tests run in the cloud' so much as tests that leverage the cloud modules
and are organized by cloud provider.
In order to run cloud tests, you must provide access credentials in a file
named `credentials.yml`. A sample credentials file named
`credentials.template` is available for syntax help.
Provide cloud credentials:
cp credentials.template credentials.yml
${EDITOR:-vi} credentials.yml
Run the tests:
make cloud
*WARNING* running cloud integration tests will create and destroy cloud
resources. Running these tests may result in additional fees associated with
your cloud account. Care is taken to ensure that created resources are
removed. However, it is advisable to inspect your AWS console to ensure no
unexpected resources are running.

View file

@ -1,7 +1,7 @@
--- ---
# AWS Credentials # AWS Credentials
ec2_access_key: FIXME ec2_access_key:
ec2_secret_key: FIXME ec2_secret_key:
# GITHUB Credentials # GITHUB SSH private key - a path to a SSH private key for use with github.com
github_ssh_private_key: "{{ lookup('env','HOME') }}/.ssh/id_rsa" github_ssh_private_key: "{{ lookup('env','HOME') }}/.ssh/id_rsa"