何来创造";nexus本地用户和角色“;在;sonatype nexus“;使用ansible剧本
我正在进行一项自动化工作,需要使用ansible playbook安装sonatype nexus,并创建nexus用户和角色 到目前为止,我已经使用playbook安装了sonatype nexus,并且我能够登录到应用程序并创建一个“nexus本地用户”。但是,我想使用ansible playbook自动化相同的角色和用户创建(在nexus中)何来创造";nexus本地用户和角色“;在;sonatype nexus“;使用ansible剧本,ansible,nexus,sonatype,nexus3,Ansible,Nexus,Sonatype,Nexus3,我正在进行一项自动化工作,需要使用ansible playbook安装sonatype nexus,并创建nexus用户和角色 到目前为止,我已经使用playbook安装了sonatype nexus,并且我能够登录到应用程序并创建一个“nexus本地用户”。但是,我想使用ansible playbook自动化相同的角色和用户创建(在nexus中) 非常感谢您的帮助。您可以查看ansible thoteam.nexus3 oss角色或安装nexus3并负责其资源调配的角色。为了完全透明,我现在是
非常感谢您的帮助。您可以查看ansible thoteam.nexus3 oss角色或安装nexus3并负责其资源调配的角色。为了完全透明,我现在是这个开源角色的维护者 您需要查看(粘贴在下面作为完整示例): 我不会再粘贴完整的示例,但是还有一个和一个用于角色
您可以查看角色的其余部分以了解更多信息,更具体地说是和 即使您不想使用完整的角色,我认为这仍然是一个很好的开始示例,如果您愿意,可以开发自己的解决方案
希望它能有所帮助。我认为没有任何模块可以直接在sonatype nexus中创建用户。如果可以从nexustrue获得api,您必须使用该api,是的,有一个api可用,我正在使用这些api。您可以在下面的评论中看到它。非常感谢@Zeitounator,我从git hub repo开始使用这个角色。我发现它非常有用,我正在对它进行修改,以自定义供我自己使用。有一个问题,(出于好奇)我问这个角色是nexus的官方页面吗?因为文件和代码非常全面,对于各种需求都非常有用。这个角色与sonatype完全没有关系。如自述文件的历史记录/信用部分所述,它是在宣布维护结束后从a分支出来的。前一个角色以前有一些缺点。正如你将看到的,角色完全不同。谢谢你,明白了,你所扮演的角色是一个大师级的作品。
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import groovy.transform.Field
import org.sonatype.nexus.security.role.RoleIdentifier
import org.sonatype.nexus.security.user.InvalidCredentialsException
import org.sonatype.nexus.security.user.UserManager
import org.sonatype.nexus.security.user.UserNotFoundException
import org.sonatype.nexus.security.user.User
List<Map<String, String>> actionDetails = []
@Field Map scriptResults = [changed: false, error: false]
scriptResults.put('action_details', actionDetails)
authManager = security.securitySystem.getAuthorizationManager(UserManager.DEFAULT_SOURCE)
def updateUser(userDef, currentResult) {
User user = security.securitySystem.getUser(userDef.username)
user.setFirstName(userDef.first_name)
user.setLastName(userDef.last_name)
user.setEmailAddress(userDef.email)
if (user != security.securitySystem.getUser(userDef.username)) {
security.securitySystem.updateUser(user)
currentResult.put('status', 'updated')
scriptResults['changed'] = true
}
Set<RoleIdentifier> existingRoles = user.getRoles()
Set<RoleIdentifier> definedRoles = []
userDef.roles.each { roleDef ->
RoleIdentifier role = new RoleIdentifier("default", authManager.getRole(roleDef).roleId);
definedRoles.add(role)
}
if (! existingRoles.equals(definedRoles)) {
security.securitySystem.setUsersRoles(user.getUserId(), "default", definedRoles)
currentResult.put('status', 'updated')
scriptResults['changed'] = true
}
try {
security.securitySystem.changePassword(userDef.username, userDef.password, userDef.password)
} catch (InvalidCredentialsException ignored) {
security.securitySystem.changePassword(userDef.username, userDef.password)
currentResult.put('status', 'updated')
scriptResults['changed'] = true
}
log.info("Updated user {}", userDef.username)
}
def addUser(userDef, currentResult) {
try {
security.addUser(userDef.username, userDef.first_name, userDef.last_name, userDef.email, true, userDef.password, userDef.roles)
currentResult.put('status', 'updated')
scriptResults['changed'] = true
log.info("Created user {}", userDef.username)
} catch (Exception e) {
currentResult.put('status', 'error')
currentResult.put('error_msg', e.toString())
scriptResults['error'] = true
}
}
def deleteUser(userDef, currentResult) {
try {
security.securitySystem.deleteUser(userDef.username, UserManager.DEFAULT_SOURCE)
log.info("Deleted user {}", userDef.username)
currentResult.put('status', 'deleted')
scriptResults['changed'] = true
} catch (UserNotFoundException ignored) {
log.info("Delete user: user {} does not exist", userDef.username)
} catch (Exception e) {
currentResult.put('status', 'error')
currentResult.put('error_msg', e.toString())
scriptResults['error'] = true
}
}
/* Main */
parsed_args = new JsonSlurper().parseText(args)
parsed_args.each { userDef ->
state = userDef.get('state', 'present')
Map<String, String> currentResult = [username: userDef.username, state: state]
currentResult.put('status', 'no change')
if (state == 'absent') {
deleteUser(userDef, currentResult)
} else {
try {
updateUser(userDef, currentResult)
} catch (UserNotFoundException ignored) {
addUser(userDef, currentResult)
} catch (Exception e) {
currentResult.put('status', 'error')
currentResult.put('error_msg', e.toString())
scriptResults['error'] = true
}
}
scriptResults['action_details'].add(currentResult)
}
return JsonOutput.toJson(scriptResults)
nexus_local_users:
- username: my_user
first_name: my
last_name: user
email: my@user.com
password: "s3cr3t"
roles:
- developers