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.