UCSD - Puppet/Foreman Adding Hosts to Host Groups

Version 3
    Prerequisites
    1. Built on UCSD 5.3
    Instructions for Regular Workflow Use:
    1. Download the attached .ZIP file below to your computer. *Remember the location of the saved file on your computer.
    2. Unzip the file on your computer. Should end up with a .WFD file.
    3. Log in to UCS Director as a user that has "system-admin" privileges.
    4. Navigate to "Policies-->Orchestration" and click on "Import".
    5. Click "Browse" and navigate to the location on your computer where the .WFD file resides. Choose the .WFD file and click "Open".
    6. Click "Upload" and then "OK" once the file upload is completed. Then click "Next".
    7. Click the "Select" button next to "Import Workflows". Click the "Check All" button to check all checkboxes and then the "Select" button.
    8. Click "Submit".
    9. A new folder should appear in "Policies-->Orchestration" that contains the imported workflow. You will now need to update the included tasks with information about the specific environment.

     

    Description

    Cisco Enterprise Cloud Suite, and UCS Director specifically, is a fantastic tool for managing Data Center Infrastructure delivery all the way to having VMs or Bare Metal Servers loaded and ready to go.  However, that is only the start of the process of delivering automated solutions for applications.  Managing Operating System and Applications are very important, but not a core feature of UCS Director.

     

    Many customers leverage Puppet for OS and Application Management of both Linux and Windows server.  To this end, I've built custom tasks and workflow examples to allow UCS Director to work with Open Source Puppet through Foreman to add a Host to a Host Group.  These can be used either as a User Action button for a VM, or as part of post-provisioning of a server.

     

    Updates!

    ** Note, in this first version there are some requirements for this to work

    1)  Newly added hosts to Puppet/Foreman need to have Certificates Signed.  In my lab, I autosign for testing.  If a cert isn't signed before running the tasks, they will not work.  I plan to add tasks to allow UCSD to initiate signing in future releases.

    1) Now fixed.  See the second attachment for tasks to Sign the Cert as well as Kick Off a run of the Agent. 

    2)  It is recommended to build a Custom Workflow Input as a LOV (dropdown) listing all the Host Group Names that you want to allow hosts to be placed in.  Currently this needs to be done manually, and as new host groups are added to Foreman, you would need to add them to the LOVs

     

    The first attached file includes the following:

    1)  2 Custom Tasks to Get and Set the Host Group ID

    2)  2 Workflow Examples.  One setup for "VM Context" to be a button, another as a Post-Provisioning Workflow.

    3)  Other Custom Tasks Used in Examples

      - Get VM Details - Take VMID and return VM Name and IP Address

      - Basic Username CleanUp - Allows for some basic string manipulation such as appending text

    4)  Custom Workflow Input - A sample LOV of Host Group Names

     

    The second file includes two other features

    1)  Custom task to sign the puppet certificate

    2)  Custom task to initiate a puppet agent run on a server

    3)  Workflow examples for User Action buttons or Compound Workflows that take a VMID as input. 

     

    What it looks like

    Screen Shot 2015-08-28 at 9.19.36 AM.png

    In Foreman

    Screen Shot 2015-08-28 at 9.24.43 AM.png

    Screen Shot 2015-08-28 at 9.25.28 AM.png

    Sample Workflow

    Screen Shot 2015-08-28 at 9.26.33 AM.png