summaryrefslogtreecommitdiffstats
path: root/doc/70-Import-and-Sync.md
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--doc/70-Import-and-Sync.md88
1 files changed, 88 insertions, 0 deletions
diff --git a/doc/70-Import-and-Sync.md b/doc/70-Import-and-Sync.md
new file mode 100644
index 0000000..a413ab9
--- /dev/null
+++ b/doc/70-Import-and-Sync.md
@@ -0,0 +1,88 @@
+<a id="Import-and-Sync"></a>Import and Synchronization
+======================================================
+
+Icinga Director offers very powerful mechanisms when it comes to fetching data
+from external data sources.
+
+The following examples should give you a quick idea of what you might want to
+use this feature for. Please note that Import Data Sources are implemented as
+hooks in Director. This means that it is absolutely possible and probably very
+easy to create custom data sources for whatever kind of data you have. And you
+do not need to modify the Director source code for this, you can ship your very
+own importer in your very own Icinga Web 2 module.
+
+Examples
+--------
+
+### Import Servers from MS Active Directory
+
+#### Create a new import source
+
+Importing data from LDAP sources is pretty easy. We use MS Active Directory
+as an example source:
+
+![Import source](screenshot/director/08_import-and-sync/081_director_import_source.png)
+
+You must formerly have configured a corresponding LDAP resource in your Icinga Web.
+Then you choose your preferred object class, you might add custom filters, a search
+base should always be set.
+
+The only tricky part here are the chosen Properties. You must know them and you
+are required to fill them in, no way around this right now. Also please choose one
+column as your key column.
+
+In case you want to avoid trouble please make this the column that corresponds to
+your desired object name for the objects you are going to import. Rows duplicating
+this property will be considered erroneous, the Import would fail.
+
+#### Property modifiers
+
+Data sources like SQL databases provide very powerful modifiers themselves. With a
+handcrafted query you can solve lots of data conversion problems. Sometimes this is
+not possible, and some sources (like LDAP) do not even have such features.
+
+This is where property modifiers jump in to the rescue. Your computer names are
+uppercase and you hate this? Use the lowercase modifier:
+
+![Lowercase modifier](screenshot/director/08_import-and-sync/082_director_import_modifier_lowercase.png)
+
+You want to have the object SID as a custom variable, but the data is stored
+binary in your AD? There is a dedicated modifier:
+
+![SID modifier](screenshot/director/08_import-and-sync/083_director_import_modifier_sid.png)
+
+You do not agree with the way Microsoft represents its version numbers? Regular
+expressions are able to fix everything:
+
+![Regular expression modifier](screenshot/director/08_import-and-sync/084_director_import_modifier_regex.png)
+
+#### Preview
+
+A quick look at the preview confirms that we reached a good point, that's the data
+we want:
+
+![Import preview](screenshot/director/08_import-and-sync/085_director_import_preview.png)
+
+#### Synchronization
+
+The Import itself just fetches raw data, it does not yet try to modify any of your
+Icinga objects. That's what the Sync rules have been designed for. This distinction
+has a lot of advantages when it goes to automatic scheduling for various import and
+sync jobs.
+
+When creating a Synchronization rule, you must decide which Icinga objects you want
+to work with. You could decide to use the same import source in various rules with
+different filters and properties.
+
+![Synchronization rule](screenshot/director/08_import-and-sync/086_director_sync_rule_ad_hosts.png)
+
+For every property you must decide whether and how it should be synchronized. You
+can also define custom expressions, combine multiple source fields, set custom
+properties based on custom conditions and so on.
+
+![Synchronization properties](screenshot/director/08_import-and-sync/087_director_sync_properties_ad_host.png)
+
+Now you are all done and ready to a) launch the Import and b) trigger your synchronization
+run.
+
+