Tôi muốn tạo một var dựa trên điều kiện nên tôi đã tạo như sau:
máy chủ: kiểm tra
vars: vtarget_backup_folder_in_progress: "{{ "{{ folder }}/{{ target }}/test{{ hostvars['localhost']['tstamp'].stdout }}{{ type }}" if node_type == "master " other "{{ folder }}/{{ target }}/prod{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}" }}"
nhưng nó không thành công với tôi với lỗi dưới đây:
Chúng tôi có thể sai, nhưng điều này có vẻ như là do thiếu dấu ngoặc kép. Luôn trích dẫn dấu ngoặc vuông biểu thức mẫu khi chúng bắt đầu một giá trị. Ví dụ:
with_items:
- {{ foo }}
Nên được viết là:
with_items:
- "{{ foo }}"
bạn có thể vui lòng giúp tôi với điều đó?
CHỈNH SỬA
Tôi đã thử dưới đây:
nhiệm vụ:
- tên: đặt thư mục sao lưu IN_PROGRESS
set_fact:
v_target_backup_folder_in_progress: >-
{% if node_type == "master" %}
"{{ folder }}/{{ target }}/test_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}"
{% khác %}
"{{ folder }}/{{ target }}/prod_{{ hostvars['localhost']['tstamp'].stdout }}_{{ type }}"
{% endif %}
- tên: đảm bảo tồn tại thư mục mục tiêu đang tiến hành
tập tin:
đường dẫn: "{{ v_target_backup_folder_in_progress }}"
trạng thái: thư mục
chủ sở hữu: "{{ app_user }}"
nhóm: "{{ app_user_group }}"
chế độ: u=rwx,g=rwx
nó nhận đúng giá trị của biến khi tôi gỡ lỗi playbook NHƯNG khi tôi kiểm tra v_target_backup_folder_in_progress trên mỗi nút trong số 3 nút mà trò chơi chạy trên đó, tôi thấy có điều gì đó kỳ lạ:
trên một nút, v_target_backup_folder_in_progress không được tạo mặc dù có vẻ như nó được tạo ở chế độ gỡ lỗi nhưng khi tôi đi đến cùng một đường dẫn, tôi không thể tìm thấy thư mục!
trên 2 nút còn lại, v_target_backup_folder_in_progress được tạo nhưng dưới dạng tệp! không phải là một thư mục mặc dù nó dường như được tạo trong chế độ gỡ lỗi dưới dạng một thư mục.
Vậy tại sao điều này xảy ra ?