2014-12-04 7 views
6

द्वारा शुरू किए गए ईसी 2 इंस्टेंस को कैसे रोकें यदि मैं उत्तर में ईसी 2 इंस्टेंस (या उदाहरणों का सेट) शुरू करता हूं, तो मैं बाद में उस उदाहरण (या सेट) को कैसे देख सकता हूं और उन्हें समाप्त कर सकता हूं?उत्तर: एक अलग प्लेबुक

यह प्लेबुक में है। तो, एक प्लेबुक में मैंने पहले से ही एक उदाहरण शुरू कर दिया है, फिर बाद में, मैं उन उदाहरणों को किसी अन्य प्लेबुक के साथ समाप्त करना चाहता हूं।

धन्यवाद।

उत्तर

10

आप इस (काम कर रहे उदाहरण) की तरह कुछ करने की आवश्यकता होगी:

terminate.yml:

$ ansible-playbook -i instance.example.com, terminate.yml 

:

- name: terminate single instance 
    hosts: all 
    tasks: 
    - action: ec2_facts 
    - name: terminating single instance 
     local_action: 
     module: ec2 
     state: 'absent' 
     region: us-east-1 
     instance_ids: "{{ ansible_ec2_instance_id }}" 

पता instance.example.com पर उदाहरण के समाप्त करने के लिए ec2 facts module इंस्टेंस आईडी प्राप्त करने के लिए उदाहरण पर मेटाडेटा सेवा से पूछताछ करेगा। ec2 module का उपयोग इसके आईडी द्वारा उदाहरण को समाप्त करने के लिए किया जाता है।

नोट करें कि ec2_facts मॉड्यूल को उस उदाहरण (उदाहरणों) पर चलाने की आवश्यकता है जिसे आप समाप्त करना चाहते हैं और आप संभवतः एक सूची फ़ाइल या dynamic inventory का उपयोग करना चाहते हैं ताकि होस्ट नाम से उन्हें संबोधित करने के बजाय टैग द्वारा उदाहरण (ओं) को देख सकें।

0

जब आप मूल रूप से उन उदाहरणों को बनाते हैं, तो सुनिश्चित करें कि उन्हें विशिष्ट रूप से पहचानें/टैग करें। फिर निम्न रनों पर आप अपनी मेजबान सूची को पॉप्युलेट करने के लिए डायनामिक इन्वेंट्री स्क्रिप्ट का उपयोग कर सकते हैं, जैसा कि यहां http://docs.ansible.com/intro_dynamic_inventory.html देखा गया है और फिर अपने टैग से मेल खाने वाले उदाहरणों को समाप्त कर सकते हैं।

1

मैं एक कामकाजी उदाहरण के साथ jarv का उत्तर बढ़ा दूंगा, जिसमें आप उत्तरदायी प्लेबुक के साथ सर्वर या सर्वर के समूह को समाप्त कर सकते हैं।

चलो मान लीजिए, आप एक उदाहरण (s), कि अपने मेजबान में नष्ट समूह के अंतर्गत आते समाप्त करना चाहते दायर:

[delete] 
X.X.X.X # IP address of an EC2 instance 

अब आप अपने प्लेबुक (इस तरह दिखना मेरे मामले में हो जाएगा, मैं नामित यह "ec2_terminate.yml"):

--- 
- hosts: delete 
    gather_facts: True 
    user: ubuntu 
    sudo: True 
    tasks: 

    # fetch instance data from the metadata servers in ec2 
    - ec2_facts: 

    # just show the instance-id 
    - debug: msg= "{{ hostvars[inventory_hostname]['ansible_ec2_instance_id'] }}" 

- hosts: delete 
    gather_facts: True 
    connection: local 
    vars: 
    region: "us-east-1" 
    tasks: 
    - name: destroy all instances 
     ec2: state='absent' 
      region={{ region }} 
      instance_ids={{ item }} 
      wait=true 
     with_items: hostvars[inventory_hostname]['ansible_ec2_instance_id'] 

अब इस तरह इस प्लेबुक चलाएँ:,

ansible-playbook -i hosts ec2_terminate.yml 
+0

बदलने के लिए फ़ाइल, इस ec2_facts चलाने के बाद मेरे लिए काम करने लगता है: {{ansible_ec2_instance_id}} – radtek

2

खैर अगर हम कर रहे हैं जी गतिशील सूची का उपयोग करने के oing, तो मैं count_tags और exact_count का उपयोग करना चाहिये EC2 मॉड्यूल जब create.yml साथ उदाहरणों बनाने के साथ:

--- 
- hosts: localhost 
    connection: local 
    gather_facts: false 
    vars_files: { ./env.yml } 
    tasks: 
    - name: Provision a set of instances 
    ec2: 
     instance_type: "{{ item.value.instance_type }}" 
     image: "{{ image }}" 
     region: "{{ region }}" 
     vpc_subnet_id: "{{ item.value.vpc_subnet_id }}" 
     tenancy: "{{ tenancy }}" 
     group_id: "{{ group_id }}" 
     key_name: "{{ key_name }}" 
     wait: true 
     instance_tags: 
      Name: "{{ env_id }}" 
      Type: "{{ item.key }}" 
     count_tag: 
      Type: "{{ item.key }}" 
     exact_count: "{{ item.value.count }}" 
    with_dict: "{{ servers }}" 
    register: ec2 

env.yml फ़ाइल उन सभी चर है, और सर्वर शब्दकोश:

--- 
env_id: JaxDemo 
key_name: JaxMagicKeyPair 
image: "ami-xxxxxxxx" 
region: us-east-1 
group_id: "sg-xxxxxxxx,sg-yyyyyyyy,sg-zzzzzzzz" 
tenancy: dedicated 

servers: 
    app: 
     count: 2 
     vpc_subnet_id: subnet-xxxxxxxx 
     instance_type: m3.medium 
    httpd: 
     count: 1 
     vpc_subnet_id: subnet-yyyyyyyy 
     instance_type: m3.medium 
    oracle: 
     count: 1 
     vpc_subnet_id: subnet-zzzzzzzz 
     instance_type: m4.4xlarge 

अब, यदि आप सर्वर की संख्या को बदलना चाहते हैं, तो बस सर्वर शब्दकोश में गिनती बदलें। यदि आप उन सभी को हटाना चाहते हैं, तो हम सभी की गणना 0

या, यदि आप चाहें तो बनाएं।YMLdelete_all.yml, और केवल 1 सर्वर के साथ

exact_count: "{{ item.value.count }}" 

साथ

exact_count: 0 
संबंधित मुद्दे