我想通过ansible

时间:2016-01-26 23:09:39

标签: jenkins ansible

我正在使用ansible组合开发人员机器。在那台机器上我正在安装詹金斯。

我用ansible创建了jenkins的工作:

- shell: "java -jar {{ jenkins.cli_jar }} -s {{ jenkins.server }} create-job \
      {{ item.name }} < {{ jenkins.jobs_dir }}/{{ item.xml_file }}"
  with_items: "jenkins.jobs"

通过cli等安装插件。

但现在我错过了工作的ssh凭据;我只想要一个用户名为“jenkins”的ssh凭证,并使用“来自Jenkins master~ / .ssh”。

这种类型的凭据是我所说的:

enter image description here

也许是一个时髦的剧本,但我没有找到很多关于它的信息。谢谢你的帮助。

3 个答案:

答案 0 :(得分:9)

您可以在jenkins运行的机器上从命令行使用jenkins客户端:

java -jar jenkins-cli.jar -s http://localhost:8080/ groovy create-credential.groovy

使用create-credential.groovy:

import jenkins.model.*
import com.cloudbees.plugins.credentials.CredentialsScope
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl

def addPassword = { username, new_password ->
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
        com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
        Jenkins.instance
    )

    def c = creds.findResult { it.username == username ? it : null }

    if ( c ) {
        println "found credential ${c.id} for username ${c.username}"
    } else {
        def credentials_store = Jenkins.instance.getExtensionList(
            'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
            )[0].getStore()

        def scope = CredentialsScope.GLOBAL

        def description = ""

        def result = credentials_store.addCredentials(
            com.cloudbees.plugins.credentials.domains.Domain.global(), 
            new UsernamePasswordCredentialsImpl(scope, null, description, username, new_password)
            )

        if (result) {
            println "credential added for ${username}" 
        } else {
            println "failed to add credential for ${username}"
        }
    }
}

addPassword('pinky', 'narf')

这将为用户添加全局凭据&#39; pinky&#39;密码&#39; narf&#39;

答案 1 :(得分:1)

Jenkins凭据插件不允许使用API​​(https://issues.jenkins-ci.org/browse/JENKINS-28407)创建凭据。

一个可行的解决方案是使用您喜欢的浏览器和JMeter代理或Selenium IDE记录凭据创建。并使用JMeter CLI重放它或将Selenium记录的测试保存为groovy脚本。

您还可以查看https://github.com/jenkinsci/credentials-plugin/pull/33

答案 2 :(得分:1)

从插件版本2.1.1开始(2016年6月),这可以通过CLI或REST API实现:

https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc#creating-a-credentials

从该页面: $ cat > credential.xml <<EOF <com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl> <scope>GLOBAL</scope> <id>deploy-key</id> <username>wecoyote</username> <password>secret123</password> </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl> EOF $ curl -X POST -H content-type:application/xml -d @credential.xml \ https://jenkins.example.com/job/example-folder/credentials/store/folder/\ domain/testing/createCredentials