%PDF- %PDF-
| Direktori : /proc/thread-self/root/proc/self/root/lib/python2.7/site-packages/salt/states/ |
| Current File : //proc/thread-self/root/proc/self/root/lib/python2.7/site-packages/salt/states/boto_asg.pyo |
�
���^c @@ sB d Z d d l m Z m Z m Z d d l Z d d l Z d d l Z d d l j j
Z
d d l Z d d l
m Z d d l m Z e j e � Z d � Z e e e e e e e e e e e d e e d e d e d
e e e e e d e d d
� Z d � Z d � Z d � Z d � Z d � Z e e e e e e d � Z d S( u�
Manage Autoscale Groups
=======================
.. versionadded:: 2014.7.0
Create and destroy autoscale groups. 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 autoscale 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 at:
.. code-block:: text
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
If IAM roles are not used you need to specify them either in a pillar or
in the minion's config file:
.. code-block:: yaml
asg.keyid: GKTADJGHEIQSXMKKRBJ08H
asg.key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
It's also possible to specify key, keyid and region via a profile, either
as a passed in dict, or as a string to pull from pillars or minion config:
.. code-block:: yaml
myprofile:
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
region: us-east-1
.. code-block:: yaml
Ensure myasg exists:
boto_asg.present:
- name: myasg
- launch_config_name: mylc
- availability_zones:
- us-east-1a
- us-east-1b
- min_size: 1
- max_size: 1
- desired_capacity: 1
- load_balancers:
- myelb
- suspended_processes:
- AddToLoadBalancer
- AlarmNotification
- scaling_policies
- adjustment_type: ChangeInCapacity
- as_name: api-production-iad
- cooldown: 1800
- min_adjustment_step: None
- name: ScaleDown
- scaling_adjustment: -1
- region: us-east-1
- keyid: GKTADJGHEIQSXMKKRBJ08H
- key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
# Using a profile from pillars.
Ensure myasg exists:
boto_asg.present:
- name: myasg
- launch_config_name: mylc
- availability_zones:
- us-east-1a
- us-east-1b
- min_size: 1
- max_size: 1
- desired_capacity: 1
- load_balancers:
- myelb
- profile: myprofile
# Passing in a profile.
Ensure myasg exists:
boto_asg.present:
- name: myasg
- launch_config_name: mylc
- availability_zones:
- us-east-1a
- us-east-1b
- min_size: 1
- max_size: 1
- desired_capacity: 1
- load_balancers:
- myelb
- profile:
keyid: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
region: us-east-1
# Deleting an autoscale group with running instances.
Ensure myasg is deleted:
boto_asg.absent:
- name: myasg
# If instances exist, we must force the deletion of the asg.
- force: True
It's possible to specify cloudwatch alarms that will be setup along with the
ASG. Note the alarm name will be the name attribute defined, plus the ASG
resource name.
.. code-block:: yaml
Ensure myasg exists:
boto_asg.present:
- name: myasg
- launch_config_name: mylc
- availability_zones:
- us-east-1a
- us-east-1b
- min_size: 1
- max_size: 1
- desired_capacity: 1
- load_balancers:
- myelb
- profile: myprofile
- alarms:
CPU:
name: 'ASG CPU **MANAGED BY SALT**'
attributes:
metric: CPUUtilization
namespace: AWS/EC2
statistic: Average
comparison: '>='
threshold: 65.0
period: 60
evaluation_periods: 30
unit: null
description: 'ASG CPU'
alarm_actions: [ 'arn:aws:sns:us-east-1:12345:myalarm' ]
insufficient_data_actions: []
ok_actions: [ 'arn:aws:sns:us-east-1:12345:myalarm' ]
You can also use alarms from pillars, and override values from the pillar
alarms by setting overrides on the resource. Note that 'boto_asg_alarms'
will be used as a default value for all resources, if defined and can be
used to ensure alarms are always set for an ASG resource.
Setting the alarms in a pillar:
.. code-block:: yaml
my_asg_alarm:
CPU:
name: 'ASG CPU **MANAGED BY SALT**'
attributes:
metric: CPUUtilization
namespace: AWS/EC2
statistic: Average
comparison: '>='
threshold: 65.0
period: 60
evaluation_periods: 30
unit: null
description: 'ASG CPU'
alarm_actions: [ 'arn:aws:sns:us-east-1:12345:myalarm' ]
insufficient_data_actions: []
ok_actions: [ 'arn:aws:sns:us-east-1:12345:myalarm' ]
Overriding the alarm values on the resource:
.. code-block:: yaml
Ensure myasg exists:
boto_asg.present:
- name: myasg
- launch_config_name: mylc
- availability_zones:
- us-east-1a
- us-east-1b
- min_size: 1
- max_size: 1
- desired_capacity: 1
- load_balancers:
- myelb
- profile: myprofile
- alarms_from_pillar: my_asg_alarm
# override CPU:attributes:threshold
- alarms:
CPU:
attributes:
threshold: 50.0
i ( t absolute_importt print_functiont unicode_literalsN( t six( t SaltInvocationErrorc C@ s d t k r d St S( u)
Only load if boto is available.
u boto_asg.existsu boto_asg( t __salt__t False( ( ( s8 /usr/lib/python2.7/site-packages/salt/states/boto_asg.pyt __virtual__� s u boto_asg_termination_policiesu boto_asg_scaling_policiesu boto_asg_scheduled_actionsu boto_asg_alarmsu boto_asg_notification_arnu boto_asg_notification_typesc ? , C@ s� | r |
r t d � � n i | d 6t d 6d d 6i d 6} |
r� g } x� |
D]� }! t d d d |! d
| d | d | d
| �}"