Ich habe eine Amazon Konsole mit mehreren laufenden Instanzen. Alle Instanzen haben TagsAnsible AWS EC2 Tags
zum Beispiel: - tag Name: jenkins - tag Name: Nginx - tag Name: Artifactory
Ich möchte ein ansible Textbuch gegen den Gastgeber laufen, die als Nginx markiert.
Ich verwende dynamisches Inventar, aber wie beschränke ich, wo das Playbook ausgeführt wird?
Mein Textbuch sieht wie folgt aus:
- name: Provision an EC2 node
hosts: local
connection: local
gather_facts: False
vars:
instance_type: t2.micro
security_group: somegroup
#image: ami-a73264ce
image: ami-9abea4fb
region: us-west-2
keypair: ansible_ec2
tasks:
- name: Step 1 Create a new AWS EC2 Ubuntu Instance
local_action: ec2 instance_tags="Name=nginx" group={{ security_group }} instance_type={{ instance_type}} image={{ image }} wait=true region={{ region }} keypair={{ keypair }}
register: ec2
- name: Step 2 Add new instance to local host group
local_action: lineinfile dest=hosts regexp="{{ item.public_dns_name }}" insertafter="[launched]" line="{{ item.public_dns_name }} ansible_ssh_private_key_file=~/.ssh/{{ keypair }}.pem"
with_items: ec2.instances
- name: Step 3 Wait for SSH to come up delay 180 sec timeout 600 sec
local_action: wait_for host={{ item.public_dns_name }} port=22 delay=180 timeout=600 state=started
with_items: ec2.instances
- name: Step 5 Install nginx steps
hosts: launched
sudo: yes
remote_user: ubuntu
gather_facts: True
roles:
- motd
- javaubuntu
- apt-get
- nginx
das letzte Textbuch angeben deklarieren Sie eine Variable ansible_ssh_private_key_file aber wo verwenden Sie die Variable? und können Sie mir mehr über die Identitätsdatei erzählen? Ich verstehe das nicht. –
Diese Variable wird verwendet, um eine Verbindung zu den Instanzen herzustellen, aber die beste Methode besteht darin, eine SSH-Konfigurationsdatei zu erstellen. vim .ssh/config, hier fügen Sie diese Zeile "IdentityFile ~/.ssh/ansible_ec2.pem" hinzu, dann können Sie auf Server ohne Passwort zugreifen. –
schön! Hast du ein Beispiel in Form eines Playbooks? Ich versuche das zu automatisieren. –