khi mệnh đề không thể đánh giá sự hiện diện của thẻ. Như một giải pháp thay thế, tôi sử dụng các biến và thẻ cùng nhau để chạy các tác vụ cụ thể cho thẻ / biến đó.
Ví dụ: Hãy tưởng tượng một cuốn sách và hàng tồn kho
# hàng tồn kho
[dev]
192.168.1.1
# trang web.yml
- máy chủ: dev
vai trò:
- {vai trò: chung}
và trong chung / nhiệm vụ / main.yml
# vai trò / chung / nhiệm vụ / main.yaml
- tên: Cài đặt liên kết
apt: name = links state = hiện tại
- bao gồm: Uninstall.yml
khi: Uninstall_links được xác định
thẻ:
- gỡ cài đặt
# vai trò / chung / nhiệm vụ / Uninstall.yml
- tên: Gỡ cài đặt liên kết
apt: name = links state = vắng mặt
Với cách tiếp cận này, bạn sử dụng thẻ để chỉ chọn các tác vụ trong Uninstall.yml, nhưng bạn cũng cần đặt biến 'Uninstall_links' thành thứ gì đó để kích hoạt nó. Vì vậy, nếu bạn chạy playbook mà không có bất kỳ tham số nào, theo mặc định, nó sẽ chạy tác vụ cài đặt. Để gỡ cài đặt, bạn có thể đặt thẻ 'gỡ cài đặt' vào sổ chơi của bạn (hoặc cmdline) và PHẢI đặt biến. Nếu bạn không đặt thẻ, nó sẽ chạy mọi thứ (cài đặt và gỡ cài đặt) theo thứ tự đó, rất tốt để kiểm tra toàn bộ quá trình.
Cách chạy mọi thứ (nó sẽ cài đặt và gỡ cài đặt):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Cách chỉ chạy thẻ 'gỡ cài đặt' trên nhóm dev
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Do đó, các biến và thẻ cũng có thể nằm trong tệp site.yml / Inventory, cho phép bạn cam kết vào SCM của bạn và ghi lại ý định của bạn.