Jenkins向Ansible Playbook传递参数的方法

161次阅读
没有评论

问题描述

在使用Jenkins时,想要将参数传递给Ansible Playbook。例如,他希望从用户那里获取IP地址,并将这些IP地址传递给Playbook,以便只在这些机器上执行。

解决方案

请注意以下操作可能受版本差异影响,确保做好备份。

要在Jenkins和Ansible Playbook之间传递参数,可以使用Ansible Playbook的 -e 开关。你可以从Jenkins的环境变量中获取参数。如果参数在Jenkinsfile的参数块中定义,那么你需要使用 ${params.foo} 来引用。然后,在Ansible Playbook中,可以通过 {{ foo }} 来访问这个值。

下面是具体的步骤:

  1. 在Jenkins中配置参数:在Jenkins的构建配置中,添加需要的参数,比如 FOO,用于存储IP地址。

  2. 在Jenkins中调用Ansible Playbook:在Jenkins的构建配置中,添加一个步骤,调用Ansible Playbook,并传递参数。使用 -e 开关来传递参数,参数的值为 ${FOO}${params.foo},根据实际情况选择。

以下是一个示例的Jenkinsfile配置:

pipeline {
    agent any
    parameters {
        string(name: 'FOO', description: 'IP Address')
    }
    stages {
        stage('Run Ansible Playbook') {
            steps {
                script {
                    sh "ansible-playbook -e 'foo=${FOO}' your_playbook.yml"
                }
            }
        }
    }
}

在上面的示例中,我们在Jenkinsfile中定义了一个参数 FOO,用于存储IP地址。然后,在执行Ansible Playbook的步骤中,使用 -e 开关将参数传递给Playbook。

这样,你就可以从Jenkins中获取用户输入的IP地址,并将其传递给Ansible Playbook,以便只在指定的机器上执行操作。

正文完