2016-06-01 6 views
1

Wenn Sie eine EC2-Instanz über Ansible erstellen, wie geben Sie die Sicherheitsgruppe an (dies ist für eine Amazon VPC-Umgebung, die nicht die Standardeinstellung des Kontos ist)? In meinem Fall versuche ich, eine Sicherheitsgruppe (die derzeit existiert) meiner Webserver-EC2-Instanz zuzuweisen, die den Verkehr auf nur den Verkehr beschränkt, der von dem ELB kommt, der davor sitzt. Wenn ich versuche, die folgenden:Zuordnen von EC2 über Ansible

- name: Create webserver instance 
    ec2: 
    key_name: "{{ project_name }}-{{ env }}-key" 
    image: "{{ image }}" 
    instance_type: "{{ instance_type }}" 
    instance_tags: '{"Name":"{{ project_name }}-{{ env }}-{{ webserver_name }}","Owner":"{{ project_name }}", "Type":"{{ webserver_name }}","Environment":"{{ env }}"}' 
    region: "{{ aws_region }}" 
    group: "{{ security_group_name }}" 
    wait: true 
    register: ec2 

where {{security_group_name}} ist die 'Gruppenname' in der AWS-Konsole gefunden, erhalte ich folgende Fehlermeldung: ‚Wert() für Parameter groupId ungültig ist. Der Wert darf nicht leer sein‘

Wenn ich versuche, die folgenden:

- name: Create webserver instance 
    ec2: 
    key_name: "{{ project_name }}-{{ env }}-key" 
    image: "{{ image }}" 
    instance_type: "{{ instance_type }}" 
    instance_tags: '{"Name":"{{ project_name }}-{{ env }}-{{ webserver_name }}","Owner":"{{ project_name }}", "Type":"{{ webserver_name }}","Environment":"{{ env }}"}' 
    region: "{{ aws_region }}" 
    group_id: "{{ security_group_id }}" 
    wait: true 
    register: ec2 

where {{security_group_id}} das ist 'Gruppe Id' in der AWS-Konsole (wie sg-xxxxxx) gefunden, ich erhalten der gleiche Fehler. Die Ansible-Dokumentation besagt, dass "group" und "group_id" für die Spezifikation der Sicherheitsgruppe (http://docs.ansible.com/ansible/ec2_module.html) sind.

Das einzige, was ich denken kann, ist, dass AWS die Sicherheitsgruppe nicht finden kann, weil ich es erstelle und es die VPC nicht kennt, es zu platzieren, oder es in meiner Standard-VPC platziert und die Sicherheitsgruppe nicht finden kann wie es in einer anderen VPC ist.

Also, eine bessere Frage ist vielleicht, wie ich die VPC für eine bestimmte EC2-Instanz angeben (wenn ich mehrere VPCs in einer Region habe)?

+0

Bitte stellen Sie sicher, dass 'region' Parameter und' AWS_REGION' oder 'EC2_REGION' Umgebungsvariablen korrekt sind. Wenn Sie eine Gruppe mit 'ec2_group' erstellen, prüfen Sie, ob Sie den richtigen Parameter' vpc_id' verwenden. –

+0

Keine Gruppe erstellen, sondern eine ec2-Instanz. –

+0

können Sie dieses GitHub Repo beziehen: https://github.com/arbabnazar/ansible-aws-roles für detaillierte Anweisungen –

Antwort

0

I receive the following error: 'Value() for parameter groupId is invalid. The value cannot be empty'

Es klingt wie diese Variablen nicht definiert sind; Wo definierst du sie? Funktioniert es, wenn Sie keine Variable verwenden, sondern den Wert direkt eingeben?

So, maybe a better question is, how to I specify the VPC for a particular EC2 instance (when I have multiple VPCs in a region)?

Die VPC durch andere Werte impliziert, insbesondere group/group_id und vpc_subnet_id.

Einer der wichtigsten Vorteile von group_id statt group ist, dass Sie einen Fehler erhalten, wenn Sie versehentlich ein Subnetz für die falsche VPC verwenden, während, wenn Sie Sicherheitsgruppen mit den gleichen Namen in mehreren VPC haben, mit group und eine falsche vpc_subnet_id wird eine Maschine an der falschen Stelle erfolgreich starten.

0

Es gibt keine Möglichkeit, die VPC ID in Ihrem Playbook anzugeben. Stattdessen geben Sie vpc_subnet_id an. AWS kann die VPC basierend auf der Subnetz-ID ermitteln. Sie geben die Subnetz-ID nicht an, daher geht AWS davon aus, dass Sie es in EC2 Classic starten möchten. Da die angegebene Sicherheitsgruppe nicht in EC2 Classic gefunden wird, erhalten Sie den Fehler not found oder invalid Fehler.

Wie behebt man das? Suchen Sie nach id des Subnetzes, in dem Sie die Instanz starten möchten. Jede VPC kann ein weiteres öffentliches und/oder privates Subnetz haben. Wählen Sie im AWS-Dashboard VPC Service, in dem die Subnetze und VPCs aufgelistet werden. Suchen Sie das Subnetz, in dem Sie starten möchten, und geben Sie seine ID im Playbook an.

vpc_subnet_id: subnet-29e63245