ec2_security_group – Manage EC2 VPC security groups.¶
Create, delete or update an EC2 VPC security group.
Examples¶
- name: Create a very simple security group in the default vpc,
allows all outbound and internal traffic
ec2_security_group:
name: my-first-security
description: Secure me.
register: first_security_group
- name: Prohibit all egress traffic from the security group
ec2_security_group:
id: "{{ first_security_group.id }}"
egress:
rules: []
clear_rules: true
- name: Prohibit internal traffic within the security group
ec2_security_group:
id: "{{ first_security_group.id }}"
ingress:
rules: []
clear_rules: true
- name: Allow unidirectional cross-traffic between this and another security group
ec2_security_group:
id: "{{ first_security_group.id }}"
egress:
rules:
- protocol: all
security_groups:
- id: sg-1
- name: Allow IPv6-only 80/tcp, ICMPv4 and ICMPv6 echo traffic to the security group
ec2_security_group:
id: "{{ first_security_group.id }}"
ingress:
rules:
- protocol: tcp
port: 80
ip_ranges:
- cidr: ::/0
- protocol: udp
port_from: 10000
port_to: 10010
ip_ranges:
- cidr: 192.0.2.0/24
description: Super Load Balancer 3000
- protocol: icmp
icmp_type: 8
ip_ranges:
- cidr: 0.0.0.0/0
- protocol: icmpv6
icmp_type: 8
ip_ranges:
- cidr: 0.0.0.0/0
- name: Remove a security group
ec2_security_group:
id: "{{ first_security_group.id }}"
state: absent
See Also¶
Parameters¶
- auth (optional)
Parameters for authenticating with the AWS service. Each of them may be defined via environment variables.
type: dict- access_key (optional)
The AWS access key ID. If not set, the value of the AWS_ACCESS_KEY environment variable will be checked.
Mutually exclusive with profile.
type: str- profile (optional)
The name of the AWS profile configured with
aws configure
.Can be used instead of explicitly specifying your access credentials and region.
Use
default
to use the default profile.Mutually exclusive with access_key and secret_key.
type: str- region (optional)
The name of the AWS region.
If not set, the value of the AWS_REGION environment variable will be checked.
If you set a profile that specifies a default region, that region is used and you can omit this parameter. Use this parameter to override the profile’s default region.
type: str- secret_key (optional)
The AWS secret access key. If not set, the value of the AWS_SECRET_KEY environment variable will be checked.
Mutually exclusive with profile.
type: str- url (optional)
The URL to the AWS service related to the resource. By default, this is automatically determined through the region parameter.
If not set explicitly, the value of the AWS_<SERVICE>_URL environment variable will be used.
The services currently supported are EC2 and S3.
type: str
- clear_tags (optional)
Whether to clear any existing tags on the resource that are not explicitly stated in tags.
By default, existing tags are kept on the resource.
When this parameter is set to
true
, any pre-existing tags on the resource (including the name tag) are removed. To clear all tags except the name tag, make sure to provide the name parameter.type: bool- description (optional)
Short description of the AWS resource.
type: str- egress (optional)
Egress (outbound) security rules.
Note that by default, every newly created security group will include a default egress rule which permits all outbound traffic.
type: dict- clear_rules (optional)
Whether to clear rules not specified in the rules section.
In other words, whether to treat the rule definitions of this task as exclusive.
type: bool- rules (optional)
IP/ICMP filtering rules as a whitelist.
The default value for this module does not include includes the default rules AWS creates. When clearing all rules, take note that the rules created by default will also be cleared.
type: list- icmp_code (optional)
The ICMP code (subtype) for this rule. If this parameter is omitted, the default behaviour is to allow all ICMP codes.
Only used when protocol=[icmp, icmpv6]
When icmp_code is specified, icmp_type is required.
type: intdefault: -1- icmp_type (optional)
The ICMP type for this rule. If this parameter is omitted, the default behaviour is to allow all ICMP types.
Only used when protocol=[icmp, icmpv6]
If specifying icmp_code, this parameter is required.
type: intdefault: -1- ip_ranges (optional)
The IP ranges for this rule in CIDR notation.
type: list- cidr (required)
In CIDR notation, the IP range of this rule.
type: str- description (optional)
An optional description for this IP range.
type: str
- port (optional)
The port specification for this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port_from and port_to.
type: int- port_from (optional)
The start port (inclusive) of the port range of this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port.
Requires port_to.
type: int- port_to (optional)
The start port (inclusive) of the port range of this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port.
Requires port_from.
type: int- protocol (required)
What protocol this rule applies to.
type: strchoices: all, tcp, udp, icmp, icmpv6- security_groups (optional)
The security group IDs when using VPC peering.
A special ID value of
self
references the security group controlled by this task.type: list- description (optional)
An optional description for this security group reference.
type: str- id (required)
The ID of the security group this rule references.
type: str
- id (optional)
ID of the resource to perform the task on.
If specified, this parameter is used to identify the resource.
Omit this parameter when you are first creating the resource.
type: str- ingress (optional)
Ingress (inbound) security rules.
Note that AWS creates a default ingress rule, which allows all traffic from the same security group, but only in the default security group created when a VPC is created.
type: dict- clear_rules (optional)
Whether to clear rules not specified in the rules section.
In other words, whether to treat the rule definitions of this task as exclusive.
type: bool- rules (optional)
IP/ICMP filtering rules as a whitelist.
The default value for this module does not include includes the default rules AWS creates. When clearing all rules, take note that the rules created by default will also be cleared.
type: list- icmp_code (optional)
The ICMP code (subtype) for this rule. If this parameter is omitted, the default behaviour is to allow all ICMP codes.
Only used when protocol=[icmp, icmpv6]
When icmp_code is specified, icmp_type is required.
type: intdefault: -1- icmp_type (optional)
The ICMP type for this rule. If this parameter is omitted, the default behaviour is to allow all ICMP types.
Only used when protocol=[icmp, icmpv6]
If specifying icmp_code, this parameter is required.
type: intdefault: -1- ip_ranges (optional)
The IP ranges for this rule in CIDR notation.
type: list- cidr (required)
In CIDR notation, the IP range of this rule.
type: str- description (optional)
An optional description for this IP range.
type: str
- port (optional)
The port specification for this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port_from and port_to.
type: int- port_from (optional)
The start port (inclusive) of the port range of this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port.
Requires port_to.
type: int- port_to (optional)
The start port (inclusive) of the port range of this rule.
Only used when protocol=[tcp, udp]
Mutually exclusive with port.
Requires port_from.
type: int- protocol (required)
What protocol this rule applies to.
type: strchoices: all, tcp, udp, icmp, icmpv6- security_groups (optional)
The security group IDs when using VPC peering.
A special ID value of
self
references the security group controlled by this task.type: list- description (optional)
An optional description for this security group reference.
type: str- id (required)
The ID of the security group this rule references.
type: str
- name (optional)
The name for the security group.
Required when creating a security group or in combination with vpc to uniquely identify one.
Note that the security group name is not an AWS resource tag.
type: str- state (optional)
The desired state of the security group.
If
absent
, the security group is first detached from any instances and then deleted.type: strdefault: presentchoices: present, absent- tags (optional)
Metadata for the AWS resource as key/value pairs.
Keys and values are case-sensitive.
type: dict- vpc (optional)
The ID of the VPC to assign this security group to.
If omitted, the default VPC is assumed.
When id is not specified, vpc will be used to identify a single security group in combination with name.
type: str
Return Values¶
- object (success and I(state=present)), dict, {‘object’: {‘id’: ‘sg-df1b2aa66’, ‘name’: ‘my-first-secgroup’, ‘vpc’: ‘vpc-faff5721’, ‘description’: ‘A description for my first security group.’, ‘tags’: {‘MyCompany-Department’: ‘legal’}, ‘ingress’: {‘rules’: [{‘protocol’: ‘tcp’, ‘port_from’: 22, ‘port_to’: 22, ‘ip_ranges’: [{‘cidr’: ‘0.0.0.0/0’, ‘description’: ‘the world’}]}]}, ‘egress’: {‘rules’: [{‘protocol’: ‘icmp’, ‘icmp_type’: 8, ‘icmp_code’: 0, ‘security_groups’: [{‘id’: ‘sg-64508346’, ‘description’: ‘local sonar’}]}]}}}
An object representing an EC2 VPC security group.
- id (always), str,
The ID of the security group.
- name (always), str,
The name of the security group.
- vpc (always), str,
The ID of the VPC this security group is assigned to.
- description (always), str,
The security group’s description.
- tags (always), dict,
The tags assigned to this security group.
- ingress (always), dict,
Ingress (inbound) security rules.
- rules (always), list,
Ingress (inbound) security rules.
Rules are normalized so each rule only contains one of security_groups or ip_ranges, and at most one element.
- protocol (always), str,
The protocol this rule applies to.
- port_from (when I(protocol=[tcp, udp])), int,
The start port (inclusive) of the port range of this rule.
- port_to (when I(protocol=[tcp, udp])), int,
The start port (inclusive) of the port range of this rule.
- icmp_type (when I(protocol=[icmp, icmpv6])), int,
The ICMP type for this rule.
- icmp_code (when I(protocol=[icmp, icmpv6])), int,
The ICMP code (subtype) for this rule.
- security_groups (when I(ip_range) is not present), list,
A list of a single security group ID and its description.
- id (always), str,
The ID of the security group this rule references.
- description (), str,
The description for this security group reference, if any.
- ip_ranges (when I(security_group) is not present), list,
A list of a single IP range for this rule in CIDR notation.
- cidr (always), str,
In CIDR notation, the IP range of this rule.
- description (), str,
An optional description for this IP range.
- egress (always), dict,
Egress (outbound) security rules.
- rules (always), list,
Egress (outbound) security rules.
Rules are normalized so each rule only contains one of security_groups or ip_ranges, and at most one element.
- protocol (always), str,
The protocol this rule applies to.
- port_from (when I(protocol=[tcp, udp])), int,
The start port (inclusive) of the port range of this rule.
- port_to (when I(protocol=[tcp, udp])), int,
The start port (inclusive) of the port range of this rule.
- icmp_type (when I(protocol=[icmp, icmpv6])), int,
The ICMP type for this rule.
- icmp_code (when I(protocol=[icmp, icmpv6])), int,
The ICMP code (subtype) for this rule.
- security_groups (when I(ip_range) is not present), list,
A list of a single security group ID and its description.
- id (always), str,
The ID of the security group this rule references.
- description (), str,
The description for this security group reference, if any.
- ip_ranges (when I(security_group) is not present), list,
A list of a single IP range for this rule in CIDR notation.
- cidr (always), str,
In CIDR notation, the IP range of this rule.
- description (), str,
An optional description for this IP range.