2つのオプション-最初の方法は、あなた自身の答えで述べたように、環境変数ANSIBLE_HOST_KEY_CHECKING
をFalseに設定することです。
これを設定する2番目の方法は、ansible.cfgファイルに配置することです。これは、グローバルに(システムレベルまたはユーザーレベルで、/etc/ansible/ansible.cfg
またはで~/.ansible.cfg
)、または同じディレクトリの設定ファイルで設定できるため、非常に便利なオプションです。あなたが実行しているプレイブックとして。
これを行うには、ansible.cfg
これらの場所のいずれかにファイルを作成し、これを含めます。
[defaults]
host_key_checking = False
また、プレイの開始時にファクトを収集するかどうか、複数の場所で宣言されたハッシュをマージするか、別の場所でハッシュを置き換えるかなど、他にも多くの便利なデフォルトを設定できます。オプションの全体の大きなリストがありますここ Ansibleドキュメントでは。
編集:セキュリティに関するメモ。
SSHホストキーの検証は、永続的なホストにとって意味のあるセキュリティレイヤーです。同じマシンに何度も接続する場合は、ホストキーをローカルで受け入れることが重要です。
寿命の長いEC2インスタンスの場合、インスタンスの最初の作成時に一度だけ実行されるタスクでホストキーを受け入れることは理にかなっています。
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
動的に立ち上がってプレイブックの実行直後に削除するインスタンスのホストキーをチェックするセキュリティ値はありませんが、永続マシンのホストキーをチェックするセキュリティ値はあります。そのため、論理環境ごとに異なる方法でホストキーチェックを管理する必要があります。
- デフォルトでチェックを有効のままにします(
~/.ansible.cfg
)
- エフェメラルインスタンスに対して実行する
./ansible.cfg
Playbook の作業ディレクトリでホストキーチェックを無効にします(Vagrant VMに対する単体テストのPlaybookとともに、有効期間の短いec2インスタンスの自動化)