Automate PAM and Puppet application online installations

During a fresh online installation of Puppet Application Manager (PAM) and a Puppet application, you have the option to configure the software automatically rather than completing the installation script interview.

Before you begin

Ensure that your system meets the PAM system requirements.

  1. Install Puppet Application Manager. For detailed instructions, see PAM HA online installation.
  2. Define the configuration values for your Puppet application installation, using Kubernetes YAML format.
    apiVersion: kots.io/v1beta1
    kind: ConfigValues
    metadata: 
      name: app-config
    spec: 
      values: 
        accept_eula: 
          value: has_accepted_eula
        annotations: 
          value: "ingress.kubernetes.io/force-ssl-redirect: 'false'"
        hostname: 
          value: "<HOSTNAME>"
        root_password: 
          value: "<ROOT ACCOUNT PASSWORD>"
    Tip: View the keyword names for all settings by clicking View files > upstream > config.yaml in Puppet Application Manager.
    Replace the values indicated:
    • Replace <HOSTNAME> with a hostname you want to use to configure an Ingress and to tell job hardware agents and web hooks how to connect to it. You might need to configure your DNS to resolve the hostname to your Kubernetes hosts.
    • Replace <ROOT ACCOUNT PASSWORD> your chosen password for the application root account. The root account is used to administer your application and has full access to all resources and application-wide settings. This account must NOT be used for testing and deploying control repositories or modules.
    • Optional. These configuration values disable HTTP-to-HTTPS redirection, so that SSL can be terminated at the load balancer. If you want to run the application over SSL only, change the force-ssl-redirect annotation to true.
    • Optional. If your load balancer requires HTTP health checks, you can now enable Ingress settings that do not require Server Name Indication (SNI) for /status. To enable this setting, add the following to the config values statement:
      enable_lb_healthcheck:
        value: "1"
    Note: The automated installation automatically accepts the Puppet application end user license agreement (EULA). Unless Puppet has otherwise agreed in writing, all software is subject to the terms and conditions of the Puppet Master License Agreement located at https://puppet.com/legal.
  3. Write your license file and the configuration values generated in step 1 to the following locations:
    • Write your license file to ./replicated_license.yaml
    • Write your configuration values to ./replicated_config.yaml
  4. Add the Puppet application definition to Puppet Application Manager with the license file and configuration values, passing in the Puppet Application Manager password you set in step 4:
    kubectl kots install <APPLICATION NAME> --namespace default --shared-password <YOUR CHOSEN PASSWORD> --port-forward=false \
      --license-file ./replicated_license.yaml --config-values ./replicated_config.yaml
    Note: If you want to install a specific version of the application, include the --app-version-label=<VERSION> flag in the install command.
  5. Wait five minutes to allow the software time to process the change.
  6. Navigate to http://<NODE IP ADDRESS>:8800 and log in with the Puppet Application Manager password.
    Your configuration values are applied, and if preflight checks have passed, the application is deployed and in the process of starting up.
    The application's status on the Application tab is shown as Missing for several minutes while deployment is underway. To monitor the deployment's progress, run kubectl get pods --watch.

    When the deployment is complete, the application status changes to Ready.

  7. Update your DNS or /etc/hosts file to include the hostname you chose during configuration.
  8. Installation is now complete! Navigate to https://<HOSTNAME> and sign into Puppet application.