自分用メモ。
以前は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