簡體   English   中英

如何在Jenkins中加密WIndows密碼並將其傳遞給Ansible作業?

[英]How to encrypt WIndows password in Jenkins and pass it to an Ansible job?

我一直在嘗試從我的Jenkins服務器到連接到域的Windows主機上運行Ansible作業。 我嘗試了以下身份驗證。

第一種方法有效,但是我的密碼以純文本格式保存,我想對其加密:

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中將jenkins_secret_text_variable回顯到“ vaultpassfile”中,然后在Jenkins插件中使用Ansible標志:

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

這種方法也失敗了,並且給了我與第二種方法完全相同的錯誤。 那么,在Jenkins中加密Windows密碼並將其傳遞到我的Ansible工作中的正確方法是什么?

看一下憑證綁定插件 ,您可以通過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') }}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM