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?
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.
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.
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.
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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With