首页 > 解决方案 > Ansible:加快查找和链接文件的速度

问题描述

目前,我正在使用代码将某些目录中的二进制文件链接到/usr/local/bin

- name: Find the files to link in /usr/local/bin
  find:
    paths:
      - "/usr/local/java/jdk1.8.0_171/bin/"
      - "/usr/local/java/apache-maven-3.3.3/bin"
  register: usrlocalbinfiles

- name: Link SDK files
  file:
    src: "{{item.path}}"
    dest: "/usr/local/bin/{{item.path|basename}}"
    state: link
  with_items: "{{usrlocalbinfiles.files}}"
  become: yes

如果我使用此代码和调试选项 (-vvv) 检查剧本的执行情况,我会看到 ansible 使用列表中的每个项目连接到远程主机。我~/.ansible.cfg有下一个选项来启用共享 ssh 连接

[defaults]
host_key_checking = False
become=True
become_method='su'

[ssh_connection]
ssh_args=-o ControlMaster=auto -o ControlPersist=120s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r -o ForwardAgent=yes 

是否可以加快使用此代码的剧本?问题是使用的循环with_item:每个项目使用 ssh 的连接。

标签: ansible

解决方案


还添加

[ssh_connection]    
pipelining = true

如果您看到多个 ssh 调用,则说明未使用流水线。如果有单个ssh呼叫:

SSH: EXEC ssh ... python && sleep 0

然后流水线工作。


推荐阅读