How to configure LDAP in Nexus3 using groovy script

I installed Sonatype Nexus OSS 3.42.0-01, now I’m trying to configure LDAP using a script.
This is because I need to deploy new servers and automate the configuration

I created this groovy scrip:

import org.sonatype.nexus.ldap.persist.LdapConfigurationManager
import org.sonatype.nexus.ldap.persist.entity.LdapConfiguration
import org.sonatype.nexus.ldap.persist.entity.Connection
import org.sonatype.nexus.ldap.persist.entity.Mapping

def ldapConfigMgr = container.lookup(LdapConfigurationManager.class.getName());
def ldapConfig = new LdapConfiguration()

ldapConfig.setName("MYLDAP")

// Connection
connection = new Connection()
connection.setHost(new Connection.Host(Connection.Protocol.valueOf("ldaps"), "192.168.10.100", Integer.valueOf("636")))
connection.setAuthScheme("simple")
connection.setSystemUsername("uid=appauth,ou=auth,ou=nexus_cicd,ou=Applications,dc=my,dc=domain,dc=local")
connection.setSystemPassword("***********")
connection.setSearchBase("dc=my,dc=domain,dc=local")
connection.setConnectionTimeout(30)
connection.setConnectionRetryDelay(300)
connection.setMaxIncidentsCount(3)
connection.setUseTrustStore(Boolean.valueOf("False"))
ldapConfig.setConnection(connection)


// Mapping
mapping = new Mapping()
mapping.setUserBaseDn("ou=People")
mapping.setLdapFilter("")
mapping.setUserObjectClass("InetOrgPerson")
mapping.setUserIdAttribute("uid")
mapping.setUserRealNameAttribute("cn")
mapping.setEmailAddressAttribute("mail")

// MStatic Mapping
mapping.setLdapGroupsAsRoles(true)
mapping.setGroupBaseDn("ou=groups,ou=nexus_cicd,ou=Apllications")
mapping.setGroupObjectClass("groupOfNames")
mapping.setGroupIdAttribute("cn")
mapping.setGroupMemberAttribute("member")
mapping.setGroupMemberFormat("uid=${username},ou=People,dc=my,dc=domain,dc=local")

mapping.setUserSubtree("True")
mapping.setGroupSubtree("False")

ldapConfig.setMapping(mapping)

ldapConfigMgr.addLdapServerConfiguration(ldapConfig)

I installed Sonatype Nexus OSS 3.42.0-01, now I’m trying to configure LDAP using a script.
This is because I need to deploy new servers and automate the configuration

I created this groovy scrip:

import org.sonatype.nexus.ldap.persist.LdapConfigurationManager
import org.sonatype.nexus.ldap.persist.entity.LdapConfiguration
import org.sonatype.nexus.ldap.persist.entity.Connection
import org.sonatype.nexus.ldap.persist.entity.Mapping

def ldapConfigMgr = container.lookup(LdapConfigurationManager.class.getName());
def ldapConfig = new LdapConfiguration()

ldapConfig.setName("CAuth_LDAP")

// Connection
connection = new Connection()
connection.setHost(new Connection.Host(Connection.Protocol.valueOf("ldaps"), "192.168.10.100", Integer.valueOf("636")))
connection.setAuthScheme("simple")
connection.setSystemUsername("uid=appauth,ou=auth,ou=nexus_cicd,ou=Applications,dc=my,dc=domain,dc=local")
connection.setSystemPassword("***********")
connection.setSearchBase("dc=my,dc=domain,dc=local")
connection.setConnectionTimeout(30)
connection.setConnectionRetryDelay(300)
connection.setMaxIncidentsCount(3)
connection.setUseTrustStore(Boolean.valueOf("False"))
ldapConfig.setConnection(connection)


// Mapping
mapping = new Mapping()
mapping.setUserBaseDn("ou=People")
mapping.setLdapFilter("")
mapping.setUserObjectClass("InetOrgPerson")
mapping.setUserIdAttribute("uid")
mapping.setUserRealNameAttribute("cn")
mapping.setEmailAddressAttribute("mail")

// MStatic Mapping
mapping.setLdapGroupsAsRoles(true)
mapping.setGroupBaseDn("ou=groups,ou=nexus_cicd,ou=Apllications")
mapping.setGroupObjectClass("groupOfNames")
mapping.setGroupIdAttribute("cn")
mapping.setGroupMemberAttribute("member")
mapping.setGroupMemberFormat("uid=${username},ou=People,dc=my,dc=domain,dc=local")

mapping.setUserSubtree("True")
mapping.setGroupSubtree("False")

ldapConfig.setMapping(mapping)

ldapConfigMgr.addLdapServerConfiguration(ldapConfig)

But when I try to run it, I receive errors "unable to resolve class"

# groovy /tmp/script/ldap.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/tmp/script/ldap.groovy: 3: unable to resolve class org.sonatype.nexus.ldap.persist.entity.Connection
 @ line 3, column 1.
   import org.sonatype.nexus.ldap.persist.entity.Connection
   ^

/tmp/script/ldap.groovy: 1: unable to resolve class org.sonatype.nexus.ldap.persist.LdapConfigurationManager
 @ line 1, column 1.
   import org.sonatype.nexus.ldap.persist.LdapConfigurationManager
   ^

/tmp/script/ldap.groovy: 2: unable to resolve class org.sonatype.nexus.ldap.persist.entity.LdapConfiguration
 @ line 2, column 1.
   import org.sonatype.nexus.ldap.persist.entity.LdapConfiguration
   ^

/tmp/script/ldap.groovy: 4: unable to resolve class org.sonatype.nexus.ldap.persist.entity.Mapping
 @ line 4, column 1.
   import org.sonatype.nexus.ldap.persist.entity.Mapping
   ^

/tmp/script/ldap.groovy: 16: unable to resolve class Connection.Host
 @ line 16, column 20.
   connection.setHost(new Connection.Host(Connection.Protocol.valueOf("ldaps"), "10.234.254.9", Integer.valueOf("636")))
                      ^
5 errors

Is it correct my approac?
Or I need to use different tools?
How can fix it?
Where can I download or pass the correct jar?

Please see this answer from a sonatype staff member in a similar question.

In short: don’t use groovy for this, use the REST API.