2015-05-29 21 views
13

Tôi có nhiều tác vụ trong một vai trò như sau. Tôi không muốn tạo một tệp yml khác để xử lý tác vụ này. Tôi đã có một bao gồm cho các máy chủ web, nhưng một vài máy chủ Perl của chúng tôi yêu cầu một số gói web được cài đặt.Chỉ chạy tác vụ Ansible khi tên máy chủ chứa một chuỗi

- name: Install Perl Modules 
    command: <command> 
    with_dict: perl_modules 

- name: Install PHP Modules 
    command: <command> 
    with_dict: php_modules 
    when: <Install php modules only if hostname contains the word "batch"> 

tập tin tồn kho chủ

[webs] 
web01 
web02 
web03 

[perl] 
perl01 
perl02 
perl03 
perl-batch01 
perl-batch02 

Trả lời

29

Dưới đây nên làm như lừa:

- name: Install PHP Modules 
    command: <command> 
    with_dict: php_modules 
    when: "'batch' in inventory_hostname" 

Lưu ý bạn sẽ có một vài bỏ qua host trong playbook chạy.

inventory_hostname là một trong những biến "kỳ diệu" Ansible của:

Bên cạnh đó, inventory_hostname là tên của tên máy như cấu hình trong file host tồn kho Ansible của. Điều này có thể hữu ích cho khi bạn không muốn dựa vào tên máy chủ được phát hiện ansible_hostname hoặc vì các lý do bí ẩn khác. Nếu bạn có một tên miền dài FQDN, inventory_hostname_short cũng chứa một phần tối đa thời gian đầu tiên, mà không có phần còn lại của miền.

Nguồn: Ansible Docs - Magic variables and how to access information about other hosts

Các vấn đề liên quan