[小ネタ] Pythonのバージョンを指定してAnsible実行時に表示される警告を消す

Macのセットアップを行うAnsibleプレイブックを書いています。実行すると警告が出たので、調べて解決した内容を共有します。
2020.02.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービスグループの武田です。

最近Macのキーボードの調子が悪く、修理に出してもらいました。その間は代替機が支給されるのですが、設定がデフォルトです。手でぽちぽちと設定変更してもよかったのですが、せっかくなのでAnsibleを使ってセットアップしよう!ということでプレイブックを書くことにしました。

書いたプレイブックを実行すると次のような警告が出ました。無視してもすぐに問題にはなりませんが、気持ち悪いので解決しようというのがこの記事の主旨です。

[WARNING]: Platform darwin on host 127.0.0.1 is using the discovered Python interpreter at /usr/bin/python, but
future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.

先に結論

Ansibleの設定ファイル(ansible.cfg)に次の設定を追加すれば解決できます。

ansible.cfg

[defaults]
interpreter_python=/usr/bin/python3

ちなみにAnsibleのバージョンは2.9.3でした。

$ ansible --version
ansible 2.9.3

少し詳しく

上記の設定で解決しますが、詳しい説明について警告にも表示されていたページで確認できます。

Interpreter Discovery — Ansible Documentation

そもそも警告を出していたInterpreter Discoveryとは、ターゲットホスト上で利用するPythonインタプリタを探すためのしくみです。

このページによると、件の警告を解決する方法は大きく2種類用意されています。

  1. ansible_python_interpreter変数を指定する
  2. ansible.cfg[defaults]セクションにinterpreter_pythonを指定する

2の方法は冒頭で紹介したものです。1の方法はかなり柔軟で、全体で指定したり各タスクで指定したりできます。たとえば1の方法で全体に設定するには次のような設定をインベントリファイルに追加します。

[all:vars]
ansible_python_interpreter=/usr/bin/python3

まとめ

Mac用のプレイブックを作ることはそこまで難しくはないのですが、本当にたいへんなのはきちんとメンテナンスすることだよなぁと思ってます。