Điểm:0

Tệp nhiệm vụ, với các chỉ thị được chia sẻ

lá cờ co

Làm thế nào tôi có thể thiết lập chỉ thị được chia sẻ giữa tất cả các nhiệm vụ trong tệp, trong tệp phân đoạn Ansible playbook chỉ chứa các nhiệm vụ?

# ansible/inventory/roles/os_packages/tasks/main.yaml

- tên: "APT: Cập nhật các gói có sẵn từ kho Debian"
  thu thập_facts: sai
  trở thành sự thật
  trở thành_user: gốc
  đúng cách:
    update_cache: đúng
- tên: "APT: Cài đặt các gói cần thiết"
  thu thập_facts: sai
  trở thành sự thật
  trở thành_user: root
  đúng cách:
    Tên:
      - foo
      - quán ba

Những chỉ thị lặp đi lặp lại â thu thập_sự kiện, trở thành, v.v. â nên được nêu một lần trong tệp đó. Nhưng ở đâu, vì (hiện tại?) Không có tệp nào đại diện cho vai trò hoặc cách chơi?

# ansible/inventory/roles/os_packages/tasks/main.yaml

# Điều này không hoạt động vì Ansible chỉ mong đợi các tác vụ.
thu thập_facts: sai
trở thành sự thật
trở thành_user: root

- tên: "APT: Cập nhật các gói có sẵn từ kho Debian"
  đúng cách:
    update_cache: đúng
- tên: "APT: Cài đặt các gói cần thiết"
  đúng cách:
    Tên:
      - foo
      - quán ba

Tệp chỉ cần bao gồm một chuỗi các tác vụ; cấp độ âvai hoặc cấp độ âplayâ dường như không có vị trí thích hợp trong cấu trúc thư mục được đề xuất này.

Nếu toàn bộ vở kịch nằm trong một tệp, thì mỗi vở kịch sẽ có tên riêng và tôi sẽ đặt các lệnh trên vở kịch. Nhưng những tệp nhiệm vụ này đang được thu thập và biên dịch, và không có nơi nào có vở kịch để tôi viết những chỉ thị đó.

Các chỉ thị nên ở đâu áp dụng cho tất cả các nhiệm vụ trong một vai trò được xác định?

Điểm:0
lá cờ br

Cấu trúc thư mục điển hình của tôi:

âââ triển khai-cái gì đó.yml
âââ README.md
âââ hàng tồn kho
â  âââ sản xuất
â  â  âââ group_vars
â  â  â  âââ tất cả
â  â  â   âââ vars.yml
â  â  â    Âââ vault.yml
â  â âââ host_vars
â  â  â âââ host1.yml
â  â  â âââ host2.yml
â  â  â âââ máy chủ cục bộ
â  â  â âââ vars.yml
â  â  â  âââ hầm
â  â  âââ kho.yml
â ...
âââ vai trò
    âââ vai trò1
    â âââ ...
    ...

Trong trường hợp này, tôi đặt các lệnh như vậy trong phần chơi cấp cao nhất triển khai một cái gì đó.yml:

- máy chủ: tất cả
  remote_user: ansible
  trở thành: có
  trở thành_method: sudo
  any_errors_fatal: đúng
  nối tiếp: đúng
  đặt hàng: reverse_inventory
  vai trò:
  - vai trò1
  - vai2
lá cờ co
âTôi đặt các lệnh như vậy ở cấp cao nhấtâ â nếu tôi hiểu ví dụ của bạn, thì tệp đó đại diện cho toàn bộ *playbook*. Tôi đang cố gắng áp dụng các chỉ thị này cho một vở kịch hoặc vai trò riêng lẻ; khi vở kịch hoặc vai trò được đại diện bởi cấu trúc thư mục.
Điểm:0
lá cờ th

thu thập_sự kiện không có ý nghĩa (hoặc có thể) để đặt cho bất kỳ thứ gì khác ngoài một vở kịch, bởi vì nó chỉ ảnh hưởng đến quyết định ở cấp độ chơi về việc có thu thập dữ kiện hay không.

trở thànhtrở thành người dùng là các từ khóa cấp độ khối hoặc nhiệm vụ hợp lệ, vì vậy bạn có thể sử dụng một chặn để áp dụng chúng vào danh sách nhiệm vụ (trong vai trò hoặc cách khác):

- trở thành sự thật
  trở thành_user: root
  chặn:
    - tên: "APT: Cập nhật các gói có sẵn từ kho Debian"
      đúng cách:
        update_cache: đúng
    - tên: "APT: Cài đặt các gói cần thiết"
      đúng cách:
        Tên:
          - foo
          - quán ba

Nhiều từ khóa cũng có thể được áp dụng khi gọi vai trò:

- máy chủ: tất cả
  vai trò:
    - tên: foo
      trở thành sự thật
  nhiệm vụ:
    - nhập_vai trò:
        tên: thanh
      trở thành sự thật

    - bao gồm_vai trò:
        tên: bazz
        áp dụng:
          trở thành sự thật
Điểm:-1
lá cờ br

Hỏi: "Các lệnh áp dụng cho tất cả các nhiệm vụ trong một vai trò nên được xác định ở đâu?"

A: Câu trả lời ngắn gọn là: Ngoài vai trò.

Bạn nên đặt từ khóa chính xác ở đâu tùy thuộc vào cách bạn sử dụng vai trò. Có nhiều lựa chọn hơn

  • vai trò:
  • nhập_vai trò:
  • bao gồm_vai trò:

Nó nằm ngoài khả năng giải thích tất cả chi tiết đây. Nói chung, hãy đặt những từ khóa như vậy ở cấp độ (thụt đầu dòng) của một vai trò. Trong trường hợp bao gồm_role bạn cũng có thể áp dụng từ khóa. Cần biết rằng không phải tất cả các từ khóa đều có thể được áp dụng ở mọi nơi. Nhìn thấy Từ khóa Playbook áp dụng cho vai trò. Ví dụ, từ khóa thu thập_sự kiện chỉ có thể áp dụng cho vở kịch. Một trong những lựa chọn về cách giải quyết vấn đề của bạn có thể là cấu trúc của vở kịch bên dưới

- máy chủ: tất cả
  thu thập_facts: sai
  vai trò:
    - vai trò: os_packages
      trở thành sự thật
      trở thành_user: root

Hỏi: "Làm cách nào để thực hiện điều đó (áp dụng các từ khóa như vậy ở cấp độ vai trò), khi không có tệp cấu hình (chỉ có thư mục vai trò) đại diện cho vai trò?"

A: Nếu chỉ có thư mục vai trò, đại diện cho vai trò, bạn chỉ có thể áp dụng từ khóa cho các khối và nhiệm vụ bên trong vai trò. Bạn không thể áp dụng từ khóa cho một vai trò bên trong vai trò này. Không có thứ gọi là tệp cấu hình cho một vai trò.

Trong câu trả lời trước, theo cấp độ, tôi có nghĩa là cấp độ thụt đầu dòng, ví dụ như trong đoạn mã trên, thu thập_sự kiện áp dụng cho vở kịch trong khi cả hai trở thànhtrở thành người dùng áp dụng cho vai diễn.

lá cờ co
âÁp dụng các từ khóa như vậy ở cấp độ vai tròâ â vâng, đó chính xác là những gì câu hỏi đang hỏi: Làm thế nào để làm điều đó, khi không có tệp cấu hình (chỉ có thư mục vai trò) đại diện cho vai trò?
lá cờ br
Có lẽ bạn đang tìm kiếm thứ gì đó không tồn tại.

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