Как зашифровать пароль WIndows в Jenkins и передать его на задание Ansible?

Я пытался запустить задание Ansible с моего сервера Jenkins на хост Windows, подключенный к домену. Я пробовал следующее для аутентификации.

Этот первый метод работает, но мой пароль сохранен в виде обычного текста, и я хотел бы его зашифровать:

ansible_user: '[email protected]'
ansible_password: 'myplaintextpassword

Этот второй метод терпит неудачу и дает мне ошибку. По сути, я пытался сохранить пароль домена Windows в секретном текстовом хранилище в Jenkins и просто передать его в задание Ansible как собственную переменную:

ansible_user: '[email protected]'
ansible_password: '{{ jenkins_secret_text_variable }}'

fatal: [myhost.domain.com]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host host.domain.com port 22: Connection timed out\r\n", "unreachable": true}

Третий метод, который я пробовал, — вывести jenkins_secret_text_variable в «vaultpassfile» в Jenkins, а затем использовать флаг Ansible в плагине Jenkins:

--vault-password-file '${WORKSPACE}/vaultpassfile

Этот метод также не работает и дает мне ту же ошибку, что и второй метод. Итак, как правильно зашифровать мой пароль Windows в Jenkins и передать его в мою работу Ansible?


person RaptorPete    schedule 25.02.2019    source источник


Ответы (1)


Взгляните на плагин привязки учетных данных, вы можете указать учетные данные через это уникальный идентификатор в хранилище учетных данных Jenkins, а затем доступ к имени пользователя и/или паролю, хранящимся в учетных данных, например так:

def myCredential = 'abcd-efgh-ijkl-mnop'

withCredentials([[$class; 'UsernamePasswordMultiBinding', credentialsId: myCredential, passwordVariable: 'MY_PASS', usernameVariable: 'MY_USER']]) {

    // MY_PASS and MY_USER are now available as environment variables

}

Затем в своей книге воспроизведения вы можете ссылаться на эти переменные, просматривая их. Например, в файле group_vars у вас может быть:

windows_user: "{{ lookup('env', 'MY_USER') }}"
windows_pass: "{{ lookup('env', 'MY_PASS') }}"
person rjohnston    schedule 25.02.2019