Skip to content

Examples

See the examples directory in the repo.

Task Examples

File Operations

{
  name = "Create configuration";
  template = {
    src = "nginx.conf.j2";
    dest = "/etc/nginx/nginx.conf";
    backup = true;
  };
  notify = "restart nginx";
}

Service Management

{
  name = "Start services";
  service = {
    name = "{{ item }}";
    state = "started";
    enabled = true;
  };
  loop = ["nginx" "postgresql"];
}

Conditional Tasks

{
  name = "Install SSL certificate";
  copy = {
    src = "ssl/cert.pem";
    dest = "/etc/ssl/certs/";
  };
  when = "ssl_enabled | default(false)";
}

Block Tasks

{
  block = [
    {
      name = "Create user";
      user = {
        name = "deploy";
        state = "present";
      };
    }
    {
      name = "Set up SSH key";
      authorized_key = {
        user = "deploy";
        key = "{{ ssh_public_key }}";
      };
    }
  ];
  rescue = [
    {
      name = "Log error";
      debug.msg = "Failed to create user";
    }
  ];
  always = [
    {
      name = "Cleanup";
      file = {
        path = "/tmp/setup";
        state = "absent";
      };
    }
  ];
}