ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

macOSにAnsibleを入れる

先ほどこんなことを書きました。

ytooyama.hatenadiary.jp

次はmacOSにAnsibleを入れようと思ったのですが、HomebrewのFormulaで入れるとPython2が必要なので、python@2というFormulaが追加されます。まとめると次のバージョンがシステムに存在する状態になります。

  • macOSにインストール済みのpython (2.7.10)
  • Homebrewでインストールされたpython (2.7.14)

以前のバージョンのHomebrewでpython Formulaが追加されていると、Homebrew 1.6への更新でpython FormulaはPython 3.xに更新されます。そこら辺の事情は以下のブログ記事にまとまっています。

applech2.com

applech2.com

つまりこうなります。

  • macOSにインストール済みのpython (2.7.10)
  • Homebrewでインストールされたpython@2 (2.7.14)
  • Homebrewでインストールされたpython , python@3 (3.6.5)

そして言い忘れていましたが、私はパッケージ版のPython 3をインストールしています。 つまり、全部で4つのバージョンのPythonがインストールされた状態になっています。

「Homebrewでインストールされたpython (2.7.14)」はHomebrew版Ansibleを使う限り必要ですし、python Formulaが必要なFormulaをインストールしようとした場合はHomebrewがインストールしてしまうので、ごちゃごちゃした状態は解決できません。Pythonを呼び出すたびに、「お前はどこの子のPythonだ」という状態が続く感じです。 だから、本来はpyenvとか使うんでしょうね。

qiita.com

macOSにAnsibleをインストールする

brew install ansibleを実行するだけで簡単に導入できていいのですが、Ansible公式の手順に従って、pipでインストールしてみました。この方法でインストールしたAnsibleはPython 3.6で動くので、Homebrew版のPythonは不要になります。といわけで不要なバージョンのPythonも削除できたし、以前書いたpipの問題も解決できてすっきりしました。

% brew uninstall ansible python@2 python
% pip3 install ansible 

% ansible --version
ansible 2.5.1
  config file = None
  configured module search path = ['/Users/ytooyama/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ansible
  executable location = /Library/Frameworks/Python.framework/Versions/3.6/bin/ansible
  python version = 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

% pip -V
pip 10.0.1 from /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip (python 3.6)
% pip3 -V
pip 10.0.1 from /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip (python 3.6)