From 99fe1a5e5cd8348d6a7e501691d4b78eca97393b Mon Sep 17 00:00:00 2001 From: "Timoney, Dan (dt5972)" Date: Thu, 29 Mar 2018 12:31:45 -0400 Subject: Add ansible adapter to CCSDK Copy APP-C Ansible adaptor to CCSDK Change-Id: Ie7f0662befd5cff446f2b2351a233bcfa7d6f4c0 Issue-ID: CCSDK-172 Signed-off-by: Timoney, Dan (dt5972) --- ansible-adapter/ansible-example-server/README | 103 ++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 ansible-adapter/ansible-example-server/README (limited to 'ansible-adapter/ansible-example-server/README') diff --git a/ansible-adapter/ansible-example-server/README b/ansible-adapter/ansible-example-server/README new file mode 100644 index 00000000..c858361e --- /dev/null +++ b/ansible-adapter/ansible-example-server/README @@ -0,0 +1,103 @@ +''' +/*- +* ============LICENSE_START======================================================= +* ONAP : APPC +* ================================================================================ +* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +* ================================================================================ +* Copyright (C) 2017 Amdocs +* ============================================================================= +* 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. +* +* ECOMP is a trademark and service mark of AT&T Intellectual Property. +* ============LICENSE_END========================================================= +*/ +''' + +============ +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} -- cgit 1.2.3-korg