Điểm:0

Ansible có điều kiện với các biến và ký tự đại diện

lá cờ au

Bạn đang cố gắng thêm một điều kiện có ký tự đại diện và biến Ansible và nhận được thông báo lỗi. Ý tưởng là kích hoạt yêu cầu api với tên vùng chứa bắt đầu bằng "android-", đây là phần tiếp theo của sách hướng dẫn tạo vùng chứa docker.

Vở kịch của tôi:

---
- tên: di chuyển đại lý android
  máy chủ: máy chủ1; máy chủ2
  lọ:
    vùng chứa: "{{ vùng chứa }}" #variable trong một tệp khác

nhiệm vụ:
    - tên: di chuyển đại lý Android
      lệnh: cuộn tròn "yêu cầu api tới máy chủ"
      khi nào: "containers.startswith('android-*')"

lỗi:

NHIỆM VỤ [đại lý di chuyển Android] ********************************************* **********
  gây tử vong: [máy chủ1]: KHÔNG THÀNH CÔNG! => {"thông điệp": "Kiểm tra điều kiện 'containers.startswith('android-*')' không thành công. Lỗi là: lỗi trong khi đánh giá điều kiện (containers.startswith('android-*')): 'đối tượng danh sách' không có thuộc tính 'startswith'\n\nCó vẻ như lỗi nằm trong '/directory/were/the/playbook/is/move-agent-android.yml': dòng 13, cột 7, nhưng có thể\nở nơi khác trong tệp tùy thuộc vào vấn đề cú pháp chính xác.\n\nDòng vi phạm có vẻ là:\n\n\n - tên: tác nhân di chuyển Android\n ^ tại đây\n"}

Tôi đã cố gắng thay đổi các điều kiện thành các phiên bản khác nhau và tất cả đều gặp lỗi giống nhau.

Các phiên bản khác:

khi: "vùng chứa khớp ('android-*')"

khi nào: item.name.startswith('android-*')

khi: "{{container }}" khớp với('android-*')

Bất kỳ ý tưởng làm thế nào để giải quyết lỗi?

Điểm:1
lá cờ br

Cố gắng

khi: "các thùng chứa khớp với nhau ('^android-.*$')"

Nó là một biểu thức chính quy của Python. Dấu chấm '.' đã bị mất ở phía trước của ngôi sao '*'. Ngoài ra, bạn cần bắt đầu '^' và kết thúc "$" biểu thức trong trường hợp khớp.

flowerysong avatar
lá cờ th
Mặc dù điều đó không ảnh hưởng gì, nhưng về mặt kỹ thuật, bạn chỉ cần neo phần cuối cho `match`, vì nó được neo hoàn toàn vào phần đầu. Trong trường hợp cụ thể này, neo cuối cũng vô nghĩa, vì `.*` sẽ luôn khớp với cuối. Giải pháp đơn giản nhất thực sự là bỏ qua `*`: `is match('android-')` sẽ khớp với tất cả các chuỗi bắt đầu bằng `android-`, đây là kết quả mong muốn.
lá cờ br
Xem [Nhận xét để làm gì và khi nào tôi không nên nhận xét?](https://meta.stackexchange.com/questions/19756/how-do-comments-work). Bạn không yêu cầu làm rõ, thông tin không nhỏ cũng không nhất thời và tôi sẽ không "cải thiện" bài đăng về lời chỉ trích "mang tính xây dựng" của bạn.Không lý luận. Tôi đề nghị bạn gửi câu trả lời của bạn.
flowerysong avatar
lá cờ th
Đó là lời chỉ trích mang tính xây dựng về cách bạn có thể cải thiện bài đăng của mình. Bạn không bắt buộc phải lấy nó.
lá cờ br
Điều gì ngăn cản bạn đăng câu trả lời của mình?

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