Workflow for deploying LAMP through Ansible.
{ "id":"ansible-workflow", "name": "Workflow for deploying LAMP via Ansible", "description":"Sample Workflow for deploying an entire LAMP stack via Ansible", "version":"1.0", "startStep":"step0", "variables": [ {"name":"vnfId", "type": "string"} ], "input": [ {"name": "ANSIBLE_HOST_IP", "description": "Ansible Host IP Address", "type": "string"}, {"name": "ANSIBLE_HOST_USER", "description": "Ansible Host Username", "type": "string"}, {"name": "ANSIBLE_HOST_PWD", "description": "Ansible Host Password", "type": "password"}, {"name": "WEBSERVER_IP", "description": "Web Server IP Address", "type": "string"}, {"name": "DBSERVER_IP", "description": "DB Server IP Address", "type": "string"} ], "output": [ {"name":"COPY_RESULT", "description": "Copy Output", "type": "string"}, {"name":"SSH_OUTPUT", "description": "SSH Command Output", "type": "string"}, {"name":"ANSIBLE_OUTPUT", "description": "Ansible Command Output", "type": "string"} ], "steps":[ { "stepId":"step0", "workflow":"COPY_FILE_TO_GUEST", "namespace": "nfv", "type":"task", "description": "Copy Ansible Scripts from CSAR", "inBinding":[ {"name": "username", "type": "string", "exportName": "ANSIBLE_HOST_USER"} ,{"name": "password", "type": "password", "exportName": "ANSIBLE_HOST_PWD"} ,{"name": "ip", "type": "string", "exportName": "ANSIBLE_HOST_IP"} ,{"name": "inFile", "type": "file", "default": [{"name": "ansible-centos7-lamp-master.zip"}]} ,{"name": "workingDirectory", "type": "string", "default": "/opt/ansible"} ,{"name": "destinationFileName", "type": "string", "default": "ansible-centos7-lamp-master.zip"} ], "outBinding": [ {"name": "result", "type": "string", "exportName": "COPY_RESULT"} ], "nextStep": "step1" }, { "stepId":"step1", "workflow":"VRO_CUSTOM_WORKFLOW", "namespace": "nfv", "type":"task", "description": "Unzip Ansible Scripts", "inBinding":[ {"name": "vroWorkflowName", "type": "string", "default": "Run SSH Command"}, {"name": "username", "type": "string", "exportName": "ANSIBLE_HOST_USER"}, {"name": "password", "type": "password", "exportName": "ANSIBLE_HOST_PWD"}, {"name": "port", "type": "number", "default": "22"}, {"name": "cmd", "type": "string", "default": "cd /opt/ansible; unzip ansible-centos7-lamp-master.zip; "}, {"name": "encoding", "type": "string", "default": " "}, {"name": "hostNameOrIP", "type": "string", "exportName": "ANSIBLE_HOST_IP"}, {"name": "passwordAuthentication", "type": "boolean", "default": "true"} ], "outBinding": [ {"name": "result", "type": "string", "exportName": "SSH_OUTPUT"} ], "nextStep":"step2" }, { "stepId":"step2", "workflow":"VRO_CUSTOM_WORKFLOW", "namespace": "nfv", "type":"task", "description": "Prepare Ansible Hosts file", "inBinding":[ {"name": "vroWorkflowName", "type": "string", "default": "Run SSH Command"}, {"name": "username", "type": "string", "exportName": "ANSIBLE_HOST_USER"}, {"name": "password", "type": "password", "exportName": "ANSIBLE_HOST_PWD"}, {"name": "port", "type": "number", "default": "22"}, {"name": "cmd", "type": "string", "default": "cd /opt/ansible/ansible-centos7-lamp-master; sed -i -e 's/client1.example.com/{{WEBSERVER_IP}}/g' /opt/ansible/ansible-centos7-lamp-master/hosts; sed -i -e 's/client2.example.com/{{DBSERVER_IP}}/g' /opt/ansible/ansible-centos7-lamp-master/hosts"}, {"name": "encoding", "type": "string", "default": " "}, {"name": "hostNameOrIP", "type": "string", "exportName": "ANSIBLE_HOST_IP"}, {"name": "passwordAuthentication", "type": "boolean", "default": "true"} ], "outBinding": [ {"name": "result", "type": "string", "exportName": "SSH_OUTPUT"} ], "nextStep":"step3" }, { "stepId":"step3", "workflow":"VRO_CUSTOM_WORKFLOW", "namespace": "nfv", "type":"task", "description": "Execute Ansible Playbook", "inBinding":[ {"name": "vroWorkflowName", "type": "string", "default": "Run SSH Command"}, {"name": "username", "type": "string", "exportName": "ANSIBLE_HOST_USER"}, {"name": "password", "type": "password", "exportName": "ANSIBLE_HOST_PWD"}, {"name": "port", "type": "number", "default": "22"}, {"name": "cmd", "type": "string", "default": "cd /opt/ansible/ansible-centos7-lamp-master; ansible-playbook -v -i hosts site.yml"}, {"name": "encoding", "type": "string", "default": " "}, {"name": "hostNameOrIP", "type": "string", "exportName": "ANSIBLE_HOST_IP"}, {"name": "passwordAuthentication", "type": "boolean", "default": "true"} ], "outBinding": [ {"name": "result", "type": "string", "exportName": "ANSIBLE_OUTPUT"} ], "nextStep":"END" } ] }