公式ドキュメントにあるが、日本語でroleの条件指定の情報が少なかったので記載。
特定のOSや環境だけタスクを実施したい時はタスクごとにwhen:を使えばよいのだが、これをrole単位で適用したい場合はどうするか?
答え:roleにwhen条件を入れればよい。
- hosts: localhost connection: local roles: - common - { role: debian, when: "ansible_os_family == 'Debian'" } - { role: redhat, when: "ansible_os_family == 'RedHat'" }
上記でDebianにて実行時にはdebianロールが、ReaHatで実行時にはredhatロールが実行される。