7b005fd1ec
Create an empty ~/.ssh/known_hosts if it's not present since the subsequent commands assume that there is one in place. Fixes the following problem: fatal: [testvm1]: FAILED! => {"changed": true, "cmd": ["ssh-keygen", "-R", "192.168.122.3"], "delta": "0:00:00.004327", "end": "2016-09-14 08:26:42.448637", "failed": true, "invocation": {"module_args": {"_raw_params": "ssh- keygen -R \"192.168.122.3\"", "_uses_shell": false, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 255, "start": "2016-09-14 08:26:42.444310", "stderr": "ssh-keygen: $ root/.ssh/known_hosts: No such file or directory", "stdout": "", "stdout_lines": [], "warnings": []} Change-Id: I0f05fb9aad7e7b9021491aac4d809ffc6fd4e864
55 lines
2.3 KiB
YAML
55 lines
2.3 KiB
YAML
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
---
|
|
- name: "Wait for the base testvm machine to become available."
|
|
wait_for: state=started port=22 host={{ ipv4_address }} timeout={{ wait_timeout }}
|
|
when: ipv4_address is defined
|
|
- name: "Pause for 4 seconds to allow testvm to become fully operational and to avoid any potential sshd startup race."
|
|
# NOTE(TheJulia): AFAIK sshd opens it's socket and then loads/generates
|
|
# keys, which can become visible as a race, hence the four second pause.
|
|
pause: seconds={{ node_ssh_pause }}
|
|
- name: "Add testvm(s) to Ansible Inventory"
|
|
# NOTE(TheJulia): add_host only triggers once per play. Since we need to
|
|
# add all hosts, we need to use a loop.
|
|
add_host: name="{{ hostvars[item]['ipv4_address'] }}:22" groups=test
|
|
with_items: "{{ groups['baremetal'] }}"
|
|
when: ipv4_address is defined
|
|
- name: "Ensure ~/.ssh/known_hosts is present"
|
|
file:
|
|
path: "~/.ssh/known_hosts"
|
|
state: touch
|
|
mode: 0600
|
|
when: ipv4_address is defined
|
|
- name: "Remove testvm hosts from SSH known_hosts file."
|
|
command: ssh-keygen -R "{{ ipv4_address }}"
|
|
when: ipv4_address is defined
|
|
- name: "Pause before asking for keyscan, to avoid races"
|
|
pause: minutes=3
|
|
when: multinode_testing | bool == true
|
|
- name: >
|
|
Re-check SSH connectivity prior to proceeding with multi-node testing
|
|
wait_for:
|
|
state: started
|
|
port: 22
|
|
host: "{{ ipv4_address }}"
|
|
when: ipv4_address is defined and multinode_testing | bool == true
|
|
- name: >
|
|
Additional SSH startup pause when performing multi-node testing
|
|
pause:
|
|
seconds: "{{ node_ssh_pause }}"
|
|
when: multinode_testing | bool == true
|
|
- name: "Add testvm hosts from SSH known_hosts file."
|
|
shell: ssh-keyscan "{{ ipv4_address }}" >> "{{ ansible_env.HOME }}/.ssh/known_hosts"
|
|
when: ipv4_address is defined
|