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 $
もう、ディストリビューションで判断する必要はありません。