ansible: я хочу использовать group_var, когда у меня есть определенное JOB_NAME в jenkins

#jenkins #ansible

#дженкинс #ansible

Вопрос:

Поскольку JOB_NAME доступен как переменная в Jenkins job.

Я хочу, чтобы определенная переменная выбиралась, когда в переменной JOB_NAME есть определенная строка

таким образом, на основе разных заданий jenkins я могу регистрировать разные переменные.

Я пытаюсь что-то сделать, как показано ниже, в group_vars, не уверен, сработает ли это.

 command: echo "{{ lookup('env','JOB_NAME') }}"
      register: jenkins_job_name
when: installation in jenkins_job_name
  - topology: topology-02
  

Ответ №1:

Вы можете определить список доступных топологий где-нибудь в ваших групповых переменных, а затем выбрать одну со значением, set_fact зависящим от JOB_NAME .

Например:

 - hosts: localhost
  gather_facts: no
  vars:
    topologies:
      prod: foo
      dev: bar
  tasks:
    - set_fact: topology="{{ topologies[lookup('env','JOB_NAME')] | default('unknown') }}"
    - debug: var=topology
  

Это установит:

  • topology=foo если JOB_NAME=prod
  • topology=bar если JOB_NAME=dev
  • topology=unknown в противном случае

У вас может быть объект конфигурации сложной топологии вместо простых foo / bar строк.