XL Deploy provisioning example

This topic provides a step-by-step example that will help you get started with XL Deploy provisioning in cloud-based environments.

To follow this example, you need:

  • An Amazon Web Services EC2 Machine Image (AMI) on which Puppet is installed.
  • A Puppet manifest that will install Apache Tomcat in /opt/apache-tomcat.
  • The sample PetClinic-war application provided with XL Deploy. This is optional.

Before you begin

To understand important concepts related to XL Deploy provisioning, see provisioning through XL Deploy.

To complete this tutorial, this scenario assumes:

  • You have an installed instance of XL Deploy and are using a Unix-based operating system
  • You are running Java 8 JDK
  • You are running Puppet plugin version 6.0.0 or higher

Step 1 - Create an application

XL Deploy uses the same model for deployment packages and provisioning packages. Your first step is to create an application that will serve as a logical grouping of provisioning packages.

A provisioning package describes the:

  • infrastructure items that should be created.
  • environment to which infrastructure items will be associated.

From the XL Deploy GUI, create a new application:

  1. In the left pane, hover over Applications, click Explorer action menu, and select New > Application.
  2. In the Name field, type PetClinicEnv.
  3. Click Save.

Step 2 - Create a provisioning package

  1. Expand Applications.
  2. Hover over PetClinicEnv, click Explorer action menu, and select New > Provisioning Package.
  3. In the Name field, type 1.0.0.
  4. Click Save.

Step 3 - Create provisionables and templates

A provisioning package consists of provisionables, which are virtual machine specifications, and templates for configuration items (CIs).

In this step you will create the following provisionables:

  • an instance specification
  • an SSH host template
  • a Tomcat server template
  • a Tomcat virtual host template

Create an instance specification

  1. Hover over the 1.0.0 package, click Explorer action menu, and select New > aws > ec2 > InstanceSpec.
  2. Enter the following properties:

    Property Value Description
    Name tomcat-instance-spec The name of the CI.
    AWS AMI Your AWS AMI ID. For example, ami-d91be1ae. The ID of an AMI where Puppet is installed.
    Region The EC2 region of the AMI. For example, eu-west-1. The EC2 region, which must be valid for the AMI that you selected.
    AWS Security Group default The security group of the AMI.
    Instance Type m1.small The size of the instance.
    AWS key pair name Your AWS key name Name of your EC2 SSH key pair. If you do not have an AWS key name, log in to the Amazon EC2 console, create a new key, and download it to your local machine.
  3. Click Save.

    Sample aws.ec2.InstanceSpec CI

Create an SSH host template

  1. Hover over the 1.0.0 package, click Explorer action menu, and select New > template > Overthere > SsHost.
  2. Enter the following properties:

    Property Value Description
    Name tomcat-host The name of the CI.
    Operating System UNIX Operating system of the virtual machine.
    Connection Type SUDO Puppet requires a SUDO connection.
    Address {{%publicHostname%}} This is a placeholder that will be resolved from the provisioned.
    Username ubuntu User name for the EC2 machine.
    Private Key File SSH_DIRECTORY/{{%keyName%}}.pem The location of the SSH key on your local machine to use when connecting to the EC2 instance. SSH_DIRECTORY is the directory where you store your SSH keys. for example, Users/yourusername/.ssh.
    SUDO username root The user name to use for SUDO operations. This property is located on the Advanced section.
  3. Click Save.

    Create an SshHost host template

Create a Tomcat server template

  1. Hover over the tomcat-host CI, click Explorer action menu, and select New > Template > Tomcat > Server.
  2. Enter the following properties:

    Property Value Description
    Name tomcat-server The name of the CI
    Home /opt/apache-tomcat Puppet will install Tomcat in this directory
    Start Command sh bin/startup.sh The command that will start Tomcat
    Stop Command sh bin/shutdown.sh The command that will stop Tomcat
  3. Click Save.

    Create a tomcat server template.png

Create a Tomcat virtual host template

  1. Hover over the tomcat-server CI, click Explorer action menu, and select New > template > tomcat > VirtualHost.
  2. In the Name field, enter tomcat-vh.
  3. Click Save.

Create a directory to store generated CIs

  1. Hover over Infrastructure, click Explorer action menu, and select New > Directory.
  2. In the Name field, enter Tomcat.
  3. Click Save.

Step 4 - Bind the SSH host template to the instance spec

To bind the tomcat-host template to the tomcat-instance-spec provisionable:

  1. Double-click tomcat-instance-spec to open it.
  2. Go to the Common section.
  3. Under Bound Templates, select Applications/PetClinicEnv/1.0.0/tomcat-host from the drop down list.
  4. Click Save.

    Bind the SSH host template to the instance spec

Step 5 - Add a Puppet provisioner

  1. Hover over tomcat-instance-spec, click Explorer action menu, and select New > Puppet > provisioner > Manifest.
  2. In the Name field, enter install-tomcat.
  3. In the Host Template field, select tomcat-host.
  4. In the Choose file field, click Browse and upload a Puppet manifest file that will install Tomcat. Note: You can also specify the Artifact location in File Uri field.
  5. Click Save.

    Adding modules to the provisioner

Add modules to the provisioner

  1. Hover over the tomcat-instance-spec CI, click Explorer action menu, and select New > puppet > provisioner > Module.
  2. In the Name field, enter puppetlabs-tomcat.
  3. In the Host Template field, select tomcat-host.
  4. In the Module Name field, enter puppetlabs-tomcat.
  5. Click Save.
  6. Repeat steps 1 to 5 and enter puppetlabs-java for the Name and Module Name fields.

Note: If you open tomcat-instance-spec CI, you will see the modules.

Sample puppet.provisioner.Manifest CI with module specs

Step 6 Create the AWS provider

Create a new provider for Amazon Web Services (AWS):

  1. Hover over Infrastructure, click Explorer action menu, and select New > aws > aws > Cloud.
  2. In the Name field, enter AWS-EC2.
  3. In the Access Key ID field, enter your AWS ID.
  4. In the and Secret Access Key field, enter AWS access key.
  5. Click Save.

Sample aws.ec2.Cloud CI

Step 7 Create an environment

Create an environment where the package will be provisioned:

  1. Hover over Environments, click Explorer action menu, and select New > Environment.
  2. In the Name box, enter Cloud.
  3. In the Containers section, select Infrastructure/AWS-EC2 from the drop down list.
  4. In the Provisioning section, Directory Path field, enter Tomcat.
  5. Click Save.

Environment with aws.ec2.Cloud added

Step 8 Provision the environment

  1. Hover over 1.0.0, click Explorer action menu, and click Deploy.
  2. On the Environments page, select Cloud.
  3. Click Continue.
  4. Click Preview to view the deployment plan.
  5. Click Save.
  6. Click Deploy.

Provisioning plan preview

Results

You can see the generated CIs in the Repository:

Infrastructure CIs generated from bound templates

In this case, the unique provisioning ID was 695hnTMa.

You can also see that the CIs were added to the Cloud environment.

You can now import the sample package PetClinic-war/1.0 from the XL Deploy server and deploy it to the Cloud environment. When deployment is completed you will see the application running at http://<instance public IP address>:8080/petclinic. You can find the public IP address and other properties in the instance CI under the provider. For more information, see import a package and deploy an application