Actions

add_config

main(attributes)[source]

Appends config section to startup-config.

This action is dual-supervisor compatible.

url

path to source config/template

substitution_mode

loose|strict (default: loose)

variables

list of value substitutions

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: add_config
  attributes:
    url: files/templates/ma1.template
    variables:
      ipaddress: allocate('mgmt_subnet')
  name: "configure ma1"
  onstart: "Starting to configure ma1"
  onsuccess: "SUCCESS: ma1 configure"
  onfailure: "FAIL: IM provisioning@example.com for help"

copy_file

main(attributes)[source]

Copies file to the switch.

Copies file based on the values of ‘src_url’ and ‘dst_url’ attributes (‘dst_url’ should point to the destination folder).

This action is NOT dual-supervisor compatible.

src_url

path to source file

dst_url

path to destination

mode

octal mode for destination path

overwrite

replace|if-missing|backup (default: replace)

‘overwrite’ values:
  • ‘replace’: the file is copied to the switch regardless of whether there is already a file with the same name at the destination;
  • ‘if-missing’: the file is copied to the switch only if there is not already a file with the same name at the destination; if there is, then the action is a no-op;
  • ‘backup’: the file is copied to the switch; if there is already another file at the destination, that file is renamed by appending the ‘.backup’ suffix
Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: copy_file
  always_execute: true
  attributes:
    dst_url: /mnt/flash/
    mode: 777
    overwrite: if-missing
    src_url: files/automate/bgpautoinf.py
  name: "automate BGP peer interface config"

install_cli_plugin

main(attributes)[source]

Installs CliPlugin.

This action is NOT dual-supervisor compatible.

url

path to the CliPlugin

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: install_image
  always_execute: true
  attributes:
    url: files/my_cli_plugin
  name: "install cli plugin"

install_extension

main(attributes)[source]

Installs extension.

If ‘force’ is set, then the dependency checks are overridden.

This action is NOT dual-supervisor compatible.

url

path to source extension file

force

ignore validation errors (default: false)

always_execute

perform copy even if file exists

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: install_extension
  always_execute: true
  attributes:
    url: files/telemetry-1.0-1.rpm
  name: "Install Telemetry"

install_image

main(attributes)[source]

Installs new software image.

If the current software image is the same as the ‘version’ attribute value, then this action is a no-op. Otherwise, the action will replace the existing software image.

For dual supervisor systems, the image on the active supervisor is used as reference.

This action is dual-supervisor compatible.

url

path to source image file

version

EOS version of new image file

downgrade

Boolean - Should EOS images be downgraded to match? (Default: True)

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: install_image
  always_execute: true
  attributes:
    url: files/images/vEOS.swi
    version: 4.13.5F
    downgrade: true
  name: "validate image"
  onstart: "Starting to install image"
  onsuccess: "SUCCESS: 4.13.5F installed"
  onfailure: "FAIL: IM nick@example.com for help"

replace_config

main(attributes)[source]

Replaces /mnt/flash/startup-config with new file.

This action is dual-supervisor compatible.

url

path to source config/template

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: replace_config
  attributes:
    url: files/configs/tor-startup-config
  name: "tor config"

send_email

main(attributes)[source]

Sends an email using an SMTP relay host

Generates an email from the bootstrap process and routes it through a smarthost. The parameters value expects a dictionary with the following values in order for this function to work properly.

{
    'smarthost':   <hostname of smarthost>,
    'sender':      <from email address>
    'receivers':   [ <array of recipients to send email to> ],
    'subject':     <subject line of the message>,
    'body':        <the message body>,
    'attachments': [ <array of files to attach> ],
    'commands':    [ <array of commands to run and attach> ]
}

The required fields for this function are smarthost, sender, and receivers. All other fields are optional.

This action is dual-supervisor compatible.

Parameters:
  • attributes (list) – list of attributes; use attributes.get(<ATTRIBUTE_NAME>) to read attribute values
  • node (internal) – attributes.get(‘NODE’) API: see documentation
  • smarthost – hostname of smarthos>,
  • sender – from email addres>
  • receivers – [ <array of recipients to send email to> ]
  • subject – subject line of the message
  • body – the message body
  • attachments – [ <array of files to attach> ]
  • commands – [ <array of commands to run and attach> ]

Example

-
  action: send_mail
  attributes:
      smarthost: smtp.example.com
      from: noreply@example.com
      subject: This is a test message from a switch in ZTP
      receivers:
          bob@exmple.com
          helen@example.com
      body: Please see the attached 'show version'
      commands: show version

run_bash_script

main(attributes)[source]

Runs a script in EOS from bash.

This action is dual-supervisor compatible.

url

path to source script/template

variables

optional – list of value substitutions (for a script template)

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: run_bash_script
  attributes:
    url: files/scripts/install_script
    variables:
      version: 1.2.3
  name: 'install temp package'

run_cli_commands

main(attributes)[source]

Runs a set of EOS commands, starting from enable mode.

This action is dual-supervisor compatible.

url

path to source command list/template

variables

optional – list of value substitutions (for a template)

Special_attributes:
NODE: API object - see documentation for details

Example

-
  action: run_cli_commands
  attributes:
    url: files/templates/ma1.template
    variables:
      ipaddress: allocate('mgmt_subnet')
  name: 'configure ma1'