Skip to content

Create

Resource templates are the building blocks of Environment templates and include Infrastructure as Code (IaC) that defines a resource, including variables, lifecycle hooks (pre/post actions upon completion, deployment, etc.), policies, whether the resource will be dedicated per workload or shared, and more.

Did you know ?

Resource Templates can be managed through various methods:

  • UI
  • CLI (RCTL)
  • Terraform
  • GitOps
  • API

Create a Resource Template

  1. In a project, select Environments > Resource Templates.
  2. Select New Resource Template
  3. Type a name for the resource template. Optionally, type a description
  4. Select Create. The resource template is created and the configuration page displays

Resource Temp

General

Setting Description
Version Name Enter the version for the resource. Examples: v1, 0.1, 3
Name Enter a name for the resource
Description Enter a description for the resource (Optional)
Provider Select the provider for the resource. Supported values are "Terraform (Deprecated)", "OpenTofu", "HCP Terraform", "System", and "Custom". Refer to the Providers page for detailed instructions
Provider Version Versions 1.6.2, 1.7.2 or latest for OpenTofu provider
Driver Applicable for OpenTofu and HCP Terraform Provider only. Select the required Driver
Task Applicable for Custom Provider only. Add tasks to define individual steps in a workflow, each executed based on specified drivers, agents and dependencies
Labels Add a label to the resource. Use labels to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system. This is a key-value pair. For example, the key is environment and the value is dev
Annotations Add an annotation to the resource. Use annotations to attach arbitrary non-identifying metadata to the resource. This is a key-value pair. For example, the key is imageregistry and the value is https://hub.docker.com/

Reosurce Temp


Repository

Setting Description
Repository Name Select the name for the repository
Branch Enter the branch to use for the repository. Example: master
Directory Path Enter the directory path for the configuration file in the repository

Reosurce Temp


Configuration

Setting Description
Refresh Read the current settings from the resource and update if necessary
Lock Timeout Lock a resource to prevent accidental modifications or deletion
State Store State Store options differ based on the Provider selection in the General settings
Variables Management Add var files to the resource
Plugin Enter the plugin directory for the resource. This is optional. See Managing Plugins for more details
Volume Configure volume settings VPC usage (mount path, storage class, and size in GB) and Backup & Restore (mount path). Users can enable the Backup & Restore during subsequent environment deployments. The volumes will be used in the deploy operation and their content will be restored. When destroying the environment, these volumes will be cleaned up

Resource Temp

Important

If a user does not specify a custom “state file store,” the system will default to using Rafay’s state file store. This default option is primarily intended for demos and Proofs of Concept (POCs). However, users should configure a custom state store if they require specific security measures, visibility, and other organizational requirements.


Hooks

A hook runs during a specified point when creating a resource from a template. Hooks can extend the functionality of creating a resource, like sending an HTTP request to a system.

Resource Hooks

Create a resource hook. See Hook Type for parameter details about each hook type.

Setting Description
On Completion Set a hook that is triggered when resource creation or updating is complete.
On Failure Set a hook that is triggered when resource creation or updating fails to complete.
On Init Set a hook that is triggered when resource creation or updating is initialized.
On Success Set a hook that is triggered when resource creation or updating is successful.

Terraform Hooks

Create a Terraform hook. See Hook Type for parameter details about each hook type.

Deploy

Create a Terraform hook that is triggered when the resource is deployed.

Setting Description
Init Deploy the resource when terraform init is used.
Plan Deploy the resource when terraform plan is used.
Apply Deploy the resource when terraform apply is used.
Output Deploy the resource when an output is used.

Destroy

Create a Terraform hook that is triggered when the resource is destroyed.

Setting Description
Init Destroy the resource when terraform init is used.
Plan Destroy the resource when terraform plan is used.
Destroy Destroy the resource when terraform destroy is used.

Reosurce Temp

System Hooks

Create a System hook. See Hook Type for parameter details about each hook type.

Deploy

Create a System hook that is triggered when the resource is deployed

Setting Description
Apply Deploy the resource when system apply is used.

Destroy

Create a System hook that is triggered when the resource is destroyed.

Setting Description
Destroy Destroy the resource when system destroy is used.

Hook Type

When adding a Resource or Terraform hook, select a hook type and set the appropriate parameters.

Approval

Setting Description
Name Enter a name for the hook.
Approval Type Select the approval type. Supported values are: Internal and Email.
-- Internal
Agent Name Select the agent to associate with this hook.
Continue on Failure Set the hook to run even if the resource creating or updating process fails.
Timeout Enter a value to set the timeout duration. If the timeout duration is exceeded, the resource creation or updating is terminated.

