I have an error in the post with the uri module.
I need to create a credential for my Vagrant VM on Jenkins via api.
In my tests, I realized that the error is in passing the value of the private key, in this line:
privateKey": “{{ lookup(‘file’, ‘…/.vagrant/machines/protheus/virtualbox/private_key’)}}”
If I pass the value of the private key manually, in just one line the credential is created without errors.
My task:
-
name: Get Private Key Value
debug: msg=“Private Key Value is {{ lookup(‘file’, ‘…/.vagrant/machines/protheus/virtualbox/private_key’)}}” -
name: Get Jenkins Crumb
uri:
url: “{{ master_url }}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)”
user: “{{ master_username }}”
password: “{{ master_password }}”
force_basic_auth: yes
return_content: yes
register: crumb -
name: Create a Jenkins Credential
uri:
method: POST
user: “{{ master_username }}”
password: “{{ master_password }}”
force_basic_auth: yes
#body_format: json
#body_format: form-urlencoded
url: “{{ master_url }}/credentials/store/system/domain/_/createCredentials”
headers:
Jenkins-Crumb: “{{ crumb.content.split(‘:’)[1] }}”
Cookie: “{{ crumb.set_cookie }}”
body: |
json={
“credentials”: {
“scope”: “GLOBAL”,
“id”: “{{ slave_linux_jenkins_cred_id }}”,
“username”: “{{ slave_linux_jenkins_username }}”,
“privateKeySource”: {
“stapler-class”: “com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource”,
“privateKey”: “{{ lookup(‘file’, ‘…/.vagrant/machines/protheus/virtualbox/private_key’)}}”
},
“description”: “Node app-protheus”,
“stapler-class”: “com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey”
}
}
#status_code: 302
validate_certs: no
follow_redirects: yes
#ignore_errors: true
Error:
`
TASK [jenkins : Get Private Key Value] ******************************************************************************************************************************************
ok: [192.168.0.133] => {
“msg”: “Private Key Value is -----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA1HDltyx+rUOngUQEggu2DRj5luG929fBrFhyUTzNmhTfxuO+\nsZbkqvL5OWb5K3cMsBYH2U3LPeN8ag/ERgI3ktEH2L8aOqdCJROYP74zXJpa68Wx\nXPmfOuEsxTbkYUe65Ga7q8mwRMWLFL8mRS85DijbSkpHrrYaMRPKW/zr6P7ciZL6\nXCcMgReNzZiRCKRFWAE3HT6Pd7+BSBluJIXi52Ey2L+Wx38OdvbrStSJcp83YZc8\nJv9uVEVCeeW3NAN0yF8TL6Gbv1o7zIl1dMhLaNIppGU1wGoLZ2jGHHSKj3/MimmpwtWPAhg3V4dM\nblbo8+3V3Z9AsycAiSD7JyECgYEA2CFJla8GeRMGEujruuIVOF+wIdbI5zssic/s\nei/AFpdE71jQNxhCxgD/hjShcxFp18e8N13LCYjZIwUeUaAmH30Vs1Y9YWCFcIiC\nj/Z9rpHem8/4u6EiLfnF2WOY05XHEtRwpFBR+pzSR8F3rQMF4BhOF0zNP6XWwiay\nerwkCqkCgYEApL/F7ewsl+9MoA9Ys6fL6D2DpfKK8Bl3gWVs/wll9TzF2NfGszEx\nnc7axyEFd99qIYb2wcoB4+yjlEQKGxDzMCAjMjAvpQPJ+GCYqGQpFQPNvv/F49ET\nUHni4DBp3RnIWfsOzrqLpRMeGsB1+pnphhytbFdNirLjgXj6MFMWZB4=\n-----END RSA PRIVATE KEY-----”
}
TASK [jenkins : Get Jenkins Crumb] **********************************************************************************************************************************************
ok: [192.168.0.133]
TASK [jenkins : Create a Jenkins Credential] ************************************************************************************************************************************
[WARNING]: The value True (type bool) in a string field was converted to ‘True’ (type string). If this does not look like what you expect, quote the entire value to ensure it
does not change.
fatal: [192.168.0.133]: FAILED! => {“cache_control”: “must-revalidate,no-cache,no-store”, “changed”: false, “connection”: “close”, “content”: “\n\n<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\nError 400 Nothing is submitted\n\n
HTTP ERROR 400 Nothing is submitted
\n\n\n\n\n\nURI: | /credentials/store/system/domain/_/createCredentials |
---|---|
STATUS: | 400 |
MESSAGE: | Nothing is submitted |
SERVLET: | Stapler |
<a href="http://eclipse.org/jetty\”>Powered by Jetty:// 9.4.27.v20200227
\n\n\n\n", “content_length”: “527”, “content_type”: “text/html;charset=iso-8859-1”, “elapsed”: 0, “msg”: “Status code was 400 and not [200]: HTTP Error 400: Bad Request”, “redirected”: false, “server”: “Jetty(9.4.27.v20200227)”, “status”: 400, “url”: “http://192.168.0.120:9080/credentials/store/system/domain/_/createCredentials”, “x_content_type_options”: “nosniff”}
PLAY RECAP **********************************************************************************************************************************************************************
192.168.0.133 : ok=6 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
`
Does anyone know what could be wrong with my task?