3.8 KiB
Distribute Files
With Hiera it is possible to download files and git repositories as well as to create directories and symlinks.
Create Directories
The files::directories hash specifies directories to be created. The keys of the hash are the absolute pathnames of the directories, the optional value a hash with:
owner: file owner (optional, defaultroot)group: file owner (optional, defaultroot)mode: file permissions (optional, default755)
Parent directories are automatically created with default settings. If that is not desired, a custom definition for each parent directory is required.
Example:
files::directories:
/etc/test1:
/etc/test2/foo/bar:
owner: 'buchel_k'
group: 'unx-nogroup'
mode: '775'
Create Symlinks
The files::symlinks hash is used to configure symlinks. The keys of the hash are the absolute
pathnames of the symlinks, the values of the hash are the corresponding symlink
targets.
Example:
files::symlinks:
'/opt/foo': '/var/lib/foo'
Per default the symlink definitions are not merged over the full Hiera hierarchy, only the most specific definiton is used. To allow merge, set
files::symlinks::merge: true
Then also existing files and symlinks are not overwritten. Also this can be changed with
files::symlinks::force: true
but this is then applies for all symlink definitions.
Create (Text) Files with Specific Content
Textfiles with specific content can be created as follows:
files::files:
/testdir/test/three:
content: |
hello world t
this is a test
Delete Files / Directories
Individual files and directories can be deleted as follows:
files::files:
/testdir/test/two:
ensure: absent
force: true
The option force: true is only needed for directories. For a directory, if absent, the directory will not be deleted (even if it is empty)!
Download Git Repositories
To synchronize a git repository to the host you might list them in the files::git hash. The key is the destination directory and the value is a hash with following options:
url: URL of the public git repository to clonerevision: what branch, tag or commit-hash should be checked out (optional)
Example:
files::git:
/var/test/container-images:
ensure: latest
url: 'https://git.psi.ch/linux-infra/container_images.git'
revision: 'main'
If the ensure is missing, it will initialize the checkout with the default branch, but afterwards leave the checkout as is and not try to ensure that it is on a given revision (branch, tag or commit).
Possible values for ensure are: present, bare, mirror, absent, latest .
More details on the possible values of ensure you can find in this documentation
Note that submodules are automatically initialized.
Download Files
Files to download need to be placed on a git repository on git.psi.ch (internal) or gitlab.psi.ch (DMZ, Extranet, Tier3), where they need to be publicly available.
For configuration in Hiera there is the filecopy::files hash where the keys is the destination path of the file. And the value is another hash with following options:
repo: the Git repository to download frombranch: the Git branch in the repository (optional, defaultmaster)path: the file path inside the repositoryowner: file owner (optional, defaultroot)mode: file permissions (optional, default0644)
Example:
filecopy::files:
'/tmp/test1':
repo: 'talamo_i/copy-file-test'
path: 'abc'
mode: '0600'
owner: 'talamo_i'
Note that the filecopy::files hash is not merged over the hierarchy, so only the most specific one will apply.
This download functionality can be disabled with
base::enable_filecopy: false