heat_template_version: rocky description: > RHEL Registration and unregistration software deployments. # Note extra parameters can be defined, then passed data via the # environment parameter_defaults, without modifying the parent template parameters: server: type: string # To be defined via a local or global environment in parameter_defaults rhel_reg_activation_key: type: string rhel_reg_auto_attach: type: string rhel_reg_base_url: type: string rhel_reg_environment: type: string rhel_reg_force: type: string rhel_reg_machine_name: type: string rhel_reg_org: type: string rhel_reg_password: type: string rhel_reg_pool_id: type: string rhel_reg_release: type: string rhel_reg_repos: type: string rhel_reg_sat_url: type: string rhel_reg_server_url: type: string rhel_reg_service_level: type: string rhel_reg_user: type: string rhel_reg_type: type: string rhel_reg_method: type: string rhel_reg_sat_repo: type: string rhel_reg_http_proxy_host: type: string rhel_reg_http_proxy_port: type: string rhel_reg_http_proxy_username: type: string rhel_reg_http_proxy_password: type: string UpdateOnRHELRegistration: type: boolean default: false description: | When enabled, the system will perform a yum update after performing the RHEL Registration process. DeleteOnRHELUnregistration: type: boolean default: false description: | When true, the system profile will be deleted from the registration service when the rhel-registration.yaml nested stack is deleted. RHELRegistrationActions: type: comma_delimited_list default: - CREATE description: Actions when the system profile will be registered, by default we only do this on CREATE of a new server, not for existing nodes. conditions: unregister_on_delete: equals: - {get_param: DeleteOnRHELUnregistration} - true update_requested: equals: - {get_param: UpdateOnRHELRegistration} - true resources: RHELRegistration: type: OS::Heat::SoftwareConfig properties: group: script inputs: - name: REG_ACTIVATION_KEY - name: REG_AUTO_ATTACH - name: REG_BASE_URL - name: REG_ENVIRONMENT - name: REG_FORCE - name: REG_MACHINE_NAME - name: REG_ORG - name: REG_PASSWORD - name: REG_POOL_ID - name: REG_RELEASE - name: REG_REPOS - name: REG_SAT_URL - name: REG_SERVER_URL - name: REG_SERVICE_LEVEL - name: REG_USER - name: REG_TYPE - name: REG_METHOD - name: REG_SAT_REPO - name: REG_HTTP_PROXY_HOST - name: REG_HTTP_PROXY_PORT - name: REG_HTTP_PROXY_USERNAME - name: REG_HTTP_PROXY_PASSWORD config: {get_file: scripts/rhel-registration} RHELRegistrationDeployment: type: OS::Heat::SoftwareDeployment properties: name: RHELRegistrationDeployment server: {get_param: server} config: {get_resource: RHELRegistration} actions: {get_param: RHELRegistrationActions} input_values: REG_ACTIVATION_KEY: {get_param: rhel_reg_activation_key} REG_AUTO_ATTACH: {get_param: rhel_reg_auto_attach} REG_BASE_URL: {get_param: rhel_reg_base_url} REG_ENVIRONMENT: {get_param: rhel_reg_environment} REG_FORCE: {get_param: rhel_reg_force} REG_MACHINE_NAME: {get_param: rhel_reg_machine_name} REG_ORG: {get_param: rhel_reg_org} REG_PASSWORD: {get_param: rhel_reg_password} REG_POOL_ID: {get_param: rhel_reg_pool_id} REG_RELEASE: {get_param: rhel_reg_release} REG_REPOS: {get_param: rhel_reg_repos} REG_SAT_URL: {get_param: rhel_reg_sat_url} REG_SERVER_URL: {get_param: rhel_reg_server_url} REG_SERVICE_LEVEL: {get_param: rhel_reg_service_level} REG_USER: {get_param: rhel_reg_user} REG_TYPE: {get_param: rhel_reg_type} REG_METHOD: {get_param: rhel_reg_method} REG_SAT_REPO: {get_param: rhel_reg_sat_repo} REG_HTTP_PROXY_HOST: {get_param: rhel_reg_http_proxy_host} REG_HTTP_PROXY_PORT: {get_param: rhel_reg_http_proxy_port} REG_HTTP_PROXY_USERNAME: {get_param: rhel_reg_http_proxy_username} REG_HTTP_PROXY_PASSWORD: {get_param: rhel_reg_http_proxy_password} RHELUnregistration: type: OS::Heat::SoftwareConfig properties: group: script config: {get_file: scripts/rhel-unregistration} inputs: - name: REG_METHOD RHELUnregistrationDeployment: type: OS::Heat::SoftwareDeployment properties: name: RHELUnregistrationDeployment server: {get_param: server} config: {get_resource: RHELUnregistration} actions: if: - unregister_on_delete - ['DELETE'] - [] input_values: REG_METHOD: {get_param: rhel_reg_method} YumUpdateConfigurationAfterRHELRegistration: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash set -x # yum check-update exits 100 if updates are available set +e check_update=$(yum check-update 2>&1) check_update_exit=$? set -e if [[ "$check_update_exit" == "100" ]]; then full_command="yum -q -y update" echo "Running: $full_command" result=$($full_command) return_code=$? echo "$result" echo "yum return code: $return_code" exit $return_code elif [[ "$check_update_exit" == "1" ]]; then echo "Failed to check for package updates" echo "$check_update" else echo "No packages require updating" exit 0 fi UpdateDeploymentAfterRHELRegistration: type: OS::Heat::SoftwareDeployment depends_on: RHELRegistrationDeployment condition: update_requested properties: name: UpdateDeploymentAfterRHELRegistration config: {get_resource: YumUpdateConfigurationAfterRHELRegistration} server: {get_param: server} actions: {get_param: RHELRegistrationActions} outputs: deploy_stdout: description: Deployment reference, used to trigger puppet apply on changes value: {get_attr: [RHELRegistrationDeployment, deploy_stdout]}