salt.states.boto_route53
Manage Route53 records
Create and delete Route53 records. Be aware that this interacts with Amazon's
services, and so may incur charges.
This module uses boto
, which can be installed via package, or pip.
This module accepts explicit route53 credentials but can also utilize
IAM roles assigned to the instance through Instance Profiles. Dynamic
credentials are then automatically obtained from AWS API and no further
configuration is necessary. More information available here.
If IAM roles are not used you need to specify them either in a pillar file or
in the minion's config file:
route53.keyid: GKTADJGHEIQSXMKKRBJ08H
route53.key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
It's also possible to specify key
, keyid
and region
via a profile, either
passed in as a dict, or as a string to pull from pillars or minion config:
myprofile:
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
region: us-east-1
mycnamerecord:
boto_route53.present:
- name: test.example.com.
- value: my-elb.us-east-1.elb.amazonaws.com.
- zone: example.com.
- ttl: 60
- record_type: CNAME
- region: us-east-1
- keyid: GKTADJGHEIQSXMKKRBJ08H
- key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
# Using a profile from pillars
myarecord:
boto_route53.present:
- name: test.example.com.
- value: 1.1.1.1
- zone: example.com.
- ttl: 60
- record_type: A
- region: us-east-1
- profile: myprofile
# Passing in a profile
myarecord:
boto_route53.present:
- name: test.example.com.
- value: 1.1.1.1
- zone: example.com.
- ttl: 60
- record_type: A
- region: us-east-1
- profile:
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
-
salt.states.boto_route53.
absent
(name, zone, record_type, identifier=None, region=None, key=None, keyid=None, profile=None, wait_for_sync=True, split_dns=False, private_zone=False)
Ensure the Route53 record is deleted.
- name
- Name of the record.
- zone
- The zone to delete the record from.
- record_type
- The record type (A, NS, MX, TXT, etc.)
- identifier
- An identifier to match for deletion.
- region
- The region to connect to.
- key
- Secret key to be used.
- keyid
- Access key to be used.
- profile
- A dict with region, key and keyid, or a pillar key (string)
that contains a dict with region, key and keyid.
- wait_for_sync
- Wait for an INSYNC change status from Route53.
- split_dns
- Route53 supports a public and private DNS zone with the same
names.
- private_zone
- If using split_dns, specify if this is the private zone.
-
salt.states.boto_route53.
hosted_zone_absent
(name, domain_name=None, region=None, key=None, keyid=None, profile=None)
Ensure the Route53 Hostes Zone described is absent
- name
- The name of the state definition.
- domain_name
- The FQDN (including final period) of the zone you wish absent. If not
provided, the value of name will be used.
-
salt.states.boto_route53.
hosted_zone_present
(name, domain_name=None, private_zone=False, comment='', vpc_id=None, vpc_name=None, vpc_region=None, region=None, key=None, keyid=None, profile=None)
Ensure a hosted zone exists with the given attributes. Note that most
things cannot be modified once a zone is created - it must be deleted and
re-spun to update these attributes:
- private_zone (AWS API limitation).
- comment (the appropriate call exists in the AWS API and in boto3, but has
not, as of this writing, been added to boto2).
- vpc_id (same story - we really need to rewrite this module with boto3)
- vpc_name (really just a pointer to vpc_id anyway).
- vpc_region (again, supported in boto3 but not boto2).
- name
- The name of the state definition. This will be used as the 'caller_ref'
param if/when creating the hosted zone.
- domain_name
- The name of the domain. This should be a fully-specified domain, and
should terminate with a period. This is the name you have registered
with your DNS registrar. It is also the name you will delegate from your
registrar to the Amazon Route 53 delegation servers returned in response
to this request. Defaults to the value of name if not provided.
- comment
- Any comments you want to include about the hosted zone.
- private_zone
- Set True if creating a private hosted zone.
- vpc_id
- When creating a private hosted zone, either the VPC ID or VPC Name to
associate with is required. Exclusive with vpe_name. Ignored if passed
for a non-private zone.
- vpc_name
- When creating a private hosted zone, either the VPC ID or VPC Name to
associate with is required. Exclusive with vpe_id. Ignored if passed
for a non-private zone.
- vpc_region
- When creating a private hosted zone, the region of the associated VPC is
required. If not provided, an effort will be made to determine it from
vpc_id or vpc_name, if possible. If this fails, you'll need to provide
an explicit value for this option. Ignored if passed for a non-private
zone.
-
salt.states.boto_route53.
present
(name, value, zone, record_type, ttl=None, identifier=None, region=None, key=None, keyid=None, profile=None, wait_for_sync=True, split_dns=False, private_zone=False)
Ensure the Route53 record is present.
- name
- Name of the record.
- value
- Value of the record. As a special case, you can pass in:
- private:<Name tag> to have the function autodetermine the private IP
public:<Name tag> to have the function autodetermine the public IP
- zone
- The zone to create the record in.
- record_type
- The record type (A, NS, MX, TXT, etc.)
- ttl
- The time to live for the record.
- identifier
- The unique identifier to use for this record.
- region
- The region to connect to.
- key
- Secret key to be used.
- keyid
- Access key to be used.
- profile
- A dict with region, key and keyid, or a pillar key (string)
that contains a dict with region, key and keyid.
- wait_for_sync
- Wait for an INSYNC change status from Route53.
- split_dns
- Route53 supports a public and private DNS zone with the same
names.
- private_zone
- If using split_dns, specify if this is the private zone.
-
salt.states.boto_route53.
rr_absent
(*args, **kwargs)
-
salt.states.boto_route53.
rr_present
(*args, **kwargs)