amazon.aws icon indicating copy to clipboard operation
amazon.aws copied to clipboard

[WIP] ec2_instance: ability to change the instance type

Open markuman opened this issue 7 months ago • 5 comments

SUMMARY

Currently the ec2_instance module ignores changes on instance_type parameter.
Furthermore, changes on instance_type is only possible when the state is stopped.

ISSUE TYPE
  • Bugfix Pull Request
  • Docs Pull Request
  • Feature Pull Request
COMPONENT NAME

ec2_instance

ADDITIONAL INFORMATION
---
- hosts: localhost
  tasks:
  - name: new instance
    amazon.aws.ec2_instance:
      name: ansible-one1
      key_name: popnuc
      vpc_subnet_id: subnet-943ad4d8
      instance_type: t4g.nano
      security_group: default
      image_id: "{{ lookup('aws_ssm', '/aws/service/canonical/ubuntu/server-minimal/22.04/stable/current/arm64/hvm/ebs-gp2/ami-id') }}"
      wait: true
    register: bla

  - name: stopp instance
    amazon.aws.ec2_instance:
      name: ansible-one1
      key_name: popnuc
      instance_ids: "{{ bla.instance_ids }}"
      state: stopped
      wait: true

  - name: start different size
    amazon.aws.ec2_instance:
      name: ansible-one1
      key_name: popnuc
      instance_ids: "{{ bla.instance_ids }}"
      state: started
      instance_type: t4g.micro
      wait: true

markuman avatar Nov 30 '23 21:11 markuman

Build succeeded. https://ansible.softwarefactory-project.io/zuul/buildset/e7ff648235f2416e9312c9c080cc1ebd

:heavy_check_mark: ansible-galaxy-importer SUCCESS in 5m 37s :heavy_check_mark: build-ansible-collection SUCCESS in 14m 12s :heavy_check_mark: ansible-test-splitter SUCCESS in 6m 11s :heavy_check_mark: integration-amazon.aws-1 SUCCESS in 28m 54s :heavy_check_mark: integration-amazon.aws-2 SUCCESS in 21m 04s :heavy_check_mark: integration-amazon.aws-3 SUCCESS in 16m 13s :heavy_check_mark: integration-amazon.aws-4 SUCCESS in 15m 12s :heavy_check_mark: integration-amazon.aws-5 SUCCESS in 11m 09s :heavy_check_mark: integration-amazon.aws-6 SUCCESS in 7m 06s :heavy_check_mark: integration-amazon.aws-7 SUCCESS in 10m 28s :heavy_check_mark: integration-amazon.aws-8 SUCCESS in 13m 21s :heavy_check_mark: integration-amazon.aws-9 SUCCESS in 15m 48s :heavy_check_mark: integration-amazon.aws-10 SUCCESS in 8m 38s :heavy_check_mark: integration-amazon.aws-11 SUCCESS in 7m 12s :heavy_check_mark: integration-amazon.aws-12 SUCCESS in 10m 08s :heavy_check_mark: integration-amazon.aws-13 SUCCESS in 11m 02s :heavy_check_mark: integration-amazon.aws-14 SUCCESS in 11m 00s :heavy_check_mark: integration-amazon.aws-15 SUCCESS in 8m 49s :heavy_check_mark: integration-amazon.aws-16 SUCCESS in 10m 31s :heavy_check_mark: integration-amazon.aws-17 SUCCESS in 7m 59s :heavy_check_mark: integration-amazon.aws-18 SUCCESS in 11m 58s :heavy_check_mark: integration-amazon.aws-19 SUCCESS in 11m 18s Skipped 25 jobs

Docs Build 📝

Thank you for contribution!✨

The docsite for this PR is available for download as an artifact from this run: https://github.com/ansible-collections/amazon.aws/actions/runs/7063915464

You can compare to the docs for the main branch here: https://ansible-collections.github.io/amazon.aws/branch/main

File changes:

  • M collections/amazon/aws/ec2_instance_module.html
Click to see the diff comparison.

NOTE: only file modifications are shown here. New and deleted files are excluded. See the file list and check the published docs to see those files.

diff --git a/home/runner/work/amazon.aws/amazon.aws/docsbuild/base/collections/amazon/aws/ec2_instance_module.html b/home/runner/work/amazon.aws/amazon.aws/docsbuild/head/collections/amazon/aws/ec2_instance_module.html
index 18ddcd2..362f4b5 100644
--- a/home/runner/work/amazon.aws/amazon.aws/docsbuild/base/collections/amazon/aws/ec2_instance_module.html
+++ b/home/runner/work/amazon.aws/amazon.aws/docsbuild/head/collections/amazon/aws/ec2_instance_module.html
@@ -506,6 +506,7 @@ see <a class="reference internal" href="#ansible-collections-amazon-aws-ec2-inst
 <td><div class="ansible-option-cell"><p>Instance type to use for the instance, see <a class="reference external" href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html</a>.</p>
 <p>Only required when instance is not already present.</p>
 <p>At least one of <em>instance_type</em> or <em>launch_template</em> must be specificed when launching an instance.</p>
+<p>To change the <em>instance_type</em>, the instance must be in <em>state=stopped</em>.</p>
 </div></td>
 </tr>
 <tr class="row-even"><td><div class="ansible-option-cell">

github-actions[bot] avatar Dec 01 '23 09:12 github-actions[bot]

Build failed. https://ansible.softwarefactory-project.io/zuul/buildset/bd885c438884406aa78afa66e57b3bdb

