Skip to content

grlx.ingredients.file

The file ingredient handles all file operations on various file providers (such as local files, HTTP, etc.)

Deletes a file or directory

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file to delete

file.absent:
name: ~/.config/systemd/user/backup.service

Appends content to a file. Only appends the content if it doesn’t exist.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes| the name/path of the file to append to | text | string | no | the text to append to a file | makedirs | bool | no | create parent directories if they do not exist | source | string | no | append lines from a file sourced from this path/URL | source_hash | string | no | hash to verify the file specified by source | template experimental| bool | no | treat this file as a template and render it before placing | sources | string/list | no | appends all content specified in list, checked in order | source_hashes | string/list | no | corresponding hashes for sources

file.append:
- name: /etc/profile
- text: |
export PATH=$PATH:/usr/local/go/bin

Validates if a file is cached in the sprout’s cache. If it isn’t the file will be cached.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the path describing where to save the cached file | source | string | yes | a file source (such as HTTP, file, etc.) to reference | hash | string | conditional (required if skip_verify is false) | a valid hash of the source file | skip_verify | boolean | no | whether to skip hash validation, false by default

file.cached:
- name: /tmp/cachedfile
- source: https://go.dev/dl/go1.21.3.src.tar.gz
- hash: sha256=186f2b6f8c8b704e696821b09ab2041a5c1ee13dcbc3156a13adcf75931ee488

Checks if a file contains a given selection. If multiple sources are provided, all must be satisfied.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file to check | text | string | no |the item to search for | source | string | no | a file source (such as HTTP, file, etc.) to reference | source_hash | string | conditional (required if source provided) | a hash for a given source | sources | list | no | a list of sources to check against | source_hashes | list | conditional (required if skip_verify is false) | a list of source hashes | skip_verify | boolean | no | whether to skip hash validation, false by default | template experimental| bool | no | treat this file as a template and render it before placing it

Copies content into a given file

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | Represents the name of a file or directory | makedirs | bool | no (default: false) | Determines whether directories should be created if they don’t exist | source | string | no | Represents a source file’s path or name | source_hash | string | conditional (required if source is provided and skip_verify is false) | Represents the hash of a source file, used for verification | text | string/list | no | Represents the content of a file. Can be a single string or a list of items | sources | list | no | Represents multiple source files | template experimental| bool | no | treat this file as a template and render it before placing it | skip_verify | boolean | no | whether to skip hash validation, false by default | source_hashes | list | conditional (required if sources is provided and skip_verify is false) | Represents the hashes for the multiple source files mentioned in sources

file.content:
- name: /srv/nginx/nginx.conf
- makedirs: true
- text: |
server {
listen 8080;
root /data/up1;
location / {
}
}

Handles many directory operations. Ensures that a directory exists with the given permissions.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the directory | makedirs | bool | no |option to make directory if it doesn’t exist, defaults to true | user | string | no |the user who will own the directory | group | string | no |the group who will own the directory | dir_mode | string | no |the directory mode | file_mode | string | no |the file mode to set | recurse | bool | no |whether to recurse the directories and apply permissions

file.directory:
- name: /tmp/item
- makedirs: false
- user: grlx
- group: grlx
- dir_mode: 755
- recurse: false

Checks if a file exists.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file

file.exists:
- name: /tmp/exists

Manage many properties of a file concurrently, safely

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | Represents the name of a file or directory | source | string | no | Represents a source file’s path or name | source_hash | string | conditional (required if skip_verify is false) | Represents the hash of a source file, used for verification | user | string | no |the user who will own the directory | group | string | no |the group who will own the directory | mode | string | no |the file’s mode | template experimental| bool | no | treat this file as a template and render it before placing it | makedirs | bool | no (default: false) | Determines whether directories should be created if they don’t exist | dir_mode | string | no |the directory mode | text | string/list | no | Represents the content of a file. Can be a single string or a list of items | sources | list | no | Represents multiple source files | skip_verify | boolean | no | whether to skip hash validation, false by default | source_hashes | list | conditional (required if sources is provided) | Represents the hashes for the multiple source files mentioned in sources

file.managed:
- name: /srv/nginx/nginx.conf
- makedirs: true
- user: pi
- group: wheel
- text: |
server {
listen 8080;
root /data/up1;
location / {
}
}

Checks if a file is missing.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file

file.missing:
- name: /tmp/missing

Prepends content to a file. Only prepends the content if it doesn’t exist.

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes| the name/path of the file to prepend to | text | string | no | the text to prepend to a file | makedirs | bool | no | create parent directories if they do not exist | source | string | no | prepend lines from a file sourced from this path/URL | source_hash | string | conditional (required if source is provided and skip_verify is false) | hash to verify the file specified by source | skip_verify | boolean | no | whether to skip hash validation, false by default | template experimental| bool | no | treat this file as a template and render it before placing it | sources | string/list | no | list source, but in list format | source_hashes | string/list | no | corresponding hashes for sources

file.prepend:
- name: /etc/profile
- text: |
export PATH=$PATH:/usr/local/go/bin

Creates a symlink at name that points to target

| parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file | target | string | yes | the target path to link to | makedirs | string | no | make parent directories if missing | user | string | no | the user who should own the symlink | group | string | no | the group who should own the symlink | mode | string | no | the desired filemode of the symlink

file.symlink:
- name: ~/localbash
- target: /usr/bin/bash
- user: pi
- group: wheel
- mode: "655"

Performs a touch on a file | parameter | type | required | description | |-----------|------|----------|-------------| | name | string | yes | the name/path of the file | atime | time (RFC339) | no | the access time to set the file to, set to the current time by default | mtime | time (RFC339) | no | the modified time to set the file to, sets to the current time by default | makedirs | bool | yes | whether or not to create any provided parent directories, false by default

file.touch:
- name: /tmp/parent/new-file
- atime: Mon, 06 Nov 2023 00:00:00 +0000
- mtime: Mon, 06 Nov 2023 00:00:00 +0000
- makedirs: true