Recursively iterate over directories and add all files as Pillar data.
Example configuration:
ext_pillar:
- file_tree:
root_dir: /path/to/root/directory
follow_dir_links: False
raw_data: False
The root_dir parameter is required and points to the directory where files for each host are stored. The follow_dir_links parameter is optional and defaults to False. If follow_dir_links is set to True, file_tree will follow symbolic links to other directories. Be careful when using follow_dir_links, the current implementation is dumb and will run into infinite recursion if a recursive symlink chain exists in the root_dir!
If raw_data is set to True, it will revert the behavior of the python open() function, which adds a line break character at the end of the file, in this case, the pillar data.
To fill pillar data for each host, file_tree recursively iterates over root_dir/hosts/id (where id is a minion ID), and constructs the same directory tree with contents of all the files inside the pillar tree.
For example, the following root_dir tree:
./hosts/
./hosts/test-host/
./hosts/test-host/files/
./hosts/test-host/files/testdir/
./hosts/test-host/files/testdir/file1.txt
./hosts/test-host/files/testdir/file2.txt
./hosts/test-host/files/another-testdir/
./hosts/test-host/files/another-testdir/symlink-to-file1.txt
will result in the following pillar tree for minion with ID "test-host":
test-host:
----------
files:
----------
another-testdir:
----------
symlink-to-file1.txt:
Contents of file #1.
testdir:
----------
file1.txt:
Contents of file #1.
file2.txt:
Contents of file #2.
To fill pillar data for minion in a node group, file_tree recursively iterates over root_dir/nodegroups/nodegroup (where nodegroup is a minion node group), and constructs the same directory tree with contents of all the files inside the pillar tree. IMPORTANT: The host data take precedence over the node group data
For example, the following root_dir tree:
./nodegroups/
./nodegroups/test-group/
./nodegroups/test-group/files/
./nodegroups/test-group/files/testdir/
./nodegroups/test-group/files/testdir/file1.txt
./nodegroups/test-group/files/testdir/file2.txt
./nodegroups/test-group/files/another-testdir/
./nodegroups/test-group/files/another-testdir/symlink-to-file1.txt
will result in the following pillar tree for minion in the node group "test-group":
test-host:
----------
files:
----------
another-testdir:
----------
symlink-to-file1.txt:
Contents of file #1.
testdir:
----------
file1.txt:
Contents of file #1.
file2.txt:
Contents of file #2.
Find pillar data for specified ID.
Docs for previous releases are available on readthedocs.org.
Latest Salt release: 2015.5.1