Điểm:0

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

lá cờ 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?

Điểm:0
lá cờ ng

Có hai tùy chọn để thực hiện hành vi mong muốn:

Coi biến đối số là danh sách

Trong khi tạo các đối số coi chúng là cấu trúc (bản đồ danh sách trong ví dụ của tôi). Bạn có thể thêm hoặc xóa bất kỳ tính năng/đối số nào tùy thuộc vào trường hợp sử dụng của bạn. Cách tiếp cận này thêm một số phức tạp mặc dù:

- tên: đặt đối số mặc định
  set_fact:
    đối số_map:
      ĐỊA CHỈ:
      - tính năng1
      - tính năng2
- tên: đặt tính năng3
  set_fact:
    đối số_map: "{{ đối số_map | kết hợp ({'ADDLOCAL': ['feature3']}, recursive=True, list_merge='append') }}"
- tên: đặt tính năng4
  set_fact:
    đối số_map: "{{ đối số_map | kết hợp({'ADDLOCAL':['feature4'], 'RABBIT_LOCAL_PORT':5672, 'RABBIT_QUEUE_NAME':'test'}, recursive=True, list_merge='append') }}"
- tên: tạo chuỗi đối số
  set_fact:
    đối số: "{% cho đối số trong đối số_map | dict2items %}{{ đối số['key'] }}={{ (đối số['giá trị'] | tham gia(',')) if (đối số['giá trị'] | type_debug == 'danh sách') khác (đối số ['giá trị']) }} {% endfor %}"
- gỡ lỗi:
    var: đối số

Điều này tạo ra chuỗi sau:

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

Bạn có thể di chuyển tất cả các bộ được xác định trước sang tệp var để dễ đọc.

Dần dần nối vào chuỗi đối số

Đơn giản hơn nhưng kém linh hoạt hơn:

- tên: đặt đối số mặc định
  set_fact:
    đối số: 'ADDLOCAL=DB,Agent'
- tên: đặt tính năng1
  set_fact:
    đối số: "{{ đối số + ', tính năng1' }}"
- tên: đặt tính năng2
  set_fact:
    đối số: "{{ đối số + ', tính năng2' }}"
- tên: đặt đối số bổ sung
  set_fact:
    đối số: "{{ đối số + ' RABBIT_LOCAL_PORT=5672 RABBIT_QUEUE_NAME=test' }}"
  khi nào: đối số là tìm kiếm ('feature2')
- gỡ lỗi:
    var: đối số

Sản xuất chuỗi sau:

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

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.