Điểm:1

Các khối có thời gian và bao gồm các tác vụ

lá cờ ru

Tôi đã bắt gặp một chút hành vi kỳ lạ mà tôi không hiểu hết và cho đến nay tôi vẫn chưa thể tìm thấy nội dung nào hữu ích trong tài liệu.

Khi bạn có một "khối:" với điều kiện "khi nào", điều kiện này trên chính khối đó dường như được đưa vào các tác vụ được bao gồm, tại sao?

Ví dụ:

#playbook.yml
- máy chủ: localhost
  nhiệm vụ:
    - chặn:
      - tên: Bao gồm các công cụ
        bao gồm_t task: "set-x.yml"
      khi: x không được xác định
#set-x.yml
- tên: Đặt một sự thật
  set_fact:
    x: foo

- tên: kiểm tra
  gỡ lỗi:
    khác: x

Nếu bạn chạy ví dụ trên, câu lệnh gỡ lỗi hoàn toàn không chạy và đây không phải là điều tôi mong đợi. Tôi hiểu rằng điều kiện khi trên khối sẽ chỉ áp dụng cho việc khối đó có được thực thi hay không. Xóa điều kiện được chuyển sang bên trong tệp include_t task và theo hiểu biết của tôi, đây không phải là cách mà tính năng bao gồm được cho là hoạt động.

Tôi đang thiếu gì?

Điểm:3
lá cờ br

trích dẫn từ Điều kiện với bao gồm:

Khi bạn sử dụng điều kiện trên câu lệnh bao gồm_*, điều kiện chỉ được áp dụng cho chính tác vụ bao gồm chứ không áp dụng cho bất kỳ tác vụ nào khác trong (các) tệp được bao gồm.

Điều này hoạt động như mong đợi

    - bao gồm_tác vụ: set-x.yml
      khi: x không được xác định

Không có tác vụ nào từ tệp đi kèm sẽ được sử dụng

NHIỆM VỤ [bao gồm_tác vụ] ************************************************ **
bao gồm: /export/scratch/tmp8/set-x.yml cho máy chủ cục bộ

Tình hình là khác nhau với khối. trích dẫn từ Nhóm các nhiệm vụ với các khối:

Tất cả các tác vụ trong một khối kế thừa các chỉ thị được áp dụng ở cấp độ khối. ... Chỉ thị không ảnh hưởng đến chính khối đó, nó chỉ được kế thừa bởi các tác vụ được bao quanh bởi một khối. Ví dụ: câu lệnh when được áp dụng cho các tác vụ trong một khối chứ không phải cho chính khối đó.

Nếu bạn đặt bao gồm_task thành một khối

    - chặn:
        - bao gồm_tác vụ: set-x.yml
      khi: x không được xác định

điều kiện được áp dụng cho tất cả các nhiệm vụ. Ngoài ra đối với các tác vụ được bao gồm, do đó ghi đè quy tắc trước đó rằng một điều kiện chỉ được áp dụng cho chính tác vụ được bao gồm.

NHIỆM VỤ [bao gồm_tác vụ] ************************************************ ***
bao gồm: /export/scratch/tmp8/set-x.yml cho máy chủ cục bộ

NHIỆM VỤ [set_fact] ************************************************ ********
được rồi: [máy chủ cục bộ]

NHIỆM VỤ [gỡ lỗi] ************************************************ ************
bỏ qua: [localhost]

mở một số báo nếu bạn nghĩ rằng đây là một lỗi.

user3973227 avatar
lá cờ ru
Chà... đây là một hành vi hơi kỳ lạ và nó trở nên kỳ lạ hơn bởi vì không chỉ khi: điều kiện từ khối đưa nó vào chính câu lệnh include_tasks mà nó CŨNG đưa nó vào từng câu lệnh bên trong tệp được bao gồm và thêm vào tập tin quá. tôi chỉ phát hiện ra điều này vì tôi có một meta: reset_connection kích hoạt cảnh báo cách khối hai cấp về việc không hỗ trợ điều kiện when trên meta:
lá cờ br
Chính xác, đây là điểm!

Đă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.