Ansibleインベントリファイルでhost_key_checking = falseを設定するにはどうすればよいですか?


113

ansible-playbookvagrant provision」の代わりにコマンドを使用したいと思います。ただしhost_key_checking=falsehostsファイルの設定が機能していないようです。

# hosts file
vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 
ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1 
host_key_checking=false

Vagrantfileこの値を上書きできる構成変数はありませんか?

回答:


182

2014年に私がこれに回答したという事実により、Ansibleの最新バージョンを説明するために私の回答を更新しました。

はい、ホスト/インベントリレベル(新しいansibleバージョンで可能になったもの)またはグローバルレベルで実行できます。

在庫

以下を追加します。

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

ホスト

以下を追加します。

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

hosts / inventoryオプションは、接続タイプsshではなく、で動作しますparamiko。一部の人々は、範囲がより限定されているため、インベントリとホストがより安全であると強く主張するかもしれません。

グローバル:

Ansibleユーザーガイド-ホストキーチェック

  • /etc/ansible/ansible.cfgまたは~/.ansible.cfgファイルで行うことができます。

    [defaults]
    host_key_checking = False
    
  • または、環境変数を設定できます(これは、新しいansibleバージョンでは機能しない可能性があります)。

    export ANSIBLE_HOST_KEY_CHECKING=False
    

32
私はansible 1.7.2を使用していますが、私の経験では、環境変数はANSIBLE_HOST_KEY_CHECKING機能しますが-e 'host_key_checking=False'機能しません。
Marc Abramowitz、2014年

6
最初のステートメント「はい、しかしホスト/インベントリレベルではありません」は誤りです。あなたは使用することができますansible_ssh_common_args='-o StrictHostKeyChecking=no'ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammelリー

1
プレイブックを実行する前に、最後のオプションのみが機能しました(エクスポートANSIBLE_HOST_KEY_CHECKING = False)。
ted-k42

1
「はい、しかしホスト/在庫レベルではありません。」- 私の答えによって証明された偽であることが示されている。これは、在庫レベルでの設定方法に関する質問への回答ではありません。
gertvdijk 2017

@gertvdijk 2014年に私はこれに答えました。Ansibleはたくさんの修正を経ました。それはもうそうではありませんか?
リコ

68

はい、これをインベントリ/ホストレベルで設定できます。

すでに受け入れられている回答が存在するので、これは在庫レベルでこれをどのように処理するかという質問に対するより良い回答だと思います。私は、この安全でない設定を、これに必要なホスト(テストシステム、ローカル開発マシンなど)に分離することで、より安全だと考えています。

在庫レベルでできることは追加です

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

または

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

ホスト定義に追加します(Ansible Behavioral Inventory Parametersを参照)。

これは、ssh接続タイプを使用する場合にのみ機能しますparamiko

たとえば、Vagrantホスト定義は次のようになります…

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_common_args='-o StrictHostKeyChecking=no'

または

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

Ansibleの実行は、環境変数を変更せずに成功します。

$ ansible vagrant -i <path/to/hosts/file> -m ping
vagrant | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

ホストのグループに対してこれを行う場合は、次のように、既存のグループの補足グループ変数にすることをお勧めします。

[mytestsystems]
test[01:99].example.tld

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'

4
これははるかに良い答えです。
marcv81

この提案は私にとってうまくいきました、そして私はこれがセキュリティ上の懸念のために(グローバルレベルではなく)プロジェクトレベルで設定されるべきものであることに同意します。
andrewdcato

1
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'group_varsファイルのymlファイルに含めました。
g。

4

私は使用できませんでした:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

インベントリファイル内。私の場合、ansibleはこのオプションを考慮していないようです(ubuntu 14.04のpipからのansible 2.0.1.0)

私は使うことにしました:

server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null'

それは私を助けました。

また、この変数をホストごとにグループで設定することもできます。

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'

UserKnownHostsFile/ GlobalKnownHostsFileオプションを設定すること/dev/nullも確かに機能します。設定StrictHostKeyCheckingがうまくいかないのは不思議です。SSH構成のオプションが原因である可能性が高いです。
gertvdijk

の+1 -o UserKnownHostsFile=/dev/null。それがなければansible_ssh_common_args 、他の回答で概説した場所と方法に関係なく、私にとってはうまくいきませんでした。
クーン

0

/etc/ansible/ansible.cfgの行をコメント解除します。

host_key_check = False

そして/etc/ansible/hostsコメントを外して

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

それで全部です


0

ansible ad-hocコマンドの使用中に、以下をansible configに追加すると機能しました。

[ssh_connection]
# ssh arguments to use
ssh_args = -o StrictHostKeyChecking=no

Ansibleバージョン

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg

0

これらの構成は、/etc/ansible/ansible.cfgまたは~/.ansible.cfgまたはansible.cfg(現在のディレクトリ内の)ファイルで設定します

[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

ubuntu 20.04でansible 2.9.6でテスト済み

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.