我正在使用基础代码原则构建Jenkins基础结构。作为此过程的一部分,我将预先填充Jenkins的certificate.xml配置,以包括一些全局凭据。
在基础架构启动期间,我使用Ansible填充了该xml文件。呈现后,文件将被推送到Jenkins主目录。 参见下面的示例:
<?xml version='1.1' encoding='UTF-8'?>
<com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@2.1.18">
<domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash">
<entry>
<com.cloudbees.plugins.credentials.domains.Domain>
<specifications/>
</com.cloudbees.plugins.credentials.domains.Domain>
<java.util.concurrent.CopyOnWriteArrayList>
<com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
<scope>GLOBAL</scope>
<id>{{ jenkins_test_user }}</id>
<description>GenericAccount</description>
<username>{{ jenkins_test_user }}</username>
<password>{{ jenkins_test_user_pass }}</password>
</com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
</java.util.concurrent.CopyOnWriteArrayList>
</entry>
</domainCredentialsMap>
</com.cloudbees.plugins.credentials.SystemCredentialsProvider>
但是,当我在文本编辑器中打开certificate.xml时,可以看到纯文本的密码。
我如何让詹金斯掩盖这些密码字段?
请注意,当我使用Jenkins控制台添加新的凭据时,新添加的凭据和所有以前填充的凭据(在Ansible中使用Ansible)都将被屏蔽。
答案 0 :(得分:1)
您可以在xml文件中预设用户和密码哈希。您可能需要为特定用户分别创建一个xml配置。这就是我们所遵循的
答案 1 :(得分:0)
我设法通过在$JENKINS_HOME/init.groovy.d/
目录中放置一个常规脚本来掩盖凭证。该脚本在Jenkins启动时创建了一个虚拟用户(就像我在控制台上所做的那样),因此,该用户将掩盖所有预先填充的凭据。脚本是
import com.cloudbees.plugins.credentials.impl.*;
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.*;
Credentials c = (Credentials) new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "user", "password")
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), c)
但是,理想情况下,我想找到一种掩盖方式,与创建用户掩盖的方式相反。