title: ansible-ec2: Enforce instance type change
body: <p>I am running an (so far) idempotent <code>ansible</code> script to create <code>ec2</code> instances.</p>
  
  <p>So far, I had a dictionary with my <code>ec2</code> parameters in the default section of my role, more or less as follows.</p>
  
  <pre><code> my_instances:
   - instance_type: "t2.micro"
     exact_count: "1"
     assign_public_ip: "no"
   - instance_type: "t2.micro"
     exact_count: "1"
     assign_public_ip: "no"
  </code></pre>
  
  <p>and running the following task based on those vars:</p>
  
  <pre><code>- name: Create my instances
    ec2:
      instance_type: "{{ item.ec2_instance_type }}"
      region: "us-east-1"
      image: "some-image"
      group_id: "some-group-id"
      vpc_subnet_id: "some-subnet-id"
      instance_tags:
    with_items: "{{ my_instances }}"
  </code></pre>
  
  <p>Those instances are there and running so the script as I said is idempotent.</p>
  
  <p>I want to re-run the script, having one of the instance types changed (from <code>t2.micro</code> --> <code>t2.small</code>), e.g. as follows:</p>
  
  <pre><code> - instance_type: "t2.small"
  </code></pre>
  
  <p>However, when I perform the change in the above variable, the script runs idempotently again, although the output yields:</p>
  
  <pre><code>ok: [localhost] =&gt; (item={instance_type': u't2.small'})
  </code></pre>
  
  <p>(output trimmed).</p>
  
  <p>The instance type remains <code>t2.micro</code></p>
  
  <p>Why is this happening? </p>