Skip to content

Latest commit

 

History

History
 
 

cexec

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
quay.io/tinkerbell/actions/cexec:latest

The cexec Action performs execution either within a chroot environment or within the base filesystem. The primary use-case is being able to provision files/an Operating System to disk and then being able to execute something that perhaps resides within that filesystem.

Examples

actions:
- name: "Install Grub"
  image: quay.io/tinkerbell/actions/cexec:latest
  timeout: 90
  environment:
      BLOCK_DEVICE: /dev/sda3
      FS_TYPE: ext4
      CHROOT: y
      CMD_LINE: "grub-install --root-directory=/boot /dev/sda"

In order to execute multiple commands (separated by a semi-colon) we will need to leverage a shell. We do this by passing sh -c as a DEFAULT_INTERPRETER. This interpreter will then parse your commands.

actions:
- name: "Update packages"
  image: quay.io/tinkerbell/actions/cexec:latest
  timeout: 90
  environment:
      BLOCK_DEVICE: /dev/sda3
      FS_TYPE: ext4
      CHROOT: y
      DEFAULT_INTERPRETER: "/bin/sh -c"
      CMD_LINE: "apt-get -y update; apt-get -y upgrade"
      UPDATE_RESOLV_CONF: true
      DEBIAN_FRONTEND: noninteractive

Environment variables and CLI flags

All options can be set either via environment variables or CLI flags. CLI flags take precedence over environment variables, which take precedence over default values.

Env variable Flag Type Default Value Required Description
BLOCK_DEVICE --block-device string "" yes The block device to mount.
FS_TYPE --fs-type string "" yes The filesystem type of the block device.
CHROOT --chroot string "" no If set to y (or a non empty string), the Action will execute the given command within a chroot environment. This option is DEPRECATED. Future versions will always chroot.
CMD_LINE --cmd-line string "" yes The command to execute.
DEFAULT_INTERPRETER --default-interpreter string "" no The default interpreter to use when executing commands. This is useful when you need to execute multiple commands.
UPDATE_RESOLV_CONF --update-resolv-conf boolean false no If set to true, the cexec Action will update the /etc/resolv.conf file within the chroot environment with the /etc/resolv.conf from the host.
JSON_OUTPUT --json-output boolean true no If set to true, the cexec Action will log output in JSON format. The defaults to true. If set to false, the cexec Action will log output in plain text format.

Any environment variables you set on the Action will be available to the command you execute. For example, if you set DEBIAN_FRONTEND: noninteractive as an environment variable, it will be available to the command you execute.

Exit codes

The following exit codes or statuses are returned by the cexec Action:

Code Description
0 The cexec Action was executed successfully.
10 The was a failure parsing cli flags and/or env variables.
20 Required cli flags and/or env variables were not specified.
30 The cexec Action failed to execute successfully.