User Group Source plugins allow you to add roles to a user when the user logs in.
Create a user group source plugin and install it like other Rundeck plugins.
When a user logs in, your plugin will be called with the user's username and will add any roles you have designated to the user.
To configure your plugin you can add configuration values to the framework scope.
Framework scope property definition in framework.properties
framework.plugin.UserGroupSource.[your_plugin_name].[property]=value
Please note you cannot configure this plugin at a project level because it executes before any project information is applicable.
package example;
import com.dtolabs.rundeck.core.plugins.Plugin;
import com.dtolabs.rundeck.plugins.ServiceNameConstants;
import com.dtolabs.rundeck.plugins.user.groups.UserGroupSourcePlugin;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Plugin(name = "example-user-group-source-plugin",service= ServiceNameConstants.UserGroupSource)
public class ExampleUserGroupSourcePlugin implements UserGroupSourcePlugin {
List<String> groups = new ArrayList<>();
public ExampleUserGroupSourcePlugin() {
groups.add("RUNDECK_USER"); //This group would get added to all users
}
@Override
public List<String> getGroups(final String username, final Map<String, Object> config) {
//Check username and add groups from your datasource
if(username.equals("bob")) {
groups.add("PROJECT_MANAGER");
} else if(username.equals("alice")) {
groups.add("ENGINEERING");
}
return groups;
}
}
Roles will be picked up from the script between the markers ==START_GROUPS==
and ==END_GROUPS==
.
Echo one role name per line.
#!/usr/bin/env bash
echo "==START_GROUPS=="
echo "role1"
echo "role2"
echo "==END_GROUPS=="