Puncte:0

How to add values to ansible-playbook instead of overwrite it?

drapel uz

As per today, I have the following role, this role simulate a basic installation of the product:

- name: Install Server.msi primary_appserver
  ansible.windows.win_package:
    path: C:\product.msi
    log_path: C:\InstallProduct.log
    arguments:
     ADDLOCAL=DB,Agent
    state: present
  become: true
  become_method: runas
  vars:
    ansible_become_user: "{{ ansible_user }}"
    ansible_become_password: "{{ ansible_password }}"
  when: "'primary_appservers' in group_names"

I want to simulate an "advanced" installation, which I select additional feature in the Installation wizard

I the installation wizard, I can select one or more features, meaining ADDLOCAL argumnet can be: ADDLOCAL=DB,Agent - that's the basic OR ADDLOCAL=DB,Agent,Feature_A OR ADDLOCAL=DB,Agent,Feature_A,Feature_B

Things are become complicated for me, since Feature_C for example demands additional arguments list to install it for example: RABBIT_LOCAL_PORT, RABBIT_QUEUE_NAME, RABBIT_TTL...

Using vars in Ansible or extraVars in Jenkins - overwrite the values in the playbook\role

Is there a way to add the value to the existing value in the playbook\role, so for example when I select to install Feature_a and\or Feature_b - ADDLOCAL value in the role will changed into ADDLOCAL=DB,Agent,Feature_A,Feature_B? or in the second case when I add Feature_C, the ADDLOCAL value in the role will changed into ADDLOCAL=DB,Agent,Feature_C and arguments key will include in addition: RABBIT_LOCAL_PORT, RABBIT_QUEUE_NAME, RABBIT_TTL arguments?

Puncte:0
drapel ng

Există două opțiuni pentru a implementa comportamentul dorit:

Tratează variabila argumente ca o listă

În timp ce generați argumente, tratați-le ca structură (harta listelor din exemplul meu). Puteți adăuga sau elimina orice caracteristici/argumente în funcție de cazul dvs. de utilizare. Această abordare adaugă totuși o oarecare complexitate:

- nume: setați argumente implicite
  set_fact:
    arguments_map:
      ADLOCALE:
      - caracteristica 1
      - caracteristica 2
- nume: set feature3
  set_fact:
    arguments_map: „{{ arguments_map | combine({'ADDLOCAL':['feature3']}, recursive=True, list_merge='append') }}"
- nume: setați caracteristica4
  set_fact:
    arguments_map: „{{ arguments_map | combine({'ADDLOCAL':['feature4'], 'RABBIT_LOCAL_PORT':5672, 'RABBIT_QUEUE_NAME':'test'}, recursive=True, list_merge='append') }}"
- nume: generează șir de argumente
  set_fact:
    argumente: „{% pentru argument în arguments_map | dict2items %}{{ argument['cheie'] }}={{ (argument['valoare'] | join(',')) dacă (argument['valoare'] | type_debug == 'listă') else (argument['valoare']) }} {% endfor %}"
- depanare:
    var: argumente

Aceasta produce următorul șir:

ADDLOCAL=feature1, feature2, feature3, feature4 RABBIT_LOCAL_PORT=5672 RABBIT_QUEUE_NAME=test 

Puteți muta toate seturile predefinite în fișierele var pentru lizibilitate.

Concatenați treptat la șirul de argumente

Mai simplu, dar mai puțin flexibil:

- nume: setați argumente implicite
  set_fact:
    argumente: 'ADDLOCAL=DB,Agent'
- nume: setați caracteristica1
  set_fact:
    argumente: "{{ argumente + ',feature1' }}"
- nume: setați caracteristica2
  set_fact:
    argumente: "{{ argumente + ',feature2' }}"
- nume: setați argumente suplimentare
  set_fact:
    argumente: „{{ argumente + „RABBIT_LOCAL_PORT=5672 RABBIT_QUEUE_NAME=test” }}”
  când: argumente este căutare('feature2')
- depanare:
    var: argumente

Produce următorul șir:

ADDLOCAL=DB,Agent,feature1,feature2 RABBIT_LOCAL_PORT=5672 RABBIT_QUEUE_NAME=test

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.