Điểm:0

Làm cách nào để đặt tác vụ chạy cho một nhóm khoảng không quảng cáo cụ thể?

lá cờ uz

Nhiệm vụ sau:

- tên: Tải xuống Jfrog Artifcats
  ansible.windows.win_shell: |
    $ENV:JFROG_CLI_OFFER_CONFIG="false"
    Tải xuống jfrog rt ...
  khi nào: ???

chỉ nên chạy cho các máy được đặt dưới trung tâm bên trong máy chủ ứng dụng tập đoàn

---
tất cả các:
  bọn trẻ:
    nguồn gốc:
      bọn trẻ:
        trung tâm:
          bọn trẻ:
            máy chủ ứng dụng:
              máy chủ:
                vm1.domain.com:
            máy chủ q:
              máy chủ:
                vm2.domain.com:
            máy chủ db:
              máy chủ:
                vm3.domain.com:
        trang trại di động:
          máy chủ:
          bọn trẻ:
            cổng:
              máy chủ:
        miền Nam:
          bọn trẻ:
            Brooklyn:
              máy chủ:
                vm4.domain.com:
              bọn trẻ:
                khách hàng:
                  máy chủ:
                    vm5.domain.com:
                    vm6.domain.com:
        Bắc:
          bọn trẻ:
            Newyork:
              máy chủ:
                vm8.domain.com:
              bọn trẻ:
                khách hàng:
                  máy chủ:
                    vm9.domain.com:

Tôi nên gõ gì dưới dạng điều kiện khi nào để thực hiện điều này? Ngoài ra, nguyên tắc đằng sau tùy chọn cấu hình này là gì?

Semicolon avatar
lá cờ jo
khi nào: inventory_hostname trong máy chủ ứng dụng Không chắc ý của bạn là gì khi "nguyên tắc đằng sau điều này"
lá cờ uz
@Dấu chấm phẩy, tôi muốn biết làm cách nào để tiếp cận được nhóm bị truy nã. Ví dụ: ```appservers``` trong ```center``` hoặc ```gateways``` trong ```mobilefarms``` hoặc tất cả các máy trong ```north```, v.v. ...
Điểm:2
lá cờ jo

Để sử dụng tư cách thành viên nhóm trong điều kiện cho một nhiệm vụ, chơi hoặc chặn, bạn sẽ sử dụng định dạng:

khi nào:ventory_hostname trong nhóm["<tên nhóm>"]

Cụ thể cho câu hỏi ban đầu của bạn:

khi nào:ventory_hostname trong nhóm["appservers"]

Để đạt được tất cả các máy dưới Bắc, bạn chỉ cần thay đổi nó thành: khi nào:ventory_hostname trong nhóm["north"]

Liên quan đến việc làm rõ theo dõi của bạn (chỉ định một nhóm ở một "vị trí" cụ thể), vì tên nhóm phải là duy nhất trong ansible, không cần phải phân biệt cái mà máy chủ ứng dụng nhóm bạn đang đề cập đến, như máy chủ ứng dụng chỉ có thể ở một vị trí.

Nếu bạn cố gắng tạo hai máy chủ ứng dụng các nhóm, chỉ nhóm đầu tiên thực sự được phân tích cú pháp bởi công cụ ansible; bất kỳ nhóm tiếp theo nào có cùng tên sẽ bị bỏ qua. Vì vậy, nếu bạn dự định (trong tương lai) có một máy chủ ứng dụng nhóm dưới Bắc và một máy chủ ứng dụng nhóm dưới miền Nam, bạn sẽ thấy rằng chỉ các thành viên trong nhóm đầu tiên mới được đưa vào.

Trong ansible, cách chúng tôi đạt được điều này (giả định của tôi về những gì bạn có thể muốn trong tương lai), cách an toàn để tiếp tục là thêm máy chủ vào nhiều nhóm như vậy và điều chỉnh giới hạn hoặc điều kiện của bạn một cách thích hợp:

tất cả các:
  bọn trẻ:
    Bắc:
      máy chủ:
        a.domain.com:
        b.tên miền.com:
    miền Nam:
      máy chủ:
        y.domain.com:
        z.domain.com:
    máy chủ ứng dụng:
      máy chủ:
        a.domain.com:
        y.domain.com:
    máy chủ db:
      máy chủ:
        b.tên miền.com:
        z.domain.com:

