Use blockinfile for tripleo-ssh-known-hosts
lineinfile combined with with_items was very inefficient for this task. Given that each node's hostkey is added to every other host, it resulted in O(n²) performance. Additional networks per node also worsened the problem. For example, in a 100 node deployment, with 4 networks per node, this task would need to be executed 40,000 times (100 * 100 * 4). Switching to use blockinfile brings the performance back to O(n), and also removes any dependency on the number of networks per node. Change-Id: Id51d27f53abf3421c29a11065377e9303ad68d79
This commit is contained in:
parent
67f8ddc0d7
commit
4157d7a5df
|
@ -61,11 +61,10 @@
|
|||
{% endfor %}
|
||||
|
||||
- name: Add host keys to temporary ssh_known_hosts
|
||||
lineinfile:
|
||||
blockinfile:
|
||||
path: "{{ ssh_known_hosts_tmp.path }}"
|
||||
line: "{{ item }}"
|
||||
block: "{{ ssh_known_hosts_lines }}"
|
||||
create: true
|
||||
with_items: "{{ ssh_known_hosts_lines.splitlines() }}"
|
||||
|
||||
# Workaround https://bugs.launchpad.net/tripleo/+bug/1810932
|
||||
# Ansible modules perform a replace instead of in-place modification.
|
||||
|
|
Loading…
Reference in New Issue