2016-06-08 7 views
0

ich eine Inventardatei haben, die einen RDS-Endpunkt hat als:Es kann keine Cloudwatch Health über ansible erstellen

[ems_db] 
syd01-devops.ce4l9ofvbl4z.ap-southeast-2.rds.amazonaws.com 

ich folgendes Spielbuch schrieb einen Cloudwatch ALARM zu erstellen:

--- 

    - name: Get instance ec2 facts 
     debug: var=groups.ems_db[0].split('.')[0] 
     register: ems_db_name 

    - name: Display 
     debug: var=ems_db_name 

    - name: Create CPU utilization metric alarm 
     ec2_metric_alarm: 
      state: present 
      region: "{{aws_region}}" 
      name: "{{ems_db_name}}-cpu-util" 
      metric: "CPUUtilization" 
      namespace: "AWS/RDS" 
      statistic: Average 
      comparison: ">=" 
      unit: "Percent" 
      period: 300 
      description: "It will be triggered when CPU utilization is more than 80% for 5 minutes" 
      dimensions: { 'DBInstanceIdentifier' : ems_db_name } 
      alarm_actions: arn:aws:sns:ap-southeast-2:493552970418:cloudwatch_test 
      ok_actions: arn:aws:sns:ap-southeast-2:493552970418:cloudwatch_test 

Aber das ergibt

TASK: [cloudwatch | Get instance ec2 facts] *********************************** 
ok: [127.0.0.1] => { 
    "var": { 
     "groups.ems_db[0].split('.')[0]": "syd01-devops" 
    } 
} 

TASK: [cloudwatch | Display] ************************************************** 
ok: [127.0.0.1] => { 
    "var": { 
     "ems_db_name": { 
      "invocation": { 
       "module_args": "var=groups.ems_db[0].split('.')[0]", 
       "module_complex_args": {}, 
       "module_name": "debug" 
      }, 
      "var": { 
       "groups.ems_db[0].split('.')[0]": "syd01-devops" 
      }, 
      "verbose_always": true 
     } 
    } 
} 

TASK: [cloudwatch | Create CPU utilization metric alarm] ********************** 
failed: [127.0.0.1] => {"failed": true} 
msg: BotoServerError: 400 Bad Request 
<ErrorResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>MalformedInput</Code> 
    </Error> 
    <RequestId>f30470a3-2d65-11e6-b7cb-cdbbbb30b60b</RequestId> 
</ErrorResponse> 


FATAL: all hosts have already failed -- aborting 

Was ist hier falsch? Was kann ich tun, um das zu lösen? Ich bin neu, aber sicherlich scheint dies ein Syntaxproblem mit mir oder die Art und Weise, wie ich die Inventar-Endpunkt-Split abholen.

+0

Also, äh, arbeitest du mit @ nishant-singh, [der eine ähnliche Frage gestellt hat] (https://stackoverflow.com/questions/37674377/creating-cloudwatch-alarm-metrics-using-ansible)? – tedder42

Antwort

1

Die Variablen von Debug in der ersten Debug-Anweisung nicht werden zugewiesen, wenn Sie in der Lage sein können, wenn Sie es auf eine Nachricht ändern und es mit Anführungszeichen und doppelten geschweiften Klammern (ungetestet) einschließen:

- name: Get instance ec2 facts 
    debug: msg="{{groups.ems_db[0].split('.')[0]}}" 
    register: ems_db_name 

Allerdings würde ich das set_fact-Modul in dieser Aufgabe (anstelle von debug) verwenden und diesen Wert zuweisen. Auf diese Weise können Sie es in diesem und nachfolgenden Aufrufen eines Spiels wiederverwenden.

- name: Get instance ec2 facts 
    set_fact: ems_db_name="{{groups.ems_db[0].split('.')[0]}}" 

UPDATE: eine threshold: 80.0 zur letzten Aufgabe hinzufügen und die Dimensionen muss die Instanz-ID mit Doppel Klammern gesetzt verwenden.

+0

Versucht dies immer noch denselben Fehler, ps ich bin dies auf 'localhost' ausgeführt, sollte ich besorgt sein? – PythonFreak

+0

Haben Sie die set_fact oder die Debug-Änderungen versucht? – Theo

+0

Localhost macht keinen Unterschied, aber die Tatsache für set_fact wird auf localhost gesetzt. – Theo