てくなべ (tekunabe)

ansible / network / automation

[Ansible] 見知らぬ Ansible 環境に入った時に確認したいこと

はじめに

「ここに Ansible があります。あなたはこの環境をを使います。」と言われた時、何をすればよいでしょうか。

この記事では、自分で管理していない環境の Ansible を使う事になった場合に、環境を調査するためのコマンドを紹介します。

以下ツイートの補足です。


■ Anisble のバージョンの確認

インストールされている Ansible のバージョンを確認するコマンドは以下のとおりです。

ansible --version

実行例: ansible --version

[ansible@038432d6b255 ansible]$ ansible --version
ansible 2.7.10
  config file = /home/ansible/ansible/ansible.cfg
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Aug  7 2019, 17:28:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

上記の実行例では、以下のことが分かります。

  • Ansible のバージョンは 2.7.10
  • 設定ファイルは /home/ansible/ansible/ansible.cfg を利用
  • Ansible自身 を実行する Python のバージョンは 3.6.8
    • Ansible が接続する先のマシンで実行する Python のバージョンではないの注意


■ デフォルトから変更されている設定の確認

Ansible には、SSH 接続時のホストキーのチェック有無や、実行プロセスのフォーク数など、設定を管理する仕組みがあります。ansible.cfg というファイル名の設定ファイルや、環境変数などで設定できます。

思ったとおりの挙動にならない、あっちの環境と違う・・、とハマることを避けるために、デフォルトから変更されている設定を確認しておきたいところです。

確認するコマンドは以下のとおりです。

ansible-config dump --only-changed

実行例: ansible-config dump --only-changed

[ansible@038432d6b255 ansible]$ ansible-config dump --only-changed
DEFAULT_ROLES_PATH(env: ANSIBLE_ROLES_PATH) = ['/etc/ansible/myroles']
HOST_KEY_CHECKING(/home/ansible/ansible/ansible.cfg) = False

上記の実行例では、以下のことが分かります。

  • ロールを読み込む際のパスの設定 DEFAULT_ROLES_PATHが、環境変数 ANSIBLE_ROLES_PATH によって、/etc/ansible/myroles に変更されている。
    • デフォルトは ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
  • SSH接続先のフィンガープリントチェックの有無の設定 HOST_KEY_CHECKING が、設定ファイル /home/ansible/ansible/ansible.cfg によって、False に変更されている。
    • デフォルトは True

補足


まとめ

自分で管理していない環境の Ansible を使う事になった場合に、環境を調査するためのコマンドを紹介しました。

他にもよい調べ方、追加で調べたほうが良いことなどがありましたら、 @akira6592 までご連絡いただけると幸いです。