Câu trả lời:
Đây là một cách khác để làm điều này:
- name: my command
command: echo stuff
when: "'groupname' not in group_names"
group_names
là một biến ma thuật như được ghi lại ở đây: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables :
group_names là một danh sách (mảng) của tất cả các nhóm mà máy chủ lưu trữ hiện tại đang ở.
when: inventory_hostname not in groups.certain_groups
inventory_hostname in groups['groupname']
vì trong trường hợp bản thân vữa không tồn tại, Ansible sẽ đưa ra một lỗi như "Đảm bảo rằng tên biến của bạn không chứa các ký tự không hợp lệ như '-': đối số của loại 'nghiêm ngặt' không thể lặp lại"
Bạn có thể đặt biến điều khiển trong tệp vars nằm trong group_vars/
hoặc trực tiếp trong tệp máy chủ như sau:
[vagrant:vars]
test_var=true
[location-1]
192.168.33.10 hostname=apollo
[location-2]
192.168.33.20 hostname=zeus
[vagrant:children]
location-1
location-2
Và chạy các tác vụ như thế này:
- name: "test"
command: "echo {{test_var}}"
when: test_var is defined and test_var
This one looks easy to fix. It seems that there is a value started with a quote, and the YAML parser is expecting to see the line ended with the same kind of quote.