command

You can use the commands key to execute commands on the EC2 instance. The command method maps to the AWS::CloudFormation::Init commands section.

Example

command("create-file",
  command: "touch /tmp/test.txt",
  test: "test -e /tmp/test.txt",
)
command("uptime-command",
  command: "uptime"
)

Generates:

AWS::CloudFormation::Init:
  configSets:
    default:
    - main
  main:
    commands:
      001_create-file:
        command: touch /tmp/test.txt
        test: test -e /tmp/test.txt
      002_uptime-command:
        command: uptime

Command Conveniences

Notice above, lono prepends a padded number in front of the command key as a convenience. This is done so commands are processed in the order you declare them. Lono decorates the command method with other conveniences.

if clause

command("create-file",
  command: "touch /tmp/test.txt",
  if: "[ -e /tmp/test.txt ]",
)

Generates:

AWS::CloudFormation::Init:
  configSets:
    default:
    - main
  main:
    commands:
      001_create-file:
        command: touch /tmp/test.txt
        test: if [ -e /tmp/test.txt ] ; then true ; else false ; fi

unless clause

command("install-jq",
  command: "yum install jq",
  unless: "type jq",
)

Generates:

AWS::CloudFormation::Init:
  configSets:
    default:
    - main
  main:
    commands:
      001_install-jq:
        command: yum install jq
        test: if type jq ; then false ; else true ; fi

Back to DSL Docs