接続方法および詳細¶
このセクションでは、Ansible がインベントリーに使用する接続方法を拡張および改良する方法を示します。
ControlPersist および paramiko¶
デフォルトでは、Ansible はネイティブの OpenSSH を使用します。これは、ControlPersist (パフォーマンス機能)、Kerberos、および Jump Host 設定などの 〜/ .ssh / configの
のオプションをサポートしているためです。ControlPersist をサポートしない OpenSSH の古いバージョンを使用している場合、Ansible は、「paramiko」と呼ばれる OpenSSH の Python 実装にフォールバックします。
SSH キーの設定¶
デフォルトでは、Ansible は、SSH 鍵を使用してリモートマシンに接続していると想定します。 SSH 鍵が推奨されますが、必要に応じて --ask-pass
オプションでパスワード認証を使用できます。特権昇格 (sudo、pbrun など) のパスワードを提供する必要がある場合は、--ask-become-pass
を使用します。
Note
Ansible does not expose a channel to allow communication between the user and the ssh process to accept a password manually to decrypt an ssh key when using the ssh connection plugin (which is the default). The use of ssh-agent
is highly recommended.
パスワードを再入力しないように SSH エージェントをセットアップするには、次のようにします。
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
セットアップによっては、代わりに Ansible の --private-key
コマンドラインオプションを使用して pem ファイルを指定することもできます。 秘密鍵ファイルを追加することもできます。
$ ssh-agent bash
$ ssh-add ~/.ssh/keypair.pem
ssh-agent を使用せずに秘密鍵ファイルを追加する別の方法は、インベントリーの構築方法 で説明するように、インベントリーファイルで ansible_ssh_private_key_file
を使用することです。
ローカルホストに対して実行¶
サーバー名に「localhost」または「127.0.0.1」を使用して、コントロールノードにコマンドを実行できます。
$ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'
これをインベントリーファイルに追加して、localhost を明示的に指定できます。
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
ホストキーの確認¶
Ansible は、デフォルトでホストキーチェックを有効にします。ホストキーをチェックすると、サーバーのなりすましや中間者攻撃から保護されますが、メンテナンスが必要です。
ホストが再インストールされ、「known_hosts」に異なるキーがある場合は、修正されるまでエラーメッセージが表示されます。 新しいホストが「known_hosts」にない場合は、コントロールノードから鍵の確認が求められます。これにより、cron などの Ansible を使用している場合は、相互作用が行われる可能性があります。このように動作しないようにしたい場合があります。
この動作を無効にした場合の影響を理解し、無効にする場合は、/etc/ansible/ansible.cfg
または ~/.ansible.cfg
編集します。
[defaults]
host_key_checking = False
また、これは、ANSIBLE_HOST_KEY_CHECKING
環境変数により設定できます。
$ export ANSIBLE_HOST_KEY_CHECKING=False
また、paramiko モードでのホストキーチェックはかなり遅いため、この機能を使用する場合は「ssh」に切り替えることも推奨されます。
その他の接続方法¶
Ansible では、SSH 以外のさまざまな接続方法を使用できます。ローカルでの管理、chroot、lxc、jail コンテナーの管理など、任意の接続プラグインを選択できます。 「ansible-pull」と呼ばれるモードは、システムを反転させ、予定された git チェックアウトを介してシステムに「phone home」を設定して、中央リポジトリーから設定ディレクティブをプルすることもできます。