使用ansible配置的用户需要太长时间

Ali*_*yeu 1 ansible ansible-playbook ansible-2.x

我有将用户提供给远程主机的剧本:

---
- hosts: webserver
  remote_user: myuser
  sudo: yes
  tasks:
    - name: Add ssh Users
      authorized_key: user='ubuntu' key="{{ lookup('file', './keys/{{item}}.pub') }}"
      with_items:
        - user1
        - user2
        - user3
        - user4
        - user5
        - user6
        - user7
        - user8
        - user9
        - user10
        - user11
        - user12
Run Code Online (Sandbox Code Playgroud)

这个单一任务需要110秒,这非常慢.

$ ansible-playbook -i ./inventory setup_ssh.yaml -vvv
Using /vagrant/ansible.cfg as config file
1 plays in setup_ssh.yaml

...

PLAY RECAP *********************************************************************
XXX.XXX.XXX.XXX              : ok=2    changed=0    unreachable=0    failed=0

Wednesday 27 July 2016  07:38:39 +0000 (0:01:50.486)       0:02:00.054 ********
===============================================================================
TASK: ssh_keys : Add ssh Users ---------------------------------------- 110.49s
TASK: setup ------------------------------------------------------------- 9.49s
Run Code Online (Sandbox Code Playgroud)

查看完整日志.

我试图启用流水线技术,但它没有帮助.

我正在使用ansible 2.0.0.2这是我的ansible.cfg:

[defaults]
hostfile = inventory
host_key_checking = false
roles_path = ./roles
private_key_file = ~/.ssh/id_rsa
deprecation_warnings=False
remote_user = ubuntu
callback_whitelist = profile_tasks
pipelining = true

[ssh_connection]
ssh_args=-o ForwardAgent=yes
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 5

通过指定:

ssh_args=-o ForwardAgent=yes
Run Code Online (Sandbox Code Playgroud)

你已经取代了ansible的默认值:

ssh_args = -o ControlMaster=auto -o ControlPersist=60s
Run Code Online (Sandbox Code Playgroud)

因此禁用了ssh连接重用.将此选项添加到您的配置,然后重试.

如果时间增益不够,您可能希望首先在本地连接所有.pub文件,然后authorized_key使用多行字符串作为关键参数执行模块一次 - 此模块可以处理它.