1

Я пытаюсь настроить наши политики автоматического масштабирования в ec2 с помощью ansible. Каждая группа автомасштабирования будет иметь несколько политик (масштабирование и масштабирование IE) и может иметь несколько предупреждений о паушках на одну политику (использование ЦП, латентность балансировки нагрузки).Конфигурирование автоматических политик EC2 и аварийных сигналов с невозможным

У меня есть ВАР для политики и сигнализации масштабирования, если одна автомасштаба группа в .yml файла и пытается построить политику с PlayBook:

- ec2_scaling_policy: 
    state: present 
    region: "{{ region }}" 
    adjustment_type: "ChangeInCapacity" 
    asg_name: "{{ asg_name }}" 
    scaling_adjustment: "{{ item.scaling_adjustment }}" 
    min_adjustment_step: 1 
    cooldown: "{{ item.cooldown }}" 
    name: "{{item.name }}" 
    register: "sp_result" 
    with_items: scaling_policies 

- debug: msg="{{sp_result}}" 

- debug: 
    msg="{{item[1]['name']}} == {{item[0]['scaling_policy_name']}}" 
    with_nested: 
    - alarm_metrics 
    - sp_result.results 

- ec2_metric_alarm: 
    state: present 
    region: "{{ region }}" 
    name: "{{ item[0].name }}" 
    metric: "{{ item[0].metric }}" 
    namespace: "AWS/EC2" 
    statistic: "{{ item[0].statistics }}" 
    comparison: "{{ item[0].comparison }}" 
    threshold: "{{ item[0].threshold }}" 
    period: "{{ item[0].period }}" 
    evaluation_periods: "{{ item[0].evaluation_periods }}" 
    unit: "{{ item[0].unit }}" 
    description: "{{ item[0].description }}" 
    dimensions: "{{ item[0].dimensions }}" 
    alarm_actions: "{{ item[1]['arn'] }}" 
    when: "{{item[1]['name']}} == {{item[0]['scaling_policy_name']}}" 
    with_nested: 
    - alarm_metrics 
    - sp_result.results 

Это ближайший I» я пришел к тому, чтобы заставить его работать, но я все еще получаю ошибку: msg: unsupported parameter for module: when

Кроме того, элемент [0], элемент [1] и итерация по вложенным циклам становятся беспорядочными, есть ли лучший способ сделать это? Если нет, то как я могу решить ошибку, которую я получаю?

Изменить, чтобы добавить файл VARS:

Пример файла VARS для одной из наших групп:

asg_name: autoscale-group-prod 
region: us-east-1 
scaling_policies: 
    - scaling_adjustment: 1 
    name: policy-high-cpu 
    cooldown: 300 

    - scaling_adjustment: -1 
    name: policy-low-cpu 
    cooldown: 300 


alarm_metrics: 
    - name: group-high-cpu-alarm 
    metric: "CPUUtilization" 
    statistics: Average 
    comparison: ">=" 
    threshold: "85" 
    period: 300 
    evaluation_periods: 2 
    unit: "Percent" 
    description: "alerm when CPU utilization is >= 85% for 10 minutes." 
    dimensions: {"AutoScalingGroupName": 'autoscale-chameleon-prod'} 
    scaling_policy_name: policy-high-cpu 

    - name: group-healthy-host-alarm 
    metric: "HealthyHostCount" 
    statistics: Average 
    comparison: "<" 
    threshold: "1" 
    period: 300 
    evaluation_periods: 3 
    unit: "Count" 
    description: "alarm when there are no healthy instances behind the elb" 
    dimensions: {"ElasticLoadBalancerName": "GroupELB"} 
    scaling_policy_name: policy-high-cpu 

    - name: group-low-cpu-alarm 
    metric: "CPUUtilization" 
    statistics: Average 
    comparison: "<" 
    threshold: "50" 
    period: 300 
    evaluation_periods: 2 
    unit: "Percent" 
    description: "alerm when CPU utilization is < 50% for 10 minutes." 
    dimensions: {"AutoScalingGroupName": 'autoscale-chameleon-prod'} 
    scaling_policy_name: policy-low-cpu 
+0

К сожалению, ничто не может быть сделано для этого .. я неправильно понял ваш 'with_nested' как' with_together' и были некоторые надежды .. Для вложенных циклов вы должны страдать 'пунктом [0] и' пунктом [1 ] 'AFAIK. – Kashyap

ответ

2

Неправильный отступы & квотирование.

- ec2_metric_alarm: 
    state: present 
    region: "{{ region }}" 
    name: "{{ item[0].name }}" 
    metric: "{{ item[0].metric }}" 
    namespace: "AWS/EC2" 
    statistic: "{{ item[0].statistics }}" 
    comparison: "{{ item[0].comparison }}" 
    threshold: "{{ item[0].threshold }}" 
    period: "{{ item[0].period }}" 
    evaluation_periods: "{{ item[0].evaluation_periods }}" 
    unit: "{{ item[0].unit }}" 
    description: "{{ item[0].description }}" 
    dimensions: "{{ item[0].dimensions }}" 
    alarm_actions: "{{ item[1]['arn'] }}" 
    # Wrong: 
    # when: "{{item[1]['name']}} == {{item[0]['scaling_policy_name']}}" 
    # Correct: 
    when: "'{{item[1].name}}' == '{{item[0].scaling_policy_name}}'" 
    with_nested: 
    - alarm_metrics 
    - sp_result.results 
+0

Вы правы, что я только что дал мне другую ошибку: 'error при оценке условного: policy-high-cpu == policy-high-cpu' Посмотрев на это сейчас, очевидно, что он ближе, но все же не правильный. – Jimr

+0

@Jimr цитирует проблемы. Ответ обновляется с правильным. Абт другой Q, разместите структуру данных, которую вы повторяете. – Kashyap

Смежные вопросы