diff options
author | SerenaFeng <feng.xiaowei@zte.com.cn> | 2016-08-12 00:11:07 +0800 |
---|---|---|
committer | SerenaFeng <feng.xiaowei@zte.com.cn> | 2016-08-15 11:20:04 +0800 |
commit | 3c4de6f3f4e74e032d3724ac6683e7326266787e (patch) | |
tree | e200078fa3e40cf80ad75cdd219df324aa8b764d | |
parent | 341749a5b6dadf4839ae289dd2441dba5a81336b (diff) |
update testapi only with one command
when using ansible to do the update, we need to
config ansible's hosts file/add ssh_key to
ssh_agent/check the connectivity of ansible and playbook...etc,
here playbook-update.sh will do all the job automatically
JIRA: FUNCTEST-411
Change-Id: Ie635eb9eccd1f4e39a94a352f649e56268744091
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
-rw-r--r-- | utils/test/result_collection_api/update/README.md | 28 | ||||
-rwxr-xr-x | utils/test/result_collection_api/update/playbook-update.sh | 90 | ||||
-rw-r--r-- | utils/test/result_collection_api/update/test.yml | 12 |
3 files changed, 113 insertions, 17 deletions
diff --git a/utils/test/result_collection_api/update/README.md b/utils/test/result_collection_api/update/README.md index 738f30ab7..cb0e67b33 100644 --- a/utils/test/result_collection_api/update/README.md +++ b/utils/test/result_collection_api/update/README.md @@ -79,27 +79,21 @@ install ansible, please refer: ``` http://docs.ansible.com/ansible/intro_installation.html ``` -run update.yml + +playbook-update.sh + arguments: -: host: remote server, must provide -user: user used to access to remote server, default to root -port: exposed port used to access to testapi, default to 8000 -image: testapi's docker image, default to opnfv/testapi:latest -update_path: templates directory in remote server, default to /tmp/testapi -mongodb_url: url of mongodb, default to 172.17.0.1, docker0 ip -swagger_url: swagger access url, default to http://host:port +: -h|--help show this help text +-r|--remote remote server +-u|--user ssh username used to access to remote server +-i|--identity ssh PublicKey file used to access to remote server +-e|--execute execute update, if not set just check the ansible connectivity usage: ``` -ansible-playbook update.yml --extra-vars " -host=10.63.243.17 -user=zte -port=8000 -image=opnfv/testapi -mode=build -update_path=/tmp/testapi -mongodb_url=mongodb://172.17.0.1:27017 -swagger_url=http://10.63.243.17:8000"``` +ssh-agent ./playbook-update.sh -r testresults.opnfv.org -u serena -i ~/.ssh/id_rsa -e +``` + > **Note:** > - If documents need to be changed, please modify file diff --git a/utils/test/result_collection_api/update/playbook-update.sh b/utils/test/result_collection_api/update/playbook-update.sh new file mode 100755 index 000000000..86d30e4b2 --- /dev/null +++ b/utils/test/result_collection_api/update/playbook-update.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +# +# Author: Serena Feng (feng.xiaoewi@zte.com.cn) +# Update testapi on remote server using ansible playbook automatically +# +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# + +set -e + +usage="Script to trigger update automatically. + +usage: + bash $(basename "$0") [-h|--help] [-h <host>] [-u username] [-i identityfile] [-e|--execute] + +where: + -h|--help show this help text + -r|--remote remote server + -u|--user ssh username used to access to remote server + -i|--identity ssh PublicKey file used to access to remote server + -e|--execute execute update, if not set just check the ansible connectivity" + +remote=testresults.opnfv.org +user=root +identity=~/.ssh/id_rsa +hosts=./hosts +execute=false + +# Parse parameters +while [[ $# > 0 ]] + do + key="$1" + case $key in + -h|--help) + echo "$usage" + exit 0 + shift + ;; + -r|--remote) + remote="$2" + shift + ;; + -u|--user) + user="$2" + shift + ;; + -i|--identity) + identity="$2" + shift + ;; + -e|--execute) + execute=true + ;; + *) + echo "unknown option" + exit 1 + ;; + esac + shift # past argument or value +done + +echo $remote > $hosts + +echo "add authentication" +ssh-add $identity + +echo "test ansible connectivity" +ansible -i ./hosts $remote -m ping -u $user + +echo "test playbook connectivity" +ansible-playbook -i $hosts test.yml -e "host=$remote user=$user" + +if [ $execute == true ]; then + echo "do update" + ansible-playbook -i $hosts update.yml -e "host=$remote \ + user=$user \ + port=8082 \ + image=opnfv/testapi \ + update_path=/home/$user/testapi \ + mongodb_url=mongodb://172.17.0.1:27017 \ + swagger_url=http://testresults.opnfv.org/test" +fi + +rm -fr $hosts +ssh-agent -k diff --git a/utils/test/result_collection_api/update/test.yml b/utils/test/result_collection_api/update/test.yml new file mode 100644 index 000000000..a8868720d --- /dev/null +++ b/utils/test/result_collection_api/update/test.yml @@ -0,0 +1,12 @@ +--- +- hosts: "{{ host }}" + remote_user: "{{ user }}" + become: yes + become_method: sudo + vars: + user: "root" + tasks: + - name: test connectivity + command: "echo hello {{ host }}" + register: result + - debug: msg="{{ result }}" |