Điểm:2

Ansible Tìm kiếm tên thư mục mẹ của tệp

lá cờ id

Tôi đang cố lấy thư mục mẹ Tên tệp được xác định theo mẫu.

cơ sở/tool1/sub/test.log
cơ sở/tool2/abc/values.log
cơ sở/tool3/sub/test.log

Tôi muốn nhận mọi đường dẫn tuyệt đối của thư mục, nơi tìm test.log. Vì thế cơ sở/công cụ1/phụ/cơ sở/công cụ3/phụ/ sẽ là kết quả phù hợp mà tôi muốn nhận được.

- tên: "Loop-Playbook"
  máy chủ: tất cả
  nhiệm vụ:

  - name: "Filter File Matches"
    tìm thấy:
      đường dẫn: "/cơ sở"
      file_type: "tập tin"
      lặp lại: "có"
      mẫu: "*test.log"
    đăng ký: files_matched

  - name: "Debug files_matched full"
    gỡ lỗi:
var: files_matched.files

  - tên: "Gỡ lỗi files_matched items"
    gỡ lỗi:
      var: item.path | dirname 
    vòng lặp: "{{files_matched.files| làm phẳng(cấp độ=1) }}"
    loop_control:
      nhãn: "{{ item.path }}"

Tôi đoán, tôi cần phải sử dụng một cái gì đó như {{ item.path | dirname }} nhưng thành thật mà nói, tôi không biết mình phải xác định điều này ở ĐÂU.

có ai giúp tôi ra ngoài không?

Zeitounator avatar
lá cờ fr
`debug: {var: varname}` là gỡ lỗi nội dung biến được xác định bởi `varname`. Trong trường hợp này, bạn muốn sử dụng `debug: {msg: "{{ item.path | dirname }}"}` vì bạn đang tính toán nội dung jinja2 cần được mở rộng. Người ta thường mong đợi bạn cung cấp đầu ra của tập lệnh và mô tả nó khác với những gì bạn mong đợi như thế nào để giúp mọi người hiểu vấn đề của bạn và phát hiện lỗi.
Alien Life Form avatar
lá cờ ru
Nếu bạn muốn đường dẫn *tuyệt đối*, bạn có thể phải làm điều gì đó như thế này: https://stackoverflow.com/questions/53489453/get-absolute-path-of-file-on-local-host
Điểm:1
lá cờ cn

bản đồ () trong Jinja có thể trích xuất các thuộc tính hoặc áp dụng bộ lọc cho một chuỗi. Sử dụng cả hai để chuyển đổi kết quả tìm kiếm trong một chuỗi bộ lọc.

---
- name: "tên cơ sở của kết quả tìm kiếm"
  máy chủ: localhost
  thu thập_facts: Sai

  lọ:
    tập tin kiểm tra:
    - cơ sở/tool1/sub/test.log
    - cơ sở/tool2/abc/values.log
    - cơ sở/tool3/sub/test.log

  nhiệm vụ:
  - tên: "Thiết lập trường hợp thử nghiệm"
    chặn:

    - tệp tạm thời:
        trạng thái: thư mục
      đăng ký: mktemp

    - tập tin:
        đường dẫn: "{{ ( mktemp.path ~ '/' ~ item ) | dirname }}"
        trạng thái: thư mục
      vòng lặp: "{{tệp kiểm tra}}"

    - tập tin:
        đường dẫn: "{{ mktemp.path ~ '/' ~ item }}"
        trạng thái: chạm
      vòng lặp: "{{tệp kiểm tra}}"


  - name: "Filter File Matches"
    tìm thấy:
      đường dẫn: "{{ mktemp.path }}"
      file_type: "tập tin"
      lặp lại: "có"
      # mẫu đã khớp với tên cơ sở
      # Không sử dụng ký tự đại diện ở phía trước, vì vậy chỉ "test.log" khớp
      mẫu: "test.log"
    đăng ký: files_matched

  - name: "Debug files_matched full"
    gỡ lỗi:
       var: files_matched.files
       độ dài: 1

  - tên: "Thư mục được tìm thấy"
    gỡ lỗi:
      msg: "{{ testdirnames }}"
    lọ:
      # bản đồ để trích xuất một thuộc tính
      # bản đồ để áp dụng bộ lọc
      # (nó có thể làm một trong hai)
      # bộ lọc danh sách để sử dụng bất kỳ đối tượng trình tạo nào được trả về bởi Jinja
      testdirnames: "{{ files_matched.files | map(attribute='path') | map('dirname') | list }}"

Đầu ra:

$ ansible-playbook sf1073762.yml

CHƠI [tên cơ sở của kết quả tìm kiếm] ********************************************* *********************************************

NHIỆM VỤ [tempfile] ********************************************** *************************************************** ******
đã thay đổi: [máy chủ cục bộ]

NHIỆM VỤ [tập tin] ************************************************ *************************************************** **********
đã thay đổi: [localhost] => (item=base/tool1/sub/test.log)
đã thay đổi: [localhost] => (item=base/tool2/abc/values.log)
đã thay đổi: [localhost] => (item=base/tool3/sub/test.log)

NHIỆM VỤ [tập tin] ************************************************ *************************************************** **********
đã thay đổi: [localhost] => (item=base/tool1/sub/test.log)
đã thay đổi: [localhost] => (item=base/tool2/abc/values.log)
đã thay đổi: [localhost] => (item=base/tool3/sub/test.log)

NHIỆM VỤ [Lọc tệp phù hợp] ********************************************* ************************************************
được rồi: [máy chủ cục bộ]

NHIỆM VỤ [Debug files_matched full] ********************************************* *********************************************
bỏ qua: [localhost]

NHIỆM VỤ [Thư mục được tìm thấy] ********************************************* *************************************************** ******
được rồi: [máy chủ cục bộ] => {
    "tin nhắn": [
        "/tmp/ansible.Nc0b6i/base/tool1/sub",
        "/tmp/ansible.Nc0b6i/base/tool3/sub"
    ]
}

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