Trong ví dụ này, nếu bạn muốn tất cả các máy chủ ứng dụng, bạn sẽ chỉ nhắm mục tiêu máy chủ ứng dụng. Nếu bạn chỉ muốn máy chủ ứng dụng bên trong Bắc khu vực, sau đó bạn sẽ đặt giới hạn chơi của mình thành bắc:&máy chủ ứng dụng, hoặc cách khác sử dụng điều kiện

khi nào:
  - inventory_hostname trong nhóm["appservers"]
  -ventory_hostname trong nhóm["phía bắc"]

Trong mọi trường hợp, tôi nghĩ rằng bạn có thể cần xem lại cách cấu trúc khoảng không quảng cáo trong ansible, vì điều đó tôi muốn giới thiệu hướng dẫn sử dụng; cũng có một số tài nguyên tuyệt vời trên các trang web đào tạo khác nhau có thể đi vào chi tiết hơn nhiều.

Để biết thêm thông tin về cách nhắm mục tiêu phức tạp hơn bằng cách sử dụng nhiều nhóm (kết hợp, kết hợp và loại trừ, v.v.), tôi khuyên bạn nên xem lại mục khác này hướng dẫn sử dụng.


Về lưu ý cá nhân, ban đầu tôi nghĩ việc thiết lập rất tẻ nhạt và hạn chế, nhưng khi tôi đã quen với việc sử dụng nó hơn, tôi thực sự thấy nó năng động hơn so với giải pháp thay thế.

lá cờ uz
Cám ơn. ```khi: "'appservers' trong group_names"``` - Đây là định dạng duy nhất tôi thành công với.Tuy nhiên, vẫn không thể xoay sở để chỉ tập trung điều kiện vào ```appservers``` bên trong nhóm chính ```center```. Tôi cần sự tập trung này, bởi vì một số phòng thí nghiệm bao gồm ```appservers``` trong ```mobilefarms``` bầu cử chính - và những máy đó không nên bao gồm phần mềm...
Zeitounator avatar
lá cờ fr
@Hiddai Một nhóm `Sub1` bất cứ nơi nào bạn xác định đó là nhóm **one**. Nếu bạn đưa ra một số định nghĩa về `Sub1` là con của một số nhóm cha. kết quả sẽ là sự kết hợp của tất cả máy chủ/con được xác định ở bất kỳ đâu. Do đó, nhóm `Sub1` với tư cách là con của nhóm `A` sẽ chứa chính xác các máy chủ giống như khi nó là con của nhóm `B`. Xem [câu hỏi/câu trả lời này](https://stackoverflow.com/questions/68746910/).
Zeitounator avatar
lá cờ fr
@Dấu chấm phẩy: ý bạn là `khi nào:ventory_hostname trong nhóm[]` có nghĩa là `khi nào:ventory_hostname in groups['appservers']` trong trường hợp của OP? Dù sao thì giải pháp của bạn cũng không thể hoạt động trừ khi người dùng đã tự xác định var `appservers` (nếu không, bạn sẽ nhận được lỗi `appservers` is undefined). â
lá cờ uz
@Dấu chấm phẩy, @Zeitounator - Bây giờ tôi đã thành công. Sau khi đọc kỹ câu trả lời của @ Dấu chấm phẩy: "tên nhóm phải là duy nhất trong ansible". khi tôi thay đổi nhóm ```appservers``` của trung tâm cụ thể thành một cái gì đó giống như tên ```center_appservers``` - Nó bắt đầu hoạt động như một phép màu. cảm ơn.
Semicolon avatar
lá cờ jo
@Zeitounator, thực sự bạn đã đúng. Tôi vừa viết xong một loạt nhiệm vụ tìm kiếm một chuỗi trong tên máy chủ và cứ tiếp tục gõ. Tôi đã cập nhật đúng cú pháp -- sử dụng ghi chú của bạn, nhưng về cơ bản chỉ sao chép từ màn hình mở mà tôi có.

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