当条件适用于 ansible 角色时

问题描述 投票:0回答:1
- { role: create_env, new_inst_prefix: "{{ build_number }}", nginx_only: yes, when: CREATE_NEW_SOLR_NODES == 'false', when: CREATE_NEW_NGINX_NODES == 'true' } 
- { role: create_env, new_inst_prefix: "{{ build_number }}", solr_only: yes, when: CREATE_NEW_SOLR_NODES == 'true', when: CREATE_NEW_NGINX_NODES == 'false' }

当我为 NGINX 运行作业时,它正在通过,但是,对于 Solr,它失败并出现以下错误,并且我通过 Jenkins 参数传递

nginx_only
CREATE_NEW_SOLR_NODES
solr_only
CREATE_NEW_SOLR_NODES

致命:[127.0.0.1]:失败! => {“failed”:true,“msg”:“条件检查'CREATE_NEW_NGINX_NODES =='true''失败。错误是:评估条件时出错(CREATE_NEW_NGINX_NODES =='true'):'CREATE_NEW_NGINX_NODES'未定义 错误似乎出现在 '/home/jenkins/workspace/all_env_prepare/roles/create_env/tasks/main.yml': 第 3 行,第 3 列,但可能 位于文件的其他位置,具体取决于确切的语法问题。 有问题的行似乎是: - include_vars: group_vars/private_key.yml ^ 这里 “}

我希望当 NGINX 条件通过时,必须运行 NGINX 角色并跳过 Solr 角色,Solr 反之亦然。

amazon-web-services jenkins ansible jenkins-pipeline ansible-2.x
1个回答
0
投票

jenkins 参数大多数情况下不与 env 连接。

将参数传递给环境的最简单方法:

parameters{ 
  string(name:MyParam)
}
environment{
  MY_ENV=params.MyParam
}

或者您可以使用

withEnv()

  node {
      withEnv(['MY_PARAM=true',
               'DB_ENGINE=sqlite']) {
          stage('Build') {
              sh 'printenv'
          }
      }
  }
© www.soinside.com 2019 - 2024. All rights reserved.