ansible

Using 'creates' arg in Ansible shell module


When using the "creates" argument in the shell module, can this be a path to a directory? Or does it have to be a file?


Solution

  • Why don't you just try that yourself? The short answer is: Yes it can be anything that is then visible in the file system

    ---
    - name: Test create arg of shell
      hosts: localhost
    
      tasks:
        - name: Set up working area
          shell: mktemp -d
          register: workdir
        - name: Working Area
          debug:
            msg: "{{ workdir }}"
    
        - name: Create a file
          shell: touch {{ workdir.stdout }}/test-file
          args:
            creates: "{{ workdir.stdout }}/test-file"
        - name: "Test if it get's created again"
          shell: touch {{ workdir.stdout }}/test-file
          args:
            creates: "{{ workdir.stdout }}/test-file"
    
        - name: Create a directory
          shell: mkdir {{ workdir.stdout }}/test-directory
          args:
            creates: "{{ workdir.stdout }}/test-directory"
        - name: "Test if it get's created again"
          shell: mkdir {{ workdir.stdout }}/test-directory
          args:
            creates: "{{ workdir.stdout }}/test-directory"
        - name: Cleanup
          shell: "rm -rf {{ workdir.stdout }}"
    
    # vim: set ts=2 sts=2 fenc=utf-8 list: