community.aws.iam_role module – Manage AWS IAM roles
Note
This module is part of the community.aws collection (version 5.5.0).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install community.aws
.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: community.aws.iam_role
.
New in community.aws 1.0.0
Synopsis
Manage AWS IAM roles.
Requirements
The below requirements are needed on the host that executes this module.
python >= 3.6
boto3 >= 1.18.0
botocore >= 1.21.0
Parameters
Parameter |
Comments |
---|---|
AWS access key ID. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The aws_access_key and profile options are mutually exclusive. The aws_access_key_id alias was added in release 5.1.0 for consistency with the AWS botocore SDK. The ec2_access_key alias has been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
The trust relationship policy document that grants an entity permission to assume the role. This parameter is required when state=present. |
|
The location of a CA Bundle to use when validating SSL certificates. The |
|
A dictionary to modify the botocore configuration. Parameters can be found in the AWS documentation https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. |
|
The ARN of an IAM managed policy to use to restrict the permissions this role can pass on to IAM roles/users that it creates. Boundaries cannot be set on Instance Profiles, as such if this option is specified then create_instance_profile must be This is intended for roles/users that have permissions to create new IAM objects. For more information on boundaries, see https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html. |
|
Creates an IAM instance profile along with the role. Choices:
|
|
Use a The Choices:
|
|
When delete_instance_profile=true and state=absent deleting a role will also delete the instance profile created with the same name as the role. Only applies when state=absent. Choices:
|
|
Provides a description of the role. |
|
URL to connect to instead of the default AWS endpoints. While this can be used to connection to other AWS-compatible services the amazon.aws and community.aws collections are only tested against AWS. The The ec2_url and s3_url aliases have been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
A list of managed policy ARNs, managed policy ARNs or friendly names. To remove all policies set purge_polices=true and managed_policies=[None]. To embed an inline policy, use community.aws.iam_policy. |
|
The maximum duration (in seconds) of a session when assuming the role. Valid values are between 1 and 12 hours (3600 and 43200 seconds). |
|
The name of the role to create. |
|
The path to the role. For more information about paths, see https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html. Default: |
|
A named AWS profile to use for authentication. See the AWS documentation for more information about named profiles https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html. The The profile option is mutually exclusive with the aws_access_key, aws_secret_key and security_token options. |
|
When purge_policies=true any managed policies not listed in managed_policies will be detatched. Choices:
|
|
If purge_tags=true and tags is set, existing tags will be purged from the resource to match exactly what is defined by tags parameter. If the tags parameter is not set then tags will not be modified, even if purge_tags=True. Tag keys beginning with Choices:
|
|
The AWS region to use. For global services such as IAM, Route53 and CloudFront, region is ignored. The See the Amazon AWS documentation for more information http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region. The Support for the |
|
AWS secret access key. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The secret_key and profile options are mutually exclusive. The aws_secret_access_key alias was added in release 5.1.0 for consistency with the AWS botocore SDK. The ec2_secret_key alias has been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
AWS STS session token for use with temporary credentials. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The security_token and profile options are mutually exclusive. Aliases aws_session_token and session_token were added in release 3.2.0, with the parameter being renamed from security_token to session_token in release 6.0.0. The security_token, aws_security_token, and access_token aliases have been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
Create or remove the IAM role. Choices:
|
|
A dictionary representing the tags to be applied to the resource. If the tags parameter is not set then tags will not be modified. |
|
When set to Setting validate_certs=false is strongly discouraged, as an alternative, consider setting aws_ca_bundle instead. Choices:
|
|
When wait=True the module will wait for up to wait_timeout seconds for IAM role creation before returning. Choices:
|
|
How long (in seconds) to wait for creation / update to complete. Default: |
Notes
Note
Caution: For modules, environment variables and configuration files are read from the Ansible ‘host’ context and not the ‘controller’ context. As such, files may need to be explicitly copied to the ‘host’. For lookup and connection plugins, environment variables and configuration files are read from the Ansible ‘controller’ context and not the ‘host’ context.
The AWS SDK (boto3) that Ansible uses may also read defaults for credentials and other settings, such as the region, from its configuration files in the Ansible ‘host’ context (typically
~/.aws/credentials
). See https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html for more information.
Examples
# Note: These examples do not set authentication details, see the AWS Guide for details.
- name: Create a role with description and tags
community.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
description: This is My New Role
tags:
env: dev
- name: "Create a role and attach a managed policy called 'PowerUserAccess'"
community.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
managed_policies:
- arn:aws:iam::aws:policy/PowerUserAccess
- name: Keep the role created above but remove all managed policies
community.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
managed_policies: []
- name: Delete the role
community.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file', 'policy.json') }}"
state: absent
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
dictionary containing the IAM Role data Returned: success |
|
the Amazon Resource Name (ARN) specifying the role Returned: always Sample: |
|
the policy that grants an entity permission to assume the role note: the case of keys in this dictionary are currently converted from CamelCase to snake_case. In a release after 2023-12-01 this behaviour will change Returned: always Sample: |
|
the policy that grants an entity permission to assume the role Returned: always Sample: |
|
a list of dicts containing the name and ARN of the managed IAM policies attached to the role Returned: always Sample: |
|
the date and time, in ISO 8601 date-time format, when the role was created Returned: always Sample: |
|
the path to the role Returned: always Sample: |
|
the stable and unique string identifying the role Returned: always Sample: |
|
the friendly name that identifies the role Returned: always Sample: |
|
role tags Returned: always Sample: |