## Format

### Basic file

    ---
    - hosts: production
      remote_user: root
      tasks:
      - ···

Place your modules inside `tasks`.

### Task formats

#### One-line

    - apt: pkg=vim state=present

#### Map

    - apt:
        pkg: vim
        state: present

#### Foldable scalar

    - apt: >
        pkg=vim
        state=present

Define your tasks in any of these formats. One-line format is preferred for short declarations, while maps are preferred for longer.

## Modules

### Aptitude

#### Packages

    - apt:
        pkg: nodejs
        state: present # absent | latest
        update_cache: yes
        force: no

#### Deb files

    - apt:
        deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"

#### Repositories

    - apt_repository:
        repo: "deb https://··· raring main"
        state: present

#### Repository keys

    - apt_key:
        id: AC40B2F7
        url: "http://···"
        state: present

### git

    - git:
        repo: git://github.com/
        dest: /srv/checkout
        version: master
        depth: 10
        bare: yes

See: git module

### git_config

    - git_config:
        name: user.email
        scope: global # local | system
        value: hi@example.com

See: git_config module

### user

    - user:
        state: present
        name: git
        system: yes
        shell: /bin/sh
        groups: admin
        comment: "Git Version Control"

See: user module

### service

    - service:
        name: nginx
        state: started
        enabled: yes     # optional

See: service module

## Shell

    - shell: apt-get install nginx -y

#### Extra options

    - shell: echo hello
      args:
        creates: /path/file  # skip if this exists
        removes: /path/file  # skip if this is missing
        chdir: /path         # cd here before running

#### Multiline example

    - shell: |
        echo "hello there"
        echo "multiple lines"

See: shell module

### script

    - script: /x/y/script.sh
      args:
        creates: /path/file  # skip if this exists
        removes: /path/file  # skip if this is missing
        chdir: /path         # cd here before running

See: script module

## Files

### file

    - file:
        path: /etc/dir
        state: directory # file | link | hard | touch | absent

        # Optional:
        owner: bin
        group: wheel
        mode: 0644
        recurse: yes  # mkdir -p
        force: yes    # ln -nfs

See: file module

### copy

    - copy:
        src: /app/config/nginx.conf
        dest: /etc/nginx/nginx.conf

        # Optional:
        owner: user
        group: user
        mode: 0644
        backup: yes

See: copy module

### template

    - template:
        src: config/redis.j2
        dest: /etc/redis.conf

        # Optional:
        owner: user
        group: user
        mode: 0644
        backup: yes

See: template module

## Local actions

### local_action

    - name: do something locally
      local_action: shell echo hello

### debug

    - debug:
        msg: "Hello {{ var }}"

See: debug module

0 Comments for this cheatsheet. Write yours!