X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=appc-adapters%2Fappc-ansible-adapter%2Fappc-ansible-example-server%2FREADME;fp=appc-adapters%2Fappc-ansible-adapter%2Fappc-ansible-example-server%2FREADME;h=65c12e9ede88f8101fdc4a6e5017b37fe4fb2bd5;hb=c8bb28a6d336ce5cd932878789027ac495d9cb66;hp=0000000000000000000000000000000000000000;hpb=5c387465adbc2b87bcbea5279b12c197608667be;p=appc.git diff --git a/appc-adapters/appc-ansible-adapter/appc-ansible-example-server/README b/appc-adapters/appc-ansible-adapter/appc-ansible-example-server/README new file mode 100644 index 000000000..65c12e9ed --- /dev/null +++ b/appc-adapters/appc-ansible-adapter/appc-ansible-example-server/README @@ -0,0 +1,100 @@ +''' +/*- +* ============LICENSE_START======================================================= +* APPC +* ================================================================================ +* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +* ================================================================================ +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ============LICENSE_END========================================================= +* ECOMP is a trademark and service mark of AT&T Intellectual Property. +*/ +''' + +============ +INSTALLATION: +============ + +Python: +------- +sudo apt-get install python2.7 +sudo apt-get install python-pip +pip install PyMySQL +pip install requests + +Ansible: +-------- +sudo apt-get install software-properties-common +sudo apt-add-repository ppa:ansible/ansible +sudo apt-get update +sudo apt-get install ansible + +SQL db: +------- + +sudo apt-get install mysql-server + +Set root passwd during installation (i.e. password_4_mysql_user_id) + +sudo service mysql restart + +Setup mysql: +------------ + +mysql -u [username]-p +mysql -uroot -p + +Create user (i.e. id=mysql_user_id psswd=password_4_mysql_user_id) + CREATE USER 'appc'@'%' IDENTIFIED BY 'password_4_mysql_user_id'; + GRANT ALL PRIVILEGES ON *.* TO 'mysql_user_id'@'%'; + SET PASSWORD FOR 'mysql_user_id'@'%'=PASSWORD('password_4_mysql_user_id'); + +Create schema + CREATE SCHEMA ansible; + show databases; + use ansible; + CREATE TABLE playbook (name VARCHAR(45) NOT NULL, value BLOB, type VARCHAR(60), version VARCHAR(60), PRIMARY KEY (name)); + show tables; + CREATE TABLE inventory (hostname VARCHAR(45) NOT NULL, hostgroup VARCHAR(45), credentials VARCHAR(500), PRIMARY KEY (hostname)); + SHOW COLUMNS FROM playbook; + SHOW COLUMNS FROM inventory; + GRANT ALL PRIVILEGES ON *.* TO 'mysql_user_id'@'%' IDENTIFIED BY 'password_4_mysql_user_id' WITH GRANT OPTION; + GRANT ALL PRIVILEGES ON *.* TO 'ansible'@'%' IDENTIFIED BY 'ansible_agent' WITH GRANT OPTION; + FLUSH PRIVILEGES; + +Load db: +-------- + +python LoadAnsibleMySql.py + +============= +CODE TESTING: +============= +1. Start RestServer: python RestServer.py + +2. Try curl commands (case no secured REST: http & no authentication): + +- Request to execute playbook: +curl -H "Content-type: application/json" -X POST -d '{"Id": "10", "PlaybookName": "ansible_sleep", "NodeList": ["host"], "Timeout": "60", "EnvParameters": {"Sleep": "10"}}' http://0.0.0.0:8000/Dispatch + +response: {"ExpectedDuration": "60sec", "StatusMessage": "PENDING", "StatusCode": 100} + +- Get results (blocked until test finished): +curl --cacert ~/SshKey/fusion_eric-vm_cert.pem --user "appc:abc123" -H "Content-type: application/json" -X GET "http://0.0.0.0:8000/Dispatch/?Id=10&Type=GetResult" + +response: {"Results": {"localhost": {"GroupName": "host", "StatusMessage": "SUCCESS", "StatusCode": 200}}, "PlaybookName": "ansible_sleep", "Version": "0.00", "Duration": "11.261794", "StatusMessage": "FINISHED", "StatusCode": 200} + +- Delete playbook execution information +curl --cacert ~/SshKey/fusion_eric-vm_cert.pem --user "appc:abc123" -H "Content-type: application/json" -X DELETE http://0.0.0.0:8000/Dispatch/?Id=10 + +response: {"StatusMessage": "PLAYBOOK EXECUTION RECORDS DELETED", "StatusCode": 200}