r22756: Make it easier to setup an LDAP replica. Provision with
authorAndrew Bartlett <abartlet@samba.org>
Tue, 8 May 2007 04:38:16 +0000 (04:38 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:52:15 +0000 (14:52 -0500)
--partitions-only (suggestions for a better name welcome) will setup
the partitions records, but no any data in those partitions.  This can
then point at the already configured remote LDAP server.

Andrew Bartlett
(This used to be commit ee7b06fc832ca7c572205c7c268c3c7c552effa0)

source4/scripting/libjs/provision.js
source4/setup/provision
source4/torture/libnet/libnet_BecomeDC.c

index 6af753e7eb63eaf921f43962402b81740c005d0f..948c02470df868a77aa7a9cf12adbc7d5faa195a 100644 (file)
@@ -453,7 +453,7 @@ function provision_fix_subobj(subobj, message, paths)
        return true;
 }
 
-function provision_become_dc(subobj, message, paths, session_info)
+function provision_become_dc(subobj, message, erase, paths, session_info)
 {
        var lp = loadparm_init();
        var sys = sys_init();
@@ -478,8 +478,10 @@ function provision_become_dc(subobj, message, paths, session_info)
        message("Setting up " + paths.samdb + " rootDSE\n");
        setup_add_ldif("provision_rootdse_add.ldif", info, samdb, false);
 
-       message("Erasing data from partitions\n");
-       ldb_erase_partitions(info, samdb, undefined);
+       if (erase) {
+               message("Erasing data from partitions\n");
+               ldb_erase_partitions(info, samdb, undefined);
+       }
 
        message("Setting up " + paths.samdb + " indexes\n");
        setup_add_ldif("provision_index.ldif", info, samdb, false);
index 168fe8292f8da51a7782bb7c72f5ba6ebf3d9c07..2a3ddecd3ed508dd2fbe9f39ed65d3c149a5bde4 100755 (executable)
@@ -29,6 +29,7 @@ options = GetOptions(ARGV,
                'users=s',
                'quiet',
                'blank',
+               'partitions-only',
                'ldap-base',
                'ldap-backend=s',
                 'ldap-module=s',
@@ -79,6 +80,7 @@ provision [options]
  --users       GROUPNAME       choose 'users' group
  --quiet                       Be quiet
  --blank                       do not add users or groups, just the structure
+ --partitions-only              Configure Samba's partitions, but do not modify them (ie, join a BDC)
  --ldap-base                   output only an LDIF file, suitable for creating an LDAP baseDN
  --ldap-backend LDAPSERVER      LDAP server to use for this provision
  --ldap-module= MODULE          LDB mapping module to use for the LDAP backend
@@ -118,7 +120,7 @@ var blank = (options["blank"] != undefined);
 var ldapbase = (options["ldap-base"] != undefined);
 var ldapbackend = (options["ldap-backend"] != undefined);
 var ldapmodule = (options["ldap-module"] != undefined);
-
+var partitions_only = (options["partitions-only"] != undefined);
 if (options["aci"] != undefined) {
        message("set ACI: %s\n", subobj["ACI"]);
 }
@@ -148,6 +150,8 @@ message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
 message("Using administrator password: %s\n", subobj.ADMINPASS);
 if (ldapbase) {
        provision_ldapbase(subobj, message, paths);
+} else if (partitions_only) {
+       provision_become_dc(subobj, message, false, paths, system_session);
 } else {
        provision(subobj, message, blank, paths, system_session, creds, ldapbackend);
        provision_dns(subobj, message, paths, system_session, creds);
index 827a79a0f05f099de5bceb63ce5bd0bdba829bd7..b164ee4906f55e1dc6460739918e56d8bb385fb6 100644 (file)
@@ -224,7 +224,7 @@ static NTSTATUS test_become_dc_prepare_db(void *private_data,
                "\n"
                "var system_session = system_session();\n"
                "\n"
-               "var ok = provision_become_dc(subobj, message, paths, system_session);\n"
+               "var ok = provision_become_dc(subobj, message, true, paths, system_session);\n"
                "assert(ok);\n"
                "\n"
                "return 0;\n",