Use plain files as an Import Source
============================================================
The following screenshot shows a bunch of `Import Source` definitions defined
in the `Icinga Director` based on the this module:
![Icinga Web 2 Fileshipper](screenshot/fileshipper/01_fileshipper-imports-overview.png)
Hint: This chapter assumes that you are already familiar with the `Icinga Director`
[Import and Sync](https://github.com/Icinga/icingaweb2-module-director/blob/master/doc/70-Import-and-Sync.md) mechanism.
Add a new Import Source
------------------------------------------------------------
Given that, the next steps should be fairly easy. From the Import Source overview
shown above click `Add import source` and choose the `Import from files` option
provided by the `fileshipper` module:
![Add a Fileshipper Import Source](screenshot/fileshipper/02_fileshipper-add-importsource.png)
Choose a File Format
---------------------------------------------------
Next opt for a specific `File Format`:
![Choose a File Format](screenshot/fileshipper/03_fileshipper-choose-format.png)
Some file formats may ask for additional settings like the `CSV` one does:
![CSV file format settings](screenshot/fileshipper/05_fileshipper-csv-details.png)
In case you want to learn more about supported file formats please read the
related [documentation](11-FileFormats.md).
Select Directory and File(s)
---------------------------------------------------------
You are also asked to choose a `Base Directory`:
![Choose a Base Directory](screenshot/fileshipper/04_fileshipper-choose-basedir.png)
Initially, this list is empty. The module doesn't allow you to freely choose any
file on your system. You have to provide a safe set of base directories in your
`fileshipper`'s module config directory, usually `/etc/icingaweb2/modules/fileshipper`.
There you need to create an `imports.ini` that could look as follows:
```ini
[A bunch of files]
basedir = "/var/cache/various_files"
[Puppet facts store (YAML directory)]
basedir = "/var/cache/sample-nodes"
```
Now you are ready to choose a specific file:
![Choose a specific file](screenshot/fileshipper/06_fileshipper-choose-file.png)
For some use-cases it might also be quite useful to import `all files` in a given
directory at once:
Special Use Case: Puppet
-------------------------------------------------------
![Choose a specific file](screenshot/fileshipper/07_fileshipper-whole-directory.png)
The example on the screenshot has been configured to import all hosts from a
Puppet-based environment. If there where a PuppetDB it would have made more sense
to use the [PuppetDB module](https://github.com/Thomas-Gelf/icingaweb2-module-puppetdb).
But without such, the `facts store` on the Puppet Master makes still a good data
source for this task.