У меня есть playbook, который создает экземпляр ec2, копирует несколько файлов в экземпляр и затем запускает некоторые команды оболочки в экземпляре.Ansible: Как указать ключ ssh для одной задачи?
Проблема в том, что я хочу иметь возможность указать, какой ключ ssh используется для задач копирования и оболочки, которые я запускаю, и убедиться, что он не пытается использовать этот ключ для других задач, которые выполняются на локальном хосте , Вот мой плейер:
---
- hosts: localhost
connection: local
gather_facts: false
vars:
# CentOS 7 x86_64 Devel AtomicHost EBS HVM 20150306_01 (ami-07e6c437)
# for us-west-2
- ami: 'ami-07e6c437'
- key_pair: 'my-key'
tasks:
- name: Create a centos server
ec2:
region: 'us-west-2'
key_name: '{{ key_pair }}'
group: default
instance_type: t2.micro
image: '{{ ami }}'
wait: true
exact_count: 1
count_tag:
Name: my-instance
instance_tags:
Name: my-instance
register: ec2
# shows the json data for the instances created
- name: Show ec2 instance json data
debug:
msg: "{{ ec2['tagged_instances'] }}"
- name: Wait for SSH to come up
wait_for: host={{ ec2['tagged_instances'][0]['public_ip'] }} port=22 delay=1 timeout=480 state=started
- name: Accept new ssh fingerprints
shell: ssh-keyscan -H "{{ ec2['tagged_instances'][0]['public_ip'] }}" >> ~/.ssh/known_hosts
# THE TASKS I NEED HELP ON
- name: Copy files over to ec2 instance
remote_user: centos
copy: src={{ item }} dest=/home/centos/ mode=600
with_fileglob:
- my-files/*
delegate_to: "{{ ec2['tagged_instances'][0]['public_ip'] }}"
# THE TASKS I NEED HELP ON
- name: run commands
remote_user: centos
shell: "{{ item }}"
delegate_to: "{{ ec2['tagged_instances'][0]['public_ip'] }}"
with_items:
- "sudo yum update -y"
- "sudo yum install nmap ruby"
ignore_errors: true
Почему вы используете 'delegate_to'? Я предполагаю, что вы хотите запускать задачи в недавно запущенной машине. – helloV
Да Я хочу скопировать файлы и запустить команды оболочки в моем недавно созданном экземпляре –
** Почему ** вам нужно использовать другой ключ SSH? – techraf