:heavy_check_mark: ansible-galaxy-importer SUCCESS in 8m 51s :heavy_check_mark: build-ansible-collection SUCCESS in 15m 45s :heavy_check_mark: ansible-test-splitter SUCCESS in 5m 53s :heavy_check_mark: integration-amazon.aws-1 SUCCESS in 27m 12s :heavy_check_mark: integration-amazon.aws-2 SUCCESS in 26m 20s :heavy_check_mark: integration-amazon.aws-3 SUCCESS in 12m 53s :heavy_check_mark: integration-amazon.aws-4 SUCCESS in 12m 51s :heavy_check_mark: integration-amazon.aws-5 SUCCESS in 12m 27s :heavy_check_mark: integration-amazon.aws-6 SUCCESS in 15m 40s :heavy_check_mark: integration-amazon.aws-7 SUCCESS in 7m 13s :x: integration-amazon.aws-8 FAILURE in 20m 14s :heavy_check_mark: integration-amazon.aws-9 SUCCESS in 13m 53s :heavy_check_mark: integration-amazon.aws-10 SUCCESS in 15m 24s :heavy_check_mark: integration-amazon.aws-11 SUCCESS in 8m 57s :heavy_check_mark: integration-amazon.aws-12 SUCCESS in 14m 40s :heavy_check_mark: integration-amazon.aws-13 SUCCESS in 11m 52s :heavy_check_mark: integration-amazon.aws-14 SUCCESS in 13m 25s :heavy_check_mark: integration-amazon.aws-15 SUCCESS in 10m 37s :heavy_check_mark: integration-amazon.aws-16 SUCCESS in 18m 24s :heavy_check_mark: integration-amazon.aws-17 SUCCESS in 9m 23s :x: integration-amazon.aws-18 RETRY_LIMIT in 1m 47s :heavy_check_mark: integration-amazon.aws-19 SUCCESS in 17m 49s Skipped 25 jobs

Build failed. https://ansible.softwarefactory-project.io/zuul/buildset/c049cd71255f488eb4439bf8407e25ff

:heavy_check_mark: ansible-galaxy-importer SUCCESS in 5m 02s :heavy_check_mark: build-ansible-collection SUCCESS in 15m 28s :heavy_check_mark: ansible-test-splitter SUCCESS in 5m 14s :heavy_check_mark: integration-amazon.aws-1 SUCCESS in 26m 56s :heavy_check_mark: integration-amazon.aws-2 SUCCESS in 19m 46s :heavy_check_mark: integration-amazon.aws-3 SUCCESS in 12m 15s :heavy_check_mark: integration-amazon.aws-4 SUCCESS in 12m 34s :heavy_check_mark: integration-amazon.aws-5 SUCCESS in 10m 55s :heavy_check_mark: integration-amazon.aws-6 SUCCESS in 10m 33s :heavy_check_mark: integration-amazon.aws-7 SUCCESS in 10m 12s :x: integration-amazon.aws-8 FAILURE in 15m 38s :heavy_check_mark: integration-amazon.aws-9 SUCCESS in 13m 46s :heavy_check_mark: integration-amazon.aws-10 SUCCESS in 13m 58s :heavy_check_mark: integration-amazon.aws-11 SUCCESS in 8m 29s :x: integration-amazon.aws-12 RETRY_LIMIT in 6m 44s :heavy_check_mark: integration-amazon.aws-13 SUCCESS in 11m 07s :heavy_check_mark: integration-amazon.aws-14 SUCCESS in 13m 32s :heavy_check_mark: integration-amazon.aws-15 SUCCESS in 9m 37s :heavy_check_mark: integration-amazon.aws-16 SUCCESS in 10m 03s :heavy_check_mark: integration-amazon.aws-17 SUCCESS in 8m 51s :heavy_check_mark: integration-amazon.aws-18 SUCCESS in 8m 30s :heavy_check_mark: integration-amazon.aws-19 SUCCESS in 11m 42s :heavy_check_mark: integration-community.aws-1 SUCCESS in 24m 50s :heavy_check_mark: integration-community.aws-2 SUCCESS in 56m 47s :heavy_check_mark: integration-community.aws-3 SUCCESS in 24m 20s :heavy_check_mark: integration-community.aws-4 SUCCESS in 17m 19s :heavy_check_mark: integration-community.aws-5 SUCCESS in 16m 20s :heavy_check_mark: integration-community.aws-6 SUCCESS in 13m 45s :heavy_check_mark: integration-community.aws-7 SUCCESS in 21m 23s :heavy_check_mark: integration-community.aws-8 SUCCESS in 6m 50s :heavy_check_mark: integration-community.aws-9 SUCCESS in 14m 42s :heavy_check_mark: integration-community.aws-10 SUCCESS in 22m 21s :heavy_check_mark: integration-community.aws-11 SUCCESS in 9m 24s :heavy_check_mark: integration-community.aws-12 SUCCESS in 10m 12s :heavy_check_mark: integration-community.aws-13 SUCCESS in 15m 04s :heavy_check_mark: integration-community.aws-14 SUCCESS in 9m 38s Skipped 11 jobs

Something weird happens here, while the local integration test succeeds.
The assert for task ec2_instance_cpu_options : start instance as t3.micro is failing.

  • change detection is correct: https://ansible.softwarefactory-project.io/zuul/build/b7904ec9dad14e94869e8ad5bb514757/log/job-output.txt#3953
  • but the instance itself, still boots as t3.nano https://ansible.softwarefactory-project.io/zuul/build/b7904ec9dad14e94869e8ad5bb514757/log/job-output.txt#3994

I'm not sure what happens here.
t3.nano and t3.micro should be allowed https://github.com/mattclay/aws-terminator/blob/8512bb30ce115dc00128ff93cbacb6ab48c606b5/aws/policy/compute.yaml#L27-L28

do you have any ideas @tremble

markuman avatar Dec 02 '23 07:12 markuman