とーますメモ

Ruby on Rails / Goなどの学習メモ

【Ansible】Macのbrew経由でAnsibleのバージョンを上げたら、ansible.cfgを読み込まなくなったっぽい。

自分用メモ。

以前はansible.cfgを「/usr/local/bin/ansible/ansible.cfg」に置いており、
「/usr/local/bin/ansible/」内に「apps」ディレクトリを作成し、
さらにその中に各プロジェクトのディレクトリを作成し、プレイブックをその中に置いていた。

こんなイメージ

├── apps
│   └── project1
│       ├── hosts
│       │   ├── production
│       │   └── staging
│       ├── log
│       │   └── ansible.log
│       └── playbook
│           ├── dbservers.yml
│           ├── group_vars
│           │   ├── production.yml
│           │   └── staging.yml
│           ├── roles
├── ansible.cfg

実行するときは、各プロジェクト内に移動し、その後にプレイブックをのコマンドを叩いていた。

例)

$ cd apps/project1 && ansible-playbook -i hosts/staging playbook/site.yml

以前(バージョンは忘れた・・・2.2とかだった気がする)は、上記の構成とコマンドでansible.cfg内の設定を
読み込んでくれていたが、バージョンを2.5.3に上げたら、読み込まなくなりansible.cfg内で設定していたremote_userが効かなくなったため
サーバにSSHログインできなくなった。

公式ドキュメントを見ると、以下の順でansible.cfgは読み込まれる。

① ANSIBLE_CONFIG (environment variable if set)
② ansible.cfg (in the current directory)
③ ~/.ansible.cfg (in the home directory)
④ /etc/ansible/ansible.cfg

Ansible Configuration Settings — Ansible Documentation

このドキュメントを見ると、そもそもプロジェクトのフォルダに移動して、コマンドを実行してもansible.cfgは読み込まれないように見えるが
以前のバージョンでは動作していた。。。

なので、ansible.cfgを各プロジェクト内直下に置き、実行してみたところ動作した。
以下がその構成。

├── apps
│   └── project1
│       ├── ansible.cfg
│       ├── hosts
│       │   ├── production
│       │   └── staging
│       ├── log
│       │   └── ansible.log
│       └── playbook
│           ├── dbservers.yml
│           ├── group_vars
│           │   ├── production.yml
│           │   └── staging.yml
│           ├── roles

[参考]
Ansible: path to ansible.cfg - Stack Overflow