Я использую ansible для создания нескольких экземпляров ec2, копирования файлов на вновь созданные серверы и запуска команд на этих серверах. Вопрос заключается в том, что после создания сервера я все еще должен войти да в следующей строке SSH:Ansible - Как ssh в экземпляр без подсказки «подлинность хоста»?
TASK [Adding /etc/rc.local2 to consul servers] *********************************
changed: [localhost -> 172.31.52.147] => (item={u'ip': u'172.31.52.147', u'number': 0})
The authenticity of host '172.31.57.20 (172.31.57.20)' can't be established.
ECDSA key fingerprint is 5e:c3:2e:52:10:29:1c:44:6f:d3:ac:10:78:10:01:89.
Are you sure you want to continue connecting (yes/no)? yes
changed: [localhost -> 172.31.57.20] => (item={u'ip': u'172.31.57.20', u'number': 1})
The authenticity of host '172.31.57.19 (172.31.57.19)' can't be established.
ECDSA key fingerprint is 4e:71:15:fe:c9:ec:3f:54:65:e8:a1:66:74:92:f4:ff.
Are you sure you want to continue connecting (yes/no)? yes
Как я анзибль игнорировать эту строку и просто ответить да автоматически? Для справки вот мой сборник пьес:
---
- hosts: localhost
connection: local
gather_facts: false
sudo: yes
vars_files:
- ami-keys.yml
- ami-image.yml
tasks:
- name: create 3 consul servers
ec2:
aws_access_key: '{{ aws_access_key }}'
aws_secret_key: '{{ aws_secret_key }}'
key_name: terra
group: default
instance_type: t2.micro
image: '{{ ami }}'
region: '{{ region }}'
wait: true
exact_count: 3
count_tag:
Name: consul-server
instance_tags:
Name: consul-server
register: ec2
- name: Wait for SSH to come up
wait_for: host={{ item }} port=22 delay=1 timeout=480 state=started
with_items:
- "{{ ec2['tagged_instances'][0]['private_ip'] }}"
- "{{ ec2['tagged_instances'][1]['private_ip'] }}"
- "{{ ec2['tagged_instances'][2]['private_ip'] }}"
# shows the json data for the instances created
- name: consul server ec2 instance json data
debug:
msg: "{{ ec2['tagged_instances'] }}"
# bootstrapping
- name: Adding /etc/rc.local2 to consul servers
template:
src: template/{{ item.number }}.sh
dest: /etc/rc.local2
delegate_to: "{{ item.ip }}"
with_items:
- ip: "{{ ec2['tagged_instances'][0]['private_ip'] }}"
number: 0
- ip: "{{ ec2['tagged_instances'][1]['private_ip'] }}"
number: 1
- ip: "{{ ec2['tagged_instances'][2]['private_ip'] }}"
number: 2
ignore_errors: true
- name: give /etc/rc.local2 permissions to run and starting swarm
shell: "{{ item[1] }}"
delegate_to: "{{ item[0] }}"
with_nested:
- [ "{{ ec2['tagged_instances'][0]['private_ip'] }}",
"{{ ec2['tagged_instances'][1]['private_ip'] }}",
"{{ ec2['tagged_instances'][2]['private_ip'] }}" ]
- [ "sudo chmod +x /etc/rc.local2",
"sleep 10",
"consul reload",
"docker run --name swarm-manager -d -p 4000:4000 --restart=unless-stopped \
swarm manage -H :4000 \
--replication --advertise \
$(hostname -i):4000 \
consul://$(hostname -i):8500" ]
ignore_errors: true
Примечание: Я уже пробовал работает:
ansible-playbook -e 'host_key_checking=False' consul-server.yml
и не удаляет строку.
Идет в /etc/ansible/ansible.cfg
и раскомментирует строку host_key_checking=False
действительно удаляет подсказку, однако я хочу, чтобы этого не делалось, и либо введите что-то в свою книгу или в командную строку, когда я запустил свою игру.
Там есть комментарий по этому вопросу page: http://stackoverflow.com/questions/23074412/how-to-set-host-key-checking-false-in-ansible-inventory-file, в котором говорится, что метод -e "host_key_checking = False" не работает и он получил 9 голосов, поэтому кажется, что несколько человек столкнулись с этой проблемой. Можете ли вы просто установить его как ansible.cfg? –
Редактирование файла '/ etc/ansible/ansible.cfg' и раскомментирование строки' host_key_checking = False' позволило моей playbook работать без подсказки. Однако я стараюсь избегать этого шага и просто отключить проверку ключа внутри моей пьесы или когда я запускаю playbook в командной строке. Есть простой способ сделать это? –