कैसे सेट करें host_key_checking = ansible इन्वेंट्री फ़ाइल में गलत?


113

मैं ansible-playbook' vagrant provision' के बजाय कमांड का उपयोग करना चाहूंगा । हालाँकि फ़ाइल host_key_checking=falseमें सेटिंग hostsकाम नहीं करती है।

# 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_ssh_common_args='-o StrictHostKeyChecking=no'

मेजबान :

निम्नलिखित जोड़ें।

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

होस्ट / इन्वेंट्री विकल्प कनेक्शन प्रकार के साथ काम करेंगे sshऔर नहीं paramiko। कुछ लोग दृढ़ता से तर्क दे सकते हैं कि इन्वेंट्री और होस्ट अधिक सुरक्षित हैं क्योंकि गुंजाइश अधिक सीमित है।

वैश्विक:

Ansible उपयोगकर्ता गाइड - होस्ट कुंजी जाँच

  • आप इसे /etc/ansible/ansible.cfgया ~/.ansible.cfgफ़ाइल में कर सकते हैं :

    [defaults]
    host_key_checking = False
    
  • या आप सेटअप और एनवी चर कर सकते हैं (यह नए नए संस्करणों पर काम नहीं कर सकता है):

    export ANSIBLE_HOST_KEY_CHECKING=False
    

32
मैं 1.7.2 का उपयोग कर रहा हूं और मेरा अनुभव है कि पर्यावरण चर ANSIBLE_HOST_KEY_CHECKINGकाम करता है लेकिन -e 'host_key_checking=False'काम नहीं करता है।
मार्क अब्रामोविट

6
आपका पहला बयान "हां, लेकिन मेजबानों / इन्वेंट्री स्तर पर नहीं" झूठा है। आप उपयोग कर सकते हैं ansible_ssh_common_args='-o StrictHostKeyChecking=no'याansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammel ली

1
केवल अंतिम विकल्प ने मेरी प्लेबुक चलाने से पहले मेरे लिए काम किया (ANSIBLE_HOST_KEY_CHECKING = गलत) निर्यात किया।
ted-k42

1
"हां, लेकिन मेजबानों / इन्वेंट्री स्तर पर नहीं।" - झूठा दिखाया जाता है, मेरे जवाब से साबित होता है । मैं यह भी कहूंगा कि यह वास्तव में इस सवाल का जवाब नहीं है कि इसे इन्वेंट्री स्तर पर कैसे सेट किया जाए ।
gertvdijk

@gertvdijk I ने 2014 में इसका जवाब दिया। अंसिबल संशोधन के एक समूह से गुजरे हैं। कहीं ऐसा तो नहीं है?
रिको

68

हां, आप इसे इन्वेंट्री / होस्ट स्तर पर सेट कर सकते हैं

वर्तमान में पहले से ही स्वीकृत उत्तर के साथ, मुझे लगता है कि यह इस सवाल का बेहतर जवाब है कि इसे इन्वेंट्री स्तर पर कैसे संभाला जाए। मैं इस असुरक्षित सेटिंग को इसके लिए आवश्यक मेजबानों (जैसे परीक्षण प्रणाली, स्थानीय विकास मशीनों) को अलग करके इसे और अधिक सुरक्षित मानता हूं।

इन्वेंट्री स्तर पर आप जो कर सकते हैं वह है

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

या

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

अपनी मेज़बान परिभाषा के लिए (देखें विवादास्पद व्यवहार सूची पैरामीटर )।

यह काम करेगा बशर्ते आप sshकनेक्शन प्रकार का उपयोग करें , न कि paramikoकुछ और)।

उदाहरण के लिए, एक वैजंट होस्ट परिभाषा…

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 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 फ़ाइल में शामिल किया।
जी।

4

मैं उपयोग नहीं कर सका:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

इन्वेंट्री फ़ाइल में। ऐसा लगता है कि मेरे मामले में ansible इस विकल्प पर विचार नहीं करता है (ubuntu 14.04 में पाइप से 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आपके लिए काम नहीं करती है। सबसे अधिक संभावना है कि आपके एसएसएच कॉन्फ़िगरेशन के कारण में कुछ विकल्प है।
गर्टवडिज्क

के लिए +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 कमांड्स का उपयोग करते समय काम करने योग्य कॉन्फिग को निम्नलिखित में जोड़ना:

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

उत्तर देने योग्य संस्करण

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 के साथ परीक्षण किया गया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.