Как зашифровать пароль Windows в Jenkins и передать его на работу Ansible? - PullRequest
0 голосов
/ 26 февраля 2019

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

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

ansible_user: 'username@domain.com'
ansible_password: 'myplaintextpassword

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

ansible_user: 'username@domain.com'
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?

1 Ответ

0 голосов
/ 26 февраля 2019

Взгляните на плагин привязки учетных данных , вы можете указать учетные данные через их уникальный идентификатор в хранилище учетных данных 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') }}"
...