Điểm:1

Việc tạo một vai trò Ansible chỉ để thiết lập sự thật có phải là một hình thức tồi không?

lá cờ kg

Tôi có một trong những tình huống mà tôi có thể viết một vai trò ba nhiệm vụ để tra cứu, sắp xếp và trích xuất một tập hợp các giá trị như:

- tên: Tra cứu các phiên bản AMI có sẵn
  amazon.aws.ec2_ami_info:
    bộ lọc: ...
  đăng ký: _ami_info
    
- tên: Sắp xếp theo ngày tạo để có được mới nhất
  ansible.buildin.set_fact:
    _amis: '{{ _ami_info.images | sắp xếp (thuộc tính = "creation_date", đảo ngược = True) }}'
    
- tên: Đặt thông tin của tôi cho AMI mới nhất
    latest_ami_id: '{{ _amis[0].image_id }}
    ...

Tôi cần thực hiện loại việc này trong một vài sách hướng dẫn khác nhau, vì vậy tôi muốn sử dụng lại mã.Điều có vẻ thú vị hơn và giống Anible hơn là triển khai plugin Tra cứu, nhưng đó là nhiều dòng Python hơn với lệnh gọi Boto3 để thực hiện điều tương tự một cách hiệu quả (ngoại trừ trả lại chi tiết dưới dạng chính tả).

Dường như không thể tìm thấy bất cứ điều gì trong các phương pháp hay nhất cho các vai trò bao gồm điều này hoặc nhiều khả năng là tôi đang thiếu điều gì đó.

Điểm:2
lá cờ br

Hỏi: Việc tạo một vai trò Ansible chỉ để thiết lập sự thật có phải là một hình thức tồi không?

A: Không. Không phải vậy. Bạn nói bạn 'muốn sử dụng lại mã'. Đặt các nhiệm vụ vào một tệp, ví dụ: nhiệm vụ/get_latest_ami_id.ymlvà tạo một vai trò, ví dụ: vai trò/my_lib

shell> vai trò mèo/my_lib/t task/get_latest_ami_id.yml
- tên: Tra cứu các phiên bản AMI có sẵn
  amazon.aws.ec2_ami_info:
    bộ lọc: ...
  đăng ký: _ami_info
    
- tên: Sắp xếp theo ngày tạo để có được mới nhất
  ansible.buildin.set_fact:
    _amis: '{{ _ami_info.images | sắp xếp (thuộc tính = "creation_date", đảo ngược = True) }}'
    
- tên: Đặt thông tin của tôi cho AMI mới nhất
  ansible.buildin.set_fact:
    latest_ami_id: '{{ _amis[0].image_id }}
    ...

Sau đó sử dụng một trong hai bao gồm_role hoặc import_role và chạy các tác vụ trong playbook của bạn, ví dụ:

- nhập_vai trò:
    tên: my_lib
    task_from: get_latest_ami_id.yml
  • Nhìn thấy Sử dụng lại các tạo phẩm Ansible để tìm hiểu sự khác biệt giữa bao gồm và nhập khẩu là gì.

  • Bạn có thể sử dụng vai trò này như một thư viện các nhiệm vụ khác có thể được sử dụng lại.

  • Nếu bạn chạy vai trò này sẽ không có gì xảy ra vì nhiệm vụ/main.yml đang mất tích. Bạn có thể tạo nó như một lời nhắc nhở, ví dụ:

vỏ> vai trò mèo/my_lib/t task/main.yml
- gỡ lỗi:
    msg: Không chạy vai trò này. Nó là một thư viện các nhiệm vụ độc lập.

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