Walrus File
Walrus File is a file used for deploying resources, containing a set of related resources and their dependencies.
Writing Walrus File
Here is an example of a Walrus file in YAML format.
version: v1
resources:
- name: wordpress-db
type: mysql
attributes:
engine_version: "8.0"
password: ${var.mysql-password}
username: rdsuser
project:
name: default
environment:
name: local
- name: wordpress
type: containerservice
attributes:
containers:
- image: wordpress
profile: run
ports:
- internal: 80
external: 80
envs:
- name: WORDPRESS_DB_HOST
value: ${res.wordpress-db.address}
- name: WORDPRESS_DB_PASSWORD
value: ${res.wordpress-db.password}
- name: WORDPRESS_DB_USER
value: ${res.wordpress-db.username}
- name: WORDPRESS_DB_NAME
value: ${res.wordpress-db.database}
version
Optional; the format version of the Walrus File, currently supporting version v1.
resources
Required; contains configurations for multiple resources and their dependencies.
name
Required; the name of the resource.
project
Optional; the project to deploy the resource to, used in conjunction with environment. When using Walrus CLI, not configuring it will use the flags passed to Walrus CLI or the current context. When using Walrus UI, it will deploy to the current project.
environment
Optional; the environment to deploy the resource to, used in conjunction with project. When using Walrus CLI, not configuring it will use the flags passed to Walrus CLI or the current context. When using Walrus UI, it will deploy to the current environment.
type
Optional; the type of resource definition used for deployment; either type or template should be configured.
template
Optional; the template used for deployment, specifying the template name and version.
Here is an example of using a global-level template.
resources:
- template:
name: kubernetes-containerservice
version: v0.2.5
attributes:
containers:
- image: nginx
profile: run
ports:
- internal: 80
external: 80
files:
- path: /usr/share/nginx/html/index.html
content: |
<html>
<h1>Welcome to Walrus!</h1>
</html>Here is an example of using a project-level template.
resources:
- template:
name: kubernetes-containerservice
version: v0.2.5
project:
name: defaultattributes
Optional; fill in the required configurations for deployment.
Dependency Definition
Dependencies are defined using the format ${res.resource-name.resource-output}
. For example, in the sample, ${res.wordpress-db.address}
defines that wordpress
depends on the address
output of wordpress-db
.
Variable Dependencies
Supports using variables already existing in Walrus. Defined using the format ${variable.variable-name}
. For example, in the sample, ${var.password}
defines the use of the Walrus password variable.
Environment Variable Interpolation
When used in conjunction with Walrus CLI, supports interpolation from environment variables. The following example uses the environment variable PASSWORD
to assign a value to attributes.password
.
version: v1
resources:
- name: wordpress-db
type: mysql
attributes:
engine_version: "8.0"
password: ${PASSSWORD}
username: rdsuser
Supports common Linux parameter expansions.
- Default value for variables
${parameter:-default}
: Uses the default value if the variable is undefined or empty. - Exit if variable is not defined
${parameter:?word}
: Outputs an error message and exits the script if the variable is undefined or empty. - Conditional expansion
${parameter:+word}
: Returns an empty string if the parameter is undefined or empty; returns word if the parameter is defined and non-empty.
File Content Interpolation
Supports replacing file content into the Walrus file using ${file(file-path)}
, allowing sensitive data to be retrieved from files or environment variables.
version: v1
resources:
- name: wordpress-db
type: mysql
attributes:
engine_version: "8.0"
password: ${PASSSWORD}
username: rdsuser
Using Walrus File
CLI Apply/Delete Walrus File
The CLI supports resource operations using the walrus apply -f apps.yaml
and walrus delete -f apps.yaml
commands.
Importing Walrus File
Resources belong to an environment, and you can find the Walrus File operation buttons in the resource list view.
- Click on
Applications
in the left navigation bar. - By default, you will enter the view of the first environment. You can switch to view resources in different projects or environments using the top breadcrumb.
- In the
Resources
tab, you can view the list of resources in that environment. - Click on
Import YAML
, and enter the Walrus File content directly into the input box or read it from a file. - Also could choose an application built from the Walrus File Hub, using a pre-written Walrus File.
Exporting Walrus File
- Click on
Applications
in the left navigation bar. - By default, you will enter the view of the first environment. You can switch to view resources in different projects or environments using the top breadcrumb.
- In the
Resources
tab, check the resources to be exported as a Walrus File, and select export in the additional operations menu to export the Walrus File to the local machine.