複数のOSが混在している環境で Ansible を使う際、apt モジュールや yum モジュールを使い分けるのに when を使っていました。
- name: install unbound
yum: name=unbound stat=present
when: ansible_os_family == "RedHat"
- name: install unbound
apt: name=unbound stat=present
when: ansible_os_family == "Debian"
action を使うと、モジュール名に変数を使うことができることがわかりました。
ansible_pkg_mgr
変数を使うことで OS ごとにパッケージマネージャを変えてパッケージのインストールを行うことができます。
下記のようにしてやればOK。
- name: install unbound
action: >
{{ ansible_pkg_mgr }} name=unbound stat=present
すごくすっきり!