update testapi only with one command 63/18463/7
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Thu, 11 Aug 2016 16:11:07 +0000 (00:11 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Mon, 15 Aug 2016 03:20:04 +0000 (11:20 +0800)
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>
utils/test/result_collection_api/update/README.md
utils/test/result_collection_api/update/playbook-update.sh [new file with mode: 0755]
utils/test/result_collection_api/update/test.yml [new file with mode: 0644]

index 738f30a..cb0e67b 100644 (file)
@@ -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 (executable)
index 0000000..86d30e4
--- /dev/null
@@ -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 (file)
index 0000000..a886872
--- /dev/null
@@ -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 }}"