/amazon.aws

Ansible Collection for Amazon AWS

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Amazon AWS Collection

The Ansible Amazon AWS collection includes a variety of Ansible content to help automate the management of AWS services. This collection is maintained by the Ansible cloud team.

Description

The primary purpose of this collection is to simplify and streamline the management of AWS resources through automation. By leveraging this collection, organizations can reduce manual intervention, minimize errors, and ensure consistent and repeatable deployments. This leads to increased efficiency, faster deployments, and a more agile IT infrastructure.

AWS related modules and plugins supported by the Ansible community are in the community.aws collection.

Being Red Hat Ansible Certified Content, this collection is eligible for support through the Ansible Automation Platform.

Communication

For more information about communication, see the Ansible communication guide.

Requirements

Ansible version compatibility

Tested with the Ansible Core >= 2.15.0 versions, and the current development version of Ansible. Ansible Core versions prior to 2.15.0 are not supported.

Python version compatibility

This collection depends on the AWS SDK for Python (Boto3 and Botocore). Due to the AWS SDK Python Support Policy this collection requires Python 3.7 or greater.

Amazon has also announced the planned end of support for Python less than 3.8. As such support for Python less than 3.8 will be removed in a release after 2024-12-01.

AWS SDK version compatibility

Starting with the 2.0.0 releases of amazon.aws and community.aws, it is generally the collection's policy to support the versions of botocore and boto3 that were released 12 months prior to the most recent major collection release, following semantic versioning (for example, 2.0.0, 3.0.0).

Version 9.0.0 of this collection supports boto3 >= 1.28.0 and botocore >= 1.31.0

All support for the original AWS SDK boto was removed in release 4.0.0.

Included content

See the complete list of collection content in the Plugin Index.

Installation

The amazon.aws collection can be installed with Ansible Galaxy command-line tool:

    ansible-galaxy collection install amazon.aws

You can also include it in a requirements.yml file and install it with ansible-galaxy collection install -r requirements.yml, using the format:

---
collections:
  - name: amazon.aws

Note that if you install any collections from Ansible Galaxy, they will not be upgraded automatically when you upgrade the Ansible package. To upgrade the collection to the latest available version, run the following command:

ansible-galaxy collection install amazon.aws --upgrade

A specific version of the collection can be installed by using the version keyword in the requirements.yml file:

---
collections:
  - name: amazon.aws
    version: 3.1.1

or using the ansible-galaxy command as follows

ansible-galaxy collection install amazon.aws:==1.0.0

The python module dependencies are not installed by ansible-galaxy. They can be manually installed using pip:

pip install -r requirements.txt

or:

pip install boto3 botocore

Refer the following for more details.

Use Cases

You can either call modules by their Fully Qualified Collection Name (FQCN), such as amazon.aws.ec2_instance, or you can call modules by their short name if you list the amazon.aws collection in the playbook's collections keyword:

---
  - name: Setup an instance for testing
    amazon.aws.ec2_instance:
      name: '{{ ec2_instance_name }}'
      instance_type: t2.nano
      image_id: "{{ (amis.images | sort(attribute='creation_date') | last).image_id }}"
      wait: yes
      volumes:
        - device_name: /dev/xvda
          ebs:
            volume_size: 8
            delete_on_termination: true
    register: instance

  - name: Gather {{ ec2_instance_name }} info
    amazon.aws.ec2_instance_info:
      filters:
        tag:Name: "{{ ec2_instance_name }}"
        include_attributes:
          - instanceType
          - kernel
          - ramdisk
          - userData
          - disableApiTermination
          - instanceInitiatedShutdownBehavior
          - rootDeviceName
          - blockDeviceMapping
          - productCodes
          - sourceDestCheck
          - groupSet
          - ebsOptimized
          - sriovNetSupport
          - enclaveOptions
      register: instance_info

  - name: Delete instance created for tests
    amazon.aws.ec2_instance:
      state: absent
      instance_ids: "{{ instance.instance_ids }}"
      wait: false

Testing

This collection is tested using GitHub Actions. To know more about testing, refer to CI.md.

Contributing to this collection

We welcome community contributions to this collection. If you find problems, please open an issue or create a PR against the Amazon AWS collection repository. See CONTRIBUTING.md for more details.

More information about contributing

Support

You can also join us on:

Release notes

See the rendered changelog or the raw generated changelog.

Related Information

License Information

GNU General Public License v3.0 or later.

See COPYING to see the full text.