Ansible role to manage refstack-client
f865af4563
refstack_result is used to register result of running refstack-client, however, it was used in 2 different tasks one of which was always skipped. There may happen a situation (when the latter task is skipped), the skipped task overrides the result of the refstack-client execution from the other task. The patch fixes that by using a different variable for each of the tasks running refstack-client. Change-Id: I6f524df674dfbb2d6b9372dce51f1e1aec8ed9be |
||
---|---|---|
defaults | ||
infrared_plugin | ||
playbooks | ||
tasks | ||
.ansible-lint | ||
.gitignore | ||
.gitreview | ||
.pre-commit-config.yaml | ||
.yamllint | ||
.zuul.yaml | ||
LICENSE | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
ansible-role-refstack-client
About
It's an ansible playbook for running refstack-client. It can be useful in automation where this role can be included in other playbooks. The role is importable to Infrared as an infrared plugin, so right after Infrared deploys an environment, this role can be executed to ensure the deployment is working by passing refstack tests.
Required Role Variables
Variable name | Required | Default | Type | Description |
---|---|---|---|---|
private_key_path | if upload_results is True | None | String | Results are uploaded to the corresponding account. |
source_admin_credentials | only if accounts_path not defined | None | String | File or command to be sourced for admin credentials which will be used for accounts.yaml generation. |
source_credentials | True | None | String | File or command to be sourced: keystonerc_demo/openrc demo demo. These creds will be used to run refstack tests. |
Optional Role Variables
Variable name | Required | Default | Type | Description |
---|---|---|---|---|
accounts_path | False | None | String | Path to a tempest accounts file which will be used in tempest.conf generation step. |
additional_tempestconf_params | False | None | String | Additional arguments to pass for discover-tempest-config tool. |
deployer_input | False | None | String | Pat to a deployer input file which will be used in tempest.conf generation step. |
dest_dir * | False | pwd | String | Local directory where the artifact files will be stored. |
download_artifacts | False | False | Bool | Whether artifacts should be downloaded to the host or not. They will be downloaded to dest_dir location. |
guideline | False | 2020.06 | String | Specific refstack guideline. |
private_key_path_src * | False | None | String | If defined, the key defined by the param is copied to the targeted machine to private_key_path location. |
refstack_client_source | False | ~/.refstack-client | String | Destination where refstack-client will be cloned only if the dir doesn't exist or it's empty, otherwise it will be used as is. |
tempestconf_source | False | None | String | A path to python-tempestconf's source. If not defined, refstack-client's default is applied. |
refstack_client_version | False | HEAD | String | Version of refstack-client cloned from git. |
server | False | https://refstack.openstack.org/api | String | Server url where the results will be uploaded to if upload_results is True. |
refstack_target_programs | False | ['platform', 'compute', 'object', 'dns', 'orchestration', 'shared_file_system'] | List | The tests within the specified target programs will be executed. |
tempest_account_concurrency | False | 3 | Int | A concurrency accounts.yaml file is generated with by tempest. |
tempest_config_path | False | None | String | Destination of tempest configuration file to be used for running refstack tests. |
tempest_tag | False | refstack-client's default | String | Tempest will be cloned and checkouted to this specific tag. |
test_list | False | None | String | A path or an URL to a test list text file containing specific test cases. |
upload_results | False | False | Bool | Whether results should be uploaded to the server or not. |
url_cirros_image | False | http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img | String | A path or a link to a cirros image. |
* it's a local path, the path on a machine, the playbook is executed from
Example
To run the role from the repository:
$ git clone https://opendev.org/x/ansible-role-refstack-client.git
$ cd ansible-role-refstack-client
$ mkdir roles && ln -s $(pwd) roles/ansible-role-refstack-client
Then create a playbook.yaml
:
---
- hosts: localhost
vars:
source_credentials: ~/overcloudrc
source_admin_credentials: ~/overcloudrc_admin
upload_results: True
private_key_path: ~/.ssh/id_rsa
roles:
- ansible-role-refstack-client
And run it:
$ ansible-playbook playbook.yaml
Usage with Infrared
Run the following steps to run the plugin:
- Install infrared and add ansible-role-refstack-client plugin by providing the url to this repo:
(infrared)$ ir plugin add https://opendev.org/x/ansible-role-refstack-client.git --src-path infrared_plugin
- You can verify that the plugin is imported by:
(infrared)$ ir plugin list
- Run the plugin:
(infrared)$ ir ansible-role-refstack-client
Example
(infrared)$ ir ansible-role-refstack-client \
--source_credentials /home/stack/overcloudrc \
--source_admin_credentials /home/stack/overcloudrc \
--deployer_input /home/stack/ir-tempest-deployer-input.conf \
--upload_results true \
--private_key_path /home/stack/refstack_key \
--private_key_path_src $(pwd)/refstack_key
In the example above tempest_config_path
is not defined, so source_admin_credentials
is a required parameter
because the role will try to generate an accounts.yaml
before generating a tempest.conf
.