2015-12-21 10 views
7

का उपयोग करके बनाए गए एडब्ल्यूएस इंस्टेंस के आईपी पते/विशेषताओं को प्राप्त करना मुझे पता है कि Ansible का उपयोग करके एडब्ल्यूएस इंस्टेंस कैसे बनाया जाए। अब मैं जो हासिल करना चाहता हूं वह उस उदाहरण को बनाते हुए उसी प्लेबुक का उपयोग करके nginx इंस्टॉल करके वेब सर्वर के रूप में कॉन्फ़िगर करना है।Ansible

प्लेबुक के लक्ष्य होगा:

  1. एक एडब्ल्यूएस उदाहरण बनाएँ।
  2. Nginx सर्वर सेट अप करके उदाहरण को वेब सर्वर के रूप में कॉन्फ़िगर करें।

क्या यह उत्तरदायी है?

उत्तर

6

http://www.ansible.com/blog/ansible-ec2-tags पढ़ें यह वर्णन करता है कि कैसे एक ec2 इंस्टेंस (या एकाधिक) को स्पिन करें और फिर इसके खिलाफ कार्य चलाएं (I.e nginx इंस्टॉल करें)।

I'f तुम EC2 उदाहरण

  • डब्ल्यू डायनामिक रूप से तैयार मेजबान समूह/जुड़े EC2 पीईएम Ansible को EC2 उदाहरण जोड़ने ssh
  • के लिए
  • प्रतीक्षा लाओ उदाहरण प्लेबुक https://github.com/chrismeyersfsu/playbook-ec2_properties/blob/master/new_group.yml

    • के लिए सीधे कूद करना चाहते हैं फ़ाइल
    • कॉल एक उदाहरण (ताकि आप इसे करने के लिए ssh सकता है) सब कुछ काम करता है
    को दिखाने के लिए एक पिंग कार्य के साथ खेलते हैं

    नोट: आप

    फिर Line 46 EC2 पर Line 27 नोट register: ec2 के उपयोग पर नज़र EC2 आईपी पते के संदर्भ के लिए कैसे कार्य के अपने सेट nginx

    @Bidyut स्थापित करने के लिए के साथ पिंग काम की जगह लेंगे आईपी ​​पता "निकाला गया" {{ ec2.results[item.0]['instances'][0]['public_ip'] }} है। ध्यान दें कि उदाहरण लूप के भीतर register पर कॉल करता है। यदि आप केवल एक ec2 उदाहरण बना रहे हैं तो ec2 ip पता संदर्भ {{ ec2.results['instances'][0]['public_ip'] }}

  • +0

    क्या आप समझ सकते हैं कि जेएसओएन परिणाम से विशेष फ़ील्ड प्राप्त करने/प्राप्त करने के लिए उत्तरदायी प्लेबुक में एडब्ल्यूएस से वापस लौटाया गया है। मैंने इसे गूगल करने की कोशिश की, लेकिन मुझे कोई नहीं मिला। – Bidyut

    +0

    उस लाइन में 'आइटम' क्या है? – Bidyut

    +0

    'public_ip' में इसका मान कोई नहीं है – Bidyut

    0

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

    1. लॉन्च एक EC2 उदाहरण EC2 का उपयोग कर मॉड्यूल और रजिस्टर उदाहरण
    2. उपयोग add_host मॉड्यूल मेजबान सूची के नया उदाहरण जोड़ने के लिए
    3. सिर्फ पंजीकृत मेजबान के रूप में मेजबान के साथ एक नए नाटक लिखें और उपयुक्त फोन nginx

    स्थापित कोशिश करो करने के लिए और अगर आप कोड स्निपेट की जरूरत है, मुझे पता है।

    +0

    मैं वर्तमान में Ansible की खोज कर रहा हूँ। जेएसओएन आउटपुट से किसी विशेष फ़ील्ड को पुनर्प्राप्त करते समय मुझे समस्या का सामना करना पड़ता है, जिसे एडब्ल्यूएस उत्तर में लौटाता है। मुझे कुछ व्याख्या की आवश्यकता है कि JSON परिणाम से एक विशेष फ़ील्ड कैसे प्राप्त करें और परिणाम सेट तक कैसे पहुंचे। – Bidyut

    +0

    क्या मुझे कोड स्निपेट मिल सकता है। मैं आपके कोड स्निपेट से गुजरना चाहता हूं। – Bidyut

    2

    यहां एक कामकाजी उदाहरण है जो आपकी मदद कर सकता है।

    --- 
    - hosts: localhost 
        connection: local 
        gather_facts: no 
        tasks: 
        - name: Create the EC2 Instance 
         ec2: 
         region: us-east-1 
         group: sg-xxxxx # Replace your Security Group here 
         keypair: test-key # Replace Key here 
         instance_type: t2.mirco 
         image: ami-xxxxx # Replace AMI here 
         vpc_subnet_id: subnet-xxxxx # Replace Subnet here 
         assign_public_ip: yes 
         wait: yes 
         wait_timeout: 600 
         instance_tags: 
          Name: "My-EC2-Instance" 
         register: ec2 
    
        - name: Create SSH Group to login dynamically to EC2 Instance 
         add_host: 
         hostname: "{{ item.public_ip }}" 
         groupname: ec2_server 
         with_items: ec2.instances 
    
        - name: Wait for SSH to come up 
         wait_for: 
         host: "{{ item.public_ip }}" 
         port: 22 
         state: started 
         with_items: ec2.instances 
    
    - hosts: ec2_server 
        become: yes 
        # Use ec2_user if you are using CentOS/Amazon server 
        remote_user: ubuntu # for Ubuntu server 
        gather_facts: yes 
        roles: 
        - webserver