Tôi đã có một playbook bao gồm và các thẻ vai trò khác nhau:Ansible - Default/Explicit Thẻ
- name: base
hosts: "{{ host | default('localhost') }}"
roles:
- { role: apt, tags: [ 'base', 'apt', 'ubuntu']}
- { role: homebrew, tags: [ 'base', 'homebrew', osx' ]}
- { role: base16, tags: [ 'base', 'base16', 'osx' ]}
- { role: nodejs, tags: [ 'base', 'nodejs' ]}
- { role: tmux, tags: [ 'base', 'tmux' ]}
- { role: vim, tags: [ 'base', 'vim' ]}
- { role: virtualenv, tags: [ 'base', virtualenv', 'python' ]}
- { role: homebrew_cask, tags: [ 'desktop', 'homebrew_cask', osx' ]}
- { role: gnome_terminator, tags: [ 'desktop', 'gnome_terminator', ubuntu' ]}
Hầu hết các nhiệm vụ đang sử dụng khi khoản để xác định hệ điều hành họ nên chạy trên, ví dụ:
- name: install base packages
when: ansible_distribution == 'MacOSX'
sudo: no
homebrew:
name: "{{ item.name }}"
state: latest
install_options: "{{ item.install_options|default() }}"
with_items: homebrew_packages
Nếu tôi chạy ansible-playbook base.yml
mà không chỉ định bất kỳ thẻ nào, tất cả tác vụ sẽ chạy. Nếu tôi chỉ định thẻ, ví dụ: ansible-playbook base.yml --tags='base'
, chỉ các vai trò được gắn thẻ với base run
.
Theo mặc định (nếu không có thẻ nào được chỉ định), tôi chỉ muốn chạy các vai được gắn thẻ với 'base'
và không các vai được gắn thẻ với 'desktop'
. Nó cũng sẽ thực sự tốt đẹp để thiết lập một thẻ 'os' mặc định, dựa trên hệ điều hành hiện tại, để tránh bao gồm tất cả các nhiệm vụ cho ubuntu khi tôi đang chạy playbook trên OSX (và ngược lại) .
Bất kỳ ý tưởng nào nếu điều này là có thể và cách tôi có thể làm điều đó?