2017-10-12 85 views
0

我很努力使這項工作沒有成功..在這裏,我的劇本。使用Ansible終止基於標籤的EC2實例

首先按標籤搜索我的機器,然後嘗試終止它們。運行這樣

- name: EC2 Facts 
    ec2_instance_facts: 
     region: us-east-1 
     filters: 
     "tag:Type": "staging" 
     aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
     aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    register: ec2 

    - name: Kill EC2 Instance 
    ec2: 
    instance_ids: "{{ item.instance_id }}" 
    state: "{{ state }}" 
    region: "{{ lookup('env', 'AWS_REGION') }}" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    with_items: "{{ ec2.instances }}" 

ansible-playbook ec2_id_kill.yml --extra-vars "state=absent" 

看起來ansible找不到INSTANCE_ID從我使用這個終止單個實例的事實

+0

什麼是錯誤信息?你能修復代碼縮進嗎? – helloV

+0

「味精」:「圖像參數是新實例所必需的」看起來可能無法獲得正確的** instance_id **。我正在使用ansible-2.4 – lnx0101

+0

這可能是傳遞的'state'值不被使用/兌現。它使用'present'的默認值並嘗試創建一個實例。如果您不修復縮進,則無法提供幫助。 – helloV

回答

0

,你可以調整這個終止多例如:

- name: EC2 Facts 
    ec2_instance_facts: 
    region: us-east-1 
    filters: 
     "tag:Type": "staging" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    register: ec2 

- name: Kill EC2 Instance 
    ec2: 
    instance_ids: "{{ ec2.instances[0].id }}" 
    state: "{{ state }}" 
    region: "{{ lookup('env', 'AWS_REGION') }}" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 

Hope tha t幫助你

+0

仍然不工作...錯誤:致命:[localhost]:失敗! => {「changed」:false,「failed」:true,「msg」:「圖像參數是新實例所必需的」} – lnx0101

+0

它顯示您正試圖創建新實例而不是終止舊實例。請分享你的完整劇本 –