Добавить пользователя Jenkins с Ansible или cURL - PullRequest
0 голосов
/ 31 марта 2020

Я готовлю проект с Дженкинсом в Docker контейнере.

После долгих исследований я не нашел решения, как добавить нового пользователя Jenkins с Ansible или cURL. Есть некоторые предложения (https://linuxacademy.com/community/show/5636-how-to-secure-and-create-users-in-jenkins-using-ansible-playbooks/), но в контейнере Jenkins его вообще нельзя было использовать

Так что я немного реверс-инжиниринг (проверяю запрос в Chrome, сделаю трассировку) Я думаю, что это можно сделать с помощью модуля Ansible uri, так же, как и добавление новых учетных данных (https://getintodevops.com/blog/how-to-add-jenkins-credentials-with-curl-or-ansible)

Вот код результата. Так как он находится во время начальной настройки, для него требуется токен администратора по умолчанию.

path_to_jenkins-home_at_docker_host - это каталог на хосте Docker, который будет смонтирован как дом Дженкинса в контейнере (-v / path_to_jenkins-home_at_docker_host: / var / jenkins_home)

с cURL:

USERNAME="admin"
PASSTOKEN="[content_of_/path_to_jenkins-home_at_docker_host/secrets/initialAdminPassword]"
SERVER="[jenkins_host]"
SRVPORT="8088"
COOKIEJAR=$(mktemp)
AUTH=${USERNAME}:${PASSTOKEN}
APIADDR=${SERVER}:${SRVPORT}
CRUMB=$(curl -u "${AUTH}" --cookie-jar "$COOKIEJAR" "http://${APIADDR}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)")

curl -v -u "${AUTH}" --cookie "$COOKIEJAR" -H "$CRUMB" "http://${APIADDR}"/securityRealm/createAccountByAdmin \
--data 'username=user2&password1=pass&password2=pass&fullname=fullname&email=bubba%40dummy.bg'

с Ansible:

- name: JENKINS-PASSTOKEN | Get initial authentication token
  shell: 'cat /path_to_jenkins-home_at_docker_host/secrets/initialAdminPassword'
  register: admin_auth_token

- name: JENKINS-CTEDENTIALS | Create CRUMB authentication request
  uri:
    url: 'http://localhost:{{ jenkins_port }}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
    user: admin
    password: '{{ admin_auth_token.stdout }}'
    force_basic_auth: yes
    return_content: yes
  register: crumb

- name: JENKINS-CTEDENTIALS | Add Jenkins administration account
  uri:
    method: POST
    url: 'http://localhost:{{ jenkins_port }}/securityRealm/createAccountByAdmin'
    user: admin
    password: '{{ admin_auth_token.stdout }}'
    force_basic_auth: yes
    follow_redirects: all
    headers:
      Jenkins-Crumb: '{{ crumb.content.split(":")[1] }}'
      Cookie: '{{ crumb.set_cookie }}'
    # body: 'username=user2&password1=pass&password2=pass&fullname=fullname&email=bubba%40dummy.bg'
    body: 'username={{ jenkins_user }}&password1={{ jenkins_pass }}&password2={{ jenkins_pass }}&fullname={{ jenkins_fullname }}&email={{ jenkins_email }}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...