From 2331022984e953998a8099efa352650ad9b10e44 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Sun, 23 Jul 2000 01:43:12 +0000 Subject: [PATCH] More updates to intro, quickstart, and config (need to create gifs) --- doc/guide/admin/config.sdf | 76 +++++++++++++------------------ doc/guide/admin/intro.sdf | 10 ++-- doc/guide/admin/intro_dctree.gif | Bin 0 -> 3359 bytes doc/guide/admin/intro_tree.gif | Bin 3086 -> 3491 bytes doc/guide/admin/quickstart.sdf | 24 +++++----- 5 files changed, 49 insertions(+), 61 deletions(-) create mode 100644 doc/guide/admin/intro_dctree.gif diff --git a/doc/guide/admin/config.sdf b/doc/guide/admin/config.sdf index 6024c547a5..9a81942be0 100644 --- a/doc/guide/admin/config.sdf +++ b/doc/guide/admin/config.sdf @@ -4,19 +4,18 @@ H1: The Big Picture - Configuration Choices This section gives a brief overview of various LDAP directory -configurations, and how your LDAP server (either {{I:slapd}} or -{{I:ldapd}}) fits in with the rest of the world. +configurations, and how your stand-alone LDAP server {{I:slapd}} +fits in with the rest of the world. +H2: Local Directory Service -H2: LDAP as a local service only - -In this configuration, you run a {{I:slapd}} which provides directory service -for your local domain only. It does not interact with other directory -servers in any way. This configuration is shown in Figure 2. +In this configuration, you run a {{I:slapd}} which provides directory +service for your local domain only. It does not interact with other +directory servers in any way. This configuration is shown in Figure 3.1. !import "config_local.gif"; align="center"; title="Local service via slapd configuration" -FT[align="Center"] Figure 2: Local service via slapd configuration. +FT[align="Center"] Figure 3.1: Local service configuration. Use this configuration if you are just starting out (it's the one the quick-start guide makes for you) or if you want to provide a local @@ -24,52 +23,41 @@ service and are not interested in connecting to the rest of the world. It's easy to upgrade to another configuration later if you want. - -H2: Local service with X.500 referrals +H2: Local Directory Service with Referrals In this configuration, you run a slapd which provides directory service -for your local domain and an ldapd which provides access to the -X.500 world (you don't have to run the ldapd yourself - you can just -point to somebody else who does and doesn't mind you pointing to -their service). This configuration is shown in Figure 3. - -!import "config_x500ref.gif"; align="center"; title="Local service via slapd + X.500 referrals configuration" -FT[align="Center"] Figure 3: Local service via slapd + X.500 referrals configuration - -Use this configuration if you want to provide local service but still want -to be connected to the rest of the X.500 world. Remember, you don't -necessarily have to be running the ldapd in this picture; you just need -to find one you can point to. - +for your local domain and configure it to return referrals to a +{{superior}} service capable of requests outside your local domain. +You may run this service yourself or use one provided to you. +This configuration is shown in Figure 3.2. +!import "config_ref.gif"; align="center"; title="Local service with referrals" +FT[align="Center"] Figure 3.2: Local service with referrals -H2: LDAP as a front end to X.500 +Use this configuration if you want to provide local service and +participate in the Global Directory. -In this configuration, you run an X.500 service which provides -directory service for your local domain and gatewaying service to the -rest of the X.500 world. LDAP clients gain access to the directory -through an ldapd which runs at your site. This configuration is shown -in Figure 4. -!import "config_x500fe.gif"; align="center"; title="Local service via X.500 and ldapd configuration" -FT[align="Center"] Figure 4: Local service via X.500 and ldapd configuration - -Use this configuration if you are already running an X.500 service. -Slapd is not involved in this configuration, so you can probably stop -reading this guide. +H2: Replicated Directory Service +The slurpd daemon is used to propagate changes from a master slapd +to one or more slave slapds. An example master-slave configuration +is shown in figure 3.3. +!import "config_repl.gif"; align="center"; title="Replicated Directory Services" +FT[align="Center"] Figure 3.3: Replicated Directory Services -H2: Replicated slapd service +This configuration can be used in conjunction with either of first +two configurations in situations where a single slapd does not +provide the required reliability or availability. -The slurpd daemon is used to propagate changes from a master slapd -to one or more slave slapds. An example master-slave configuration -is shown in figure 5. +H2: Distributed Local Directory Service -!import "config_repl.gif"; align="center"; title="Master slapd with two slaves replicated with slurpd" -FT[align="Center"] Figure 5: Master slapd with two slaves replicated with slurpd +In this configuration, the local service is partitioned into smaller +services, each which may be replicated, and {{glued}} together with +{{superior}} and {{subordinate}} referrals. An example of this +configuration is shown in Figure 3.4. -This configuration can be used in conjunction with the first two -configurations in situations where a single slapd does not provide the -required reliability or availability. +!import "config_dist.gif"; align="center"; title="Distributed Local Directory Services" +FT[align="Center"] Figure 3.4: Distributed Local Directory Services diff --git a/doc/guide/admin/intro.sdf b/doc/guide/admin/intro.sdf index ca69b6b921..8dad0a5c6a 100644 --- a/doc/guide/admin/intro.sdf +++ b/doc/guide/admin/intro.sdf @@ -71,14 +71,14 @@ and/or organizational boundaries. Entries representing countries appeared at the top of the tree. Below them are entries representing states and national organizations. Below them might be entries representing organizational units, people, printers, documents, -or just about anything else you can think of. Figure 1 shows an +or just about anything else you can think of. Figure 1.1 shows an example LDAP directory tree using traditional naming. !import "intro_tree.gif"; align="center"; title="LDAP directory tree (traditional naming)" FT[align="Center"] Figure 1.1: LDAP directory tree (traditional naming) The tree may also be arranged based upon Internet domain names. -Figure 2 shows an example using this increasing popular naming approach. +Figure 1.2 shows an example using this increasing popular naming approach. !import "intro_dctree.gif"; align="center"; title="LDAP directory tree (Internet naming)" FT[align="Center"] Figure 1.2: LDAP directory tree (Internet naming) @@ -94,7 +94,7 @@ by taking the name of the entry itself (called the relative distinguished name, or RDN) and concatenating the names of its ancestor entries. For example, the entry for Barbara Jensen in the Internet naming example above has an RDN of {{EX:uid=babs}} and a DN of -{{EX:uid=babs, dc=OpenLDAP, dc=com}}". The full DN format is +{{EX:uid=babs, ou=People, dc=OpenLDAP, dc=com}}". The full DN format is described in RFC 2253, "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names." @@ -204,7 +204,7 @@ requires a full X.500 service to make data available to the many LDAP clients being developed. As with full X.500 DAP clients, a full X.500 DAP server is no small piece of software to run. -The stand-alone LDAP daemon, or {{I:slapd}}, is meant to remove much +The stand-alone LDAP daemon, or {{I:slapd}}(8), is meant to remove much of the burden from the server side just as LDAP itself removed much of the burden from clients. If you are already running an X.500 DAP service and you want to continue to do so, you can probably stop reading this @@ -226,7 +226,7 @@ gateway. H2: What is slurpd and what can it do? -{{I:Slurpd}} is a daemon that helps {{I:slapd}} provide +{{I:Slurpd}}(8) is a daemon that helps {{I:slapd}} provide replicated service. It is responsible for distributing changes made to the master {{I:slapd}} database out to the various {{I:slapd}} replicas. It frees {{I:slapd}} from having to worry that some diff --git a/doc/guide/admin/intro_dctree.gif b/doc/guide/admin/intro_dctree.gif new file mode 100644 index 0000000000000000000000000000000000000000..d802b9557f56fadb989968c667eb67870cbe72a6 GIT binary patch literal 3359 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 literal 0 HcmV?d00001 diff --git a/doc/guide/admin/intro_tree.gif b/doc/guide/admin/intro_tree.gif index 9fdfaf71b7d4b1e581f90599ffa2b0b253ea02e5..01a973ce24ee33a995c64101d5caa0d3b7bbcc33 100644 GIT binary patch literal 3491 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 VXQ$WC7FUkf&y_X*riTLM{{Z5kp)3FZ literal 3086 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