Container

Setting Description
Name Enter a name for the container hook
Container Configuration
-- cpuLimitMilli Specify the CPU Limit to be used by the container
-- Image Specify the underlying container image to be used
-- Memory Limit in MB Specify the container memory limit to be set (in MB)
-- Working Directory Path The working directory for commands to run in
-- Success Condition Specify the success condition to be evaluated when a container completes execution
Arguments Arguments to the entrypoint. The docker image's CMD is used if this is not provided
Commands Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided
Environment Variables Provide list of environment variables to set in the container
Agent Name Name of the agent responsible for execution
Continue on Failure Set the hook to continue execution even in case of failure
Timeout Enter a value to set the timeout duration for container execution, if this exceeds container execution will be terminated

HTTP

Setting Description
Name Enter a name for the http hook
HTTP Configuration
-- Body Provide message body which is the data bytes transmitted during an HTTP transaction message
-- Endpoint Specify the http endpoint which is a targetable URL to be invoked
-- Method Specify the http method e.g. PUT, POST, GET that corresponds to the endpoint provided
-- Success Condition Specify the success condition to be evaluated when a http call completes execution
Headers Specify additional context and metadata about the request
Agent Name Name of the agent responsible for execution
Continue on Failure Set the hook to continue execution even in case of failure
Timeout Enter a value to set the timeout duration for http call, if this exceeds execution will be terminated

Driver

Setting Description
Name Enter a name for the driver hook
Driver Configuration
-- Type Select the driver type. Supported values are: container, http
Agent Name Name of the agent responsible for execution
Continue on Failure Set the hook to continue execution even in case of failure
Timeout Specify the duration in the Timeout field for HTTP or Container. When a user specifies a timeout in both Hooks and Drivers, the timeout specified in Hooks takes precedence

Reosurce Temp


Agents

Parameter Description
Name Select an agent to associate with this resource

Reosurce Temp


Input Variables

OpenTofu and HCP Terraform Providers

Here are the variables that the user can configure for OpenTofu and HCP Terraform providers:

Setting Description
Name The name of the variable
Description A brief description of the variable
Value The variable value
Value Type The type of value
-- HCL Hashicorp configuration language
-- JSON JavaScript Object Notation (JSON) is a lightweight data-interchange format
-- Expressions Expressions are valid units of code that resolve to a value
-- Text Text value.
Override Type Controls if a user can change a variable or not
-- Allowed Allows the user to override the value
-- Not Allowed Does not allow the user to override the value
-- Restricted Allows the user to override the value by selecting a different, pre-defined value
Restricted Values If Restricted is selected for the Override Type, enter the values that are allowed
Sensitive Does not display the value in the UI
Required The variable is required when using this Context

Reosurce Temp


Contexts

Setting Description
Context Select a Context to associate with this resource

Upon furnishing the essential details, choose either Save as Active Version or Save as Draft Version

Env Temp


Version Management

Upon saving the configurations, users have the ability to review the list of resource templates with versions. To delve into specific version details, click on the corresponding version number.

Env Temp

There are three (3) distinct states for resource template versions:

  • Draft
  • Active
  • Disabled

Env Temp

Users can create a draft version of resource templates and make multiple edits to it during the testing/validation phase. Once it is verified that the template is working as expected, users can transition the status from Draft to Active. However, it's important to note that no further edits can be made to the template in the active status. A new version has to be created for any edits to an Active version. Draft versions are project scoped which means that these versions are not shared with downstream projects (when the template is shared).

If a version of a template needs to be made unavailable for security related reasons or compliance, users can disable it by clicking on the Disable icon. Disabling effectively restricts further use of this version, meaning it can no longer be referenced in any new environments that are created. However, existing environments already using this version will remain unaffected.

Draft Status

In the draft status, the following rules apply:

  1. Inaccessible from shared projects
  2. Usable within the same project
  3. Editable multiple times
  4. Can be marked as active (accessible from shared projects)
  5. Can be marked as disabled and restored to an active state by enabling

Active Status

For versions in the active status:

  1. Cannot be reverted back to draft from any other state
  2. Accessible from shared projects
  3. No further changes allowed
  4. Can be marked as disabled and restored to an active state by enabling

Disabled Status

Versions in the disabled status adhere to the following rules:

  1. Cannot be used in the future; no impact on existing projects
  2. Can be restored to an active state by enabling

Important

  • Use the delete icon to remove a version if it is not currently in use. Versions cannot be deleted if they are in use
  • GitOps and Terraform do not support version management; they will always synchronize with the latest active version

Env Temp