When you deploy an application to the cloud or update a deployed application in the cloud, several processes take place in the background. Virtual machines are created and software is provisioned in the virtual machines. It is important to understand the deployment and update process so that you can easily identify and troubleshoot any deployment failures.
In Application Services, you can view the processes during a deployment in the execution plan. The host and agent bootstrap provisioning tasks appear next to components for each node. For applications deployed to the vRealize Automation environment, in addition to the host and agent bootstrap tasks, the network bootstrap provisioning task appears.
The process of deploying an application to the cloud and updating a deployed application includes the following steps. With composite deployment profiles, these steps are repeated for each application deployed.
Application Services runs policy assessment to determine compliance of the deployment process. If there is violation of a policy instance marked as critical, the deployment or update process stops.
Application Services provisions the virtual machines by instantiating the cloud templates that were mapped in the deployment profile.
For the update process to scale a deployed application, Application Services provisions the scaled clustered virtual machines by instantiating the cloud templates from the vCloud Director catalog or vRealize Automation that were mapped in the deployment profile. The scaled clustered virtual machines use the same templates that were initially applied when deploying the application to the cloud. You cannot change the templates when you update the deployed application.
The rest of the update profile processes are the same as the deployment process.
Application Services requests the cloud service to establish network connections and receive IP addresses for all of the virtual machines in the deployment. After the IP addresses are assigned, the virtual machines restart to make sure the setup process is completed properly. The host names are derived from the application blueprint and assigned as the node names.
If host name is not assigned, then the host name takes the logical name and a sequence of randomly generated characters are appended to it.
Bootstrap scripts included in each virtual machine download the agent from the Application Services server to the virtual machine. The agent is a JAR file that runs in a Java virtual machine. Bootstrap scripts must be installed on the physical templates.
The bootstrap script starts the agent process.
The agent authenticates with the Application Services server.
The agent in each virtual machine downloads the execution plan from Application Services to the virtual machine.
The agent performs the installation and setup tasks for each component in the order specified in the deployment execution plan.
For each script, the agent waits for the dependent tasks to finish successfully, and downloads all of the content to the virtual machine directory at /tmp/runid/content/ComponentName/PropertyName and the task scripts to the directory at /tmp/runid/TaskName. The agent runs the tasks according to the parameter values sent by the server. When a task is complete, the agent informs the server about the status of the task.
If a script finishes with a nonzero exit status, the agent marks that task as failed. Otherwise, the agent marks the script as completed and proceeds to the next task. When a task fails, the entire deployment is stopped, marked as Failed Deployment, and no future tasks are run. The reason for failure is available on the Details tab. When all of the tasks pass, the deployment is marked as Deployed Successfully.Note:
For a script to run without interruptions, the return value must be set to zero (0). This value allows the agent to capture all of the computed properties and send them to the Application Services server.
For troubleshooting purposes, you can access the deployment details or view the provisioning task logs included in the execution plan. The task information is captured in log files for the install, configure, start, update, rollback, and teardown scripts used on each component of the deployment. These logs capture all of the information that is sent to the stdout and stderr log files.