jancy

Authoring Ansible playbooks in Java

jancy enables you to write strongly-typed, reusable playbooks quickly using the IDE of your choice.

Input
Group webservers = new Group("webservers");

Handler restartNginx = new Handler("Restart nginx")
  .action(new Service()
    .name("nginx")
    .state(Service.State.RESTARTED));
    
Play play = new Play("")
  .hosts(webservers)
  .handlers(restartNginx)
  .tasks(
    new Task("Install prerequisites")
      .action(new Yum()
        .name("{{ item }}")
        .state(Yum.State.PRESENT))
      .withItems(
        "nginx", "php", "php-mysql"),

    new Task("Enable nginx")
      .action(new Service()
        .name("nginx")
        .enabled(true)),

    new Task("Upload site config")
      .action(new File()
        .src("default")
        .dest("/etc/nginx/sites-available/default")
        .mode("0755"))
      .notify(restartNginx));
val webservers = Group("webservers")

val restartNginx = Handler("Restart nginx")
    .action(Service()
        .name("nginx")
        .state(Service.State.RESTARTED))

val play = Play("")
    .hosts(webservers)
    .handlers(restartNginx)
    .tasks(
        Task("Install prerequisites")
            .action(Yum()
                .name("{{ item }}")
                .state(Yum.State.PRESENT))
            .withItems(
                "nginx", "php", "php-mysql"),

        Task("Enable httpd")
            .action(Service()
                .name("nginx")
                .enabled(true)),

        Task("Upload site config")
            .action(File()
                .src("default")
                .dest("/etc/nginx/sites-available/default")
                .mode("0755"))
            .notify(restartNginx))
val webservers = new Group("webservers")

val restartNginx = new Handler("Restart nginx")
  .action(new Service()
    .name("nginx")
    .state(Service.State.RESTARTED))
    
val play = new Play("")
  .hosts(webservers)
  .handlers(restartNginx)
  .tasks(
    new Task("Install prerequisites")
      .action(new Yum()
        .name("{{ item }}")
        .state(Yum.State.PRESENT))
      .withItems(
        "nginx", "php", "php-mysql"),

    new Task("Enable nginx")
      .action(new Service()
        .name("nginx")
        .enabled(true)),

    new Task("Upload site config")
      .action(new File()
        .src("default")
        .dest("/etc/nginx/sites-available/default")
        .mode("0755"))
      .notify(restartNginx))
Output
- name: ''
  hosts: webservers
  handlers:
  - name: Restart nginx
    service: |-
      name='nginx'
      state='restarted'

  tasks:
  - name: Install prerequisites
    yum: |-
      name='{{ item }}'
      state='present'
    with_items:
    - nginx
    - php
    - php-mysql

  - name: Enable nginx
    service: |-
      enabled='yes'
      name='nginx'

  - name: Upload site config
    file: |-
      dest='/etc/nginx/sites-available/default'
      mode='0755'
      src='default'
    notify: Restart nginx