ansibleで自動起動をセットアップするときに、ディストリビュージョンの種類やバージョンを判断基準にするのにどうも違和感がありました。
いろいろ調べた結果、ansibleのansible_service_mgrで判断するのが正解です。
試す
下記のソースを使って検証します。
$ cat sample.yml
- hosts: localhost
tasks:
- debug: msg="{{ansible_service_mgr}}"
$
ubuntu 14.04で実行するとupstartでサービス起動していることがわかります。
$ ansible-playbook -i "localhost," sample.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "upstart"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
$
Ubuntu 15.04で実行するとsystemsなのがわかります。
$ ansible-playbook -i "localhost," sample.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "systemd"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
$
もう、ディストリビューションで判断する必要はありません。