Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 513
darksideofthesun Avatar asked Feb 12 '15 03:02

darksideofthesun


People also ask

How does ansible shell work?

Ansible's shell module executes shell commands on remote hosts. By default, the shell module uses the /bin/sh shell to execute commands, but it's possible to use other shells such as /bin/bash by passing the executable argument.

Which of the following is used for privilege escalation in ansible?

Ansible allows you to 'become' another user, different from the user that logged into the machine (remote user). This is done using existing privilege escalation tools such as sudo , su , pfexec , doas , pbrun , dzdo , ksu , runas and others.

Which of the following can be used to alter how commands run in ansible?

You can change and specify the directory path where you want to run the command using the chdir parameter. This parameter is available for both command and shell module.


1 Answers

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:
like image 167
Martin M. Avatar answered Sep 28 '22 01:09

Martin M.