Issue
- How to create a Kubernetes Team Master programmatically.
Environment
- CloudBees CI (CloudBees Core) on Modern Cloud Platforms
- CloudBees CI (CloudBees Core) on Modern cloud Platforms - Managed Master
- CloudBees CI (CloudBees Core) on Modern cloud Platforms - Operations Center
Resolution
Create Using Groovy
The easiest approach would be by using a Groovy script.
See createTeamMasterK8s.groovy. This script can be modified as needed.
If you need access to the source code then please see Custom Plugins: APIs and Javadocs of CloudBees Jenkins Enterprise plugins
The classes used in the provided script are coming from the operations-center-server plugin.
You can find your version of the plugin by looking at the Plugin Manager on the CJOC instance and searching for operations-center-server
under the Installed tab.
Create via the Script Console
You can execute the groovy script using the Script Console under Managed Jenkins > Script Console.
Create via the Jenkins CLI
You can execute a groovy script via the groovy
command and passing the script to the standard input:
java -jar jenkins-cli.jar \
-auth $USER:$TOKEN \
-s $CJOC_URL/ \
groovy = < createManagedMasterK8s.groovy
Create via the REST API
You can execute a groovy script via the /scriptText
endpoint and pass the script via a bash command:
curl -v -XPOST \
-u $USER:$TOKEN \
--data-urlencode "script=$(<./createManagedMasterK8s.groovy)" \
"$CJOC_URL/scriptText"
See Script Console - Remote Access for more details.
Create remotely using config files
You can also create a Team Master remotely, by either using the REST API, or by using the Jenkins CLI to create the job.
This approach is a bit cumbersome, as some fields are auto-generated (id
, idName
, grantId
, identity
, encodedName
) and must be unique. This means that several calls must be made to adjust a master configuration.
You would need to do the following:
- Create the Team Master
- Get the Managed Master config file (the
config.xml
) - Update the config file (preserve auto-generated fields)
- Post the updated config file
Create via the Jenkins CLI
You need to create a config.json
to pass to the teams
command.
The following is an example of a JSON configuration for a team master:
{
"data": {
"displayName": "Test from CLI",
"icon": {
"color": "#dd6669",
"name": "hexagons"
},
"members": [
{
"id": "admin",
"roles": [
"TEAM_ADMIN"
]
}
],
"name": "test-from-cli",
"provisioningRecipe": "basic"
},
"version": "1"
}
And you can create this Team Master with the following command:
java -jar jenkins-cli.jar \
-auth $USER:$TOKEN \
-s $CJOC_URL/ \
teams "test-from-cli" --put < config.json
Create via the REST API
You need to create a config.json
to pass to the /blue/rest/cjoc/teams/
endpoint.
The following is an example of a JSON description for a team master:
{
"displayName": "Test From Rest Api",
"icon": {
"color": "#dd6669",
"name": "hexagons"
},
"members": [
{
"id": "allan",
"role": "TEAM_ADMIN"
}
],
"name": "test-from-restapi",
"recipe": "basic"
}
And you can create this team master with the following command:
curl -v -XPOST \
-u $USER:$TOKEN \
-H "Content-Type: application/json" \
--data-binary @config.json \
"$CJOC_URL/blue/rest/cjoc/teams/"
0 Comments