2017-08-17 13 views
5

के माध्यम से सभी को एक कुंजीपैयर कैसे उत्पन्न करें और फिर एसएसएच में उदाहरण के लिए मैं एक उत्तरदायी प्लेबुक बना रहा हूं और मैंने एक नया एडब्ल्यूएस ईसी 2 उदाहरण बनाया है। अब मैं इस उदाहरण में एसएसएच चाहता हूं और कुछ कमांड चलाता हूं। मैं ऐसा कैसे कर पाऊंगा? उत्तरदायी के माध्यम से एक कीपैयर उत्पन्न करने का कोई तरीका है, या मौजूदा का उपयोग करना सबसे अच्छा है?उत्तर कुंजी

मैंने Ansible ec2 के लिए ऑनलाइन संसाधनों पर ऑनलाइन देखा है - ec2 (http://docs.ansible.com/ansible/latest/ec2_module.html), साथ ही साथ ऑनलाइन ब्लॉग में एक उदाहरण बनाएं, समाप्त करें, प्रारंभ करें या रोकें। हालांकि, मैं यह समझने में सक्षम नहीं हूं कि उदाहरण में एसएसएच कैसे किया जाए, या ऑनलाइन एक उदाहरण देखा जाए।

का उपयोग करना:

- name: Wait for SSH to come up 
     wait_for: 
     host: "{{ item.public_ip }}" 
     port: 22 
     delay: 60 
     timeout: 320 
     state: started 
     with_items: "{{ ec2.instances }}" 

ansible-प्लेबुक प्रलेखन से निम्न त्रुटि उत्पन्न करता है:

"msg": "Timeout when waiting for :22"

उदाहरण भी CLI के माध्यम से उदाहरण में SSH करने का उपयोग करने के लिए एक सार्वजनिक डीएनएस के बिना बनाया गया है।

उदाहरण के लिए ansible-playbook के माध्यम से उदाहरण में एसएसएच कैसे करें या उदाहरण के लिए सार्वजनिक DNS नाम उत्पन्न करने के बारे में कोई मदद की सराहना की जाएगी।

उत्तर

4

यह आप कैसे एडब्ल्यूएस उदाहरणों काम का एक मूलभूत गलतफहमी है प्रतीत होता है। जब कोई उदाहरण बनाया जाता है, तो इसमें डिफ़ॉल्ट उपयोगकर्ता के लिए एक कुंजी-जोड़ी असाइन की जाती है। (उदाहरण के लिए एक अमेज़ॅन लिनक्स उदाहरण के लिए उपयोगकर्ता ec2-user होगा, उबंटू छवियां उबंटू उपयोगकर्ता का उपयोग करें)।

इस कुंजी जोड़ी को इसके विवरण में उदाहरण के लिए ec2 कंसोल में देखा जा सकता है। Ec2 कंसोल में कुंजी जोड़े अनुभाग के तहत सभी मौजूदा कुंजी जोड़े देखे जा सकते हैं।

एक उदाहरण आप कुंजी आपने अभी बनाया है के साथ शुरू कर रहे हैं कि में ssh करने में सक्षम हो के लिए, आपको कुछ चीजें करने की आवश्यकता होगी: स्थानीय स्तर पर

  1. कुंजी युग्म उत्पन्न (का उपयोग shell: ssh-keygen ...)
  2. स्थानीय रूप से उत्पन्न कुंजी युग्म से EC2 कुंजीयुग्म बनाएँ (का उपयोग ec2_key: ...)
  3. नामित EC2 कुंजी युग्म का उपयोग कर उदाहरण प्रारंभ करें (का उपयोग ec2: ...)
  4. कॉल कुंजी जीई का उपयोग कर उदाहरण सिर्फ एक ही प्लेबुक में शुरू चरण 1 में nerated।

चरण 1-3 hosts: 127.0.0.1 के रूप में चलाया जाना चाहिए।

चरण 4 को एक ही प्लेबुक में अलग hosts: कॉल के रूप में करने की आवश्यकता होगी और ऐसा लगता है जितना आसान नहीं है। मॉड्यूल का उपयोग करके hosts फ़ाइल, उत्तर group_vars पथ में नव निर्मित उदाहरण को निर्दिष्ट करने के लिए आपको कुछ तरीका होना चाहिए, और/या किसी भी तरह से इसका आईपी पता ढूंढ सकता है (संभवतः उदाहरण टैग का उपयोग करके)।

उदाहरण मिलने के बाद, उत्तर private_key_file चर का उपयोग चरण 1 में कुंजी निर्दिष्ट करने के लिए किया जा सकता है और उदाहरण में ssh।

ऐसा नहीं किया जा सकता है, लेकिन जब भी आप उदाहरण में खोलते हैं तो एक नई कुंजी जोड़ी होने के लिए ऐसा करने में कठिनाई और अव्यवहारिकता के कारण, मैं पूरी तरह से आवश्यक होने तक इसके खिलाफ सलाह दूंगा। अगर यह एक सुरक्षा चिंता है तो उचित कुंजी रोटेशन नीतियों के लिए बेहतर होगा।

+0

उत्तरदेही आपको 127.0.0.1 को 'लोकलहोस्ट' – Erich

+0

@Erich के साथ निर्दिष्ट करने की अनुमति देता है, यह वास्तव में व्यक्तिगत वरीयता का मामला है। –

0

उपयोग ec2_key पहले मॉड्यूल:

- ec2_key: 
    name: example2 
    key_material: 'ssh-rsa AAAAxyz...== [email protected]' 
    state: present 

- ec2: 
    key_name: example2 
    instance_type: t2.micro 
    image: ami-123456 
    wait: yes 
    group: webserver 
    vpc_subnet_id: subnet-29e63245 
    assign_public_ip: yes 
+0

धन्यवाद। मैंने यह एक नई कुंजी जोड़ी बनाने के लिए किया है। मैं उत्तर-प्लेबुक के माध्यम से उदाहरण में एसएसएच के लिए इसका उपयोग कैसे कर सकता हूं? – fuzzii

1

उत्तर एसएसएच का उपयोग करके उदाहरणों से जुड़ता है और उसके बाद अधिकांश निष्पादन के लिए क्लाइंट पर पायथन का उपयोग करता है। आप python2 इंस्टॉल करने जैसी चीजों को करने के लिए raw और shell मॉड्यूल का उपयोग कर क्लाइंट को बूटस्ट्रैप कर सकते हैं और फिर aws मॉड्यूल का उपयोग करके निष्पादित करने के लिए आगे बढ़ सकते हैं।

कुछ जवाब देने के बारे में आपको समझने की आवश्यकता है, हालांकि, एक सूची फ़ाइल में निर्दिष्ट कई होस्टों पर निष्पादित करने के लिए मौजूद है, एक भी नहीं। इस कारण से "उत्तरदायी के साथ एक उदाहरण में एसएसएच" संभव नहीं है क्योंकि इसका उत्तरदायित्व के लिए कोई व्यावहारिक उद्देश्य नहीं होगा। सर्वर के 100 के प्रावधान में व्यवस्थापक को एसएसएच नहीं होना चाहिए, बजाय पर्यावरण बनाने की प्रक्रिया, शायद सेवा के लिए कंटेनर चलाना, सभी को उच्च स्तर पर संभाला जाना चाहिए।

जैसा कि पहले से ही उल्लेख किया गया है, यदि आपका इरादा उत्तरदायी का उपयोग कर ईसी 2 इंस्टेंस बनाना है, तो उसमें ssh'd किया जा सकता है, तो आपको ec2_key मॉड्यूल का उपयोग करना चाहिए और उदाहरण बनाने से पहले कुंजी बनाना चाहिए। फिर जब आप इंस्टेंस बनाते हैं तो आप key_name फ़ील्ड के माध्यम से एसएसएच कुंजी निर्दिष्ट करेंगे।

सुनिश्चित करें कि आपके द्वारा निर्दिष्ट सुरक्षा समूह पोर्ट 22 से आने वाले कनेक्शन की अनुमति देता है, अन्यथा आप इसके साथ संवाद करने में सक्षम नहीं होंगे।

यदि आप पब्लिक डीएनएस पते की स्वचालित रूप से रिपोर्ट करने के लिए उत्तरदायी उत्तर देना चाहते हैं तो आपको ec2_remote_facts पर देखना चाहिए। यह एक JSON वापस करेगा जिसे सार्वजनिक DNS की रिपोर्ट करने के लिए पार्स किया जा सकता है।

संबंधित मुद्दे