【问题标题】:How to use if else in yaml?如何在yaml中使用if else?
【发布时间】:2023-01-05 11:22:05
【问题描述】:

下面是我正在使用的 yaml 的 sn-p。如果变量 ENV 设置为“abc”,我想调用 yaml 说 abc.yml,如果变量(作为参数传递)设置为“xyz”,则调用 xyz.yml。如何在 yaml 中使用 if 条件?

 script:
   - ansible-playbook -i <dir> pqr.yaml --verbose -f 10 -e "ENV=${ENV}.... "
   - ansible-playbook -i <dir> abc.yaml --verbose -f 10 -e "ENV=${ENV}.... "
   - ansible-playbook -i <dir> xyz.yaml --verbose -f 10 -e "ENV=${ENV}.... "
   - ansible-playbook -i <dir> hjk.yaml --verbose -f 10 -e "ENV=${ENV}.... "

【问题讨论】:

    标签: yaml azure-pipelines-yaml


    【解决方案1】:

    你可以,使用conditions

    该示例可能如下所示:

    • 我以输入参数为例,任何变量都可以
    • 我将作业中的脚本分开
    • 添加condition 将处理任何验证,因此可以跳过作业
    parameters:
    
      - name: whatToRunVar
        displayName: 'What should it be: abc or xyz?'
        default: ''
        type: string
    
    jobs:
      - job: pqr
        steps:
        - script: ansible-playbook -i <dir> pqr.yaml --verbose -f 10 -e "ENV=${ENV}.... "
    
      - job: abc
        steps:
        - script: ansible-playbook -i <dir> abc.yaml --verbose -f 10 -e "ENV=${ENV}.... "
        condition: contains('${{ parameters.whatToRunVar}}', 'abc')
    
      - job: xyz
        steps:
        - script: ansible-playbook -i <dir> xyz.yaml --verbose -f 10 -e "ENV=${ENV}.... "l
        condition: contains('${{ parameters.whatToRunVar}}', 'xyz')
        
      - job: hjk
        steps:
        - script: ansible-playbook -i <dir> hjk.yaml --verbose -f 10 -e "ENV=${ENV}.... "
    
    
    

    提交 abcde 作为参数会导致:

    【讨论】:

    • 我们可以在多个脚本之间添加作业吗?实际上,脚本中有多行 ansible-playbook 行,我只需要对 2 行进行条件检查(如问题中所述)。
    • 在两者之间添加其他工作不会有问题,只要他们没有条件。作业abc或xyz的条件部分是让其运行与否,不会影响其他作业
    • 行。而不是相等条件,我想检查子字符串条件。我怎么做 ?
    • 它不是那样工作的。添加作业:脚本中的部分:给出错误。还有其他方法可以实现这一目标吗?
    • 我希望它现在能给你一个想法。我只想要 abc 和 xyz 的条件检查
    【解决方案2】:

    下面的一段代码起到了作用:

     script:
    - if [[ ${ENV} =~ "abc" ]]; then MODULE="abc"; else MODULE="xyz"; fi
    - ansible-playbook -i $CI_PROJECT_DIR/ansible/${HOSTFILE} ${MODULE}_installation.yml --verbose -f 10 -e "ENV=${ENV}...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多