目标:我正在尝试复制/home/foo/certificates/*/{fullchain.cer,*.key}
从一台服务器(tower.example.com(到其他节点。
使用verbose
选项尝试任务时,它会卡住。可以在此处找到输出日志(Ansible 2.5(:https://gist.github.com/tristanbes/1be96509d4853d4853d647a49d30259672779
- hosts: staging:web:tower:!tower.example.com
gather_facts: yes
become: yes
become_user: foo
tasks:
- name: synchronize the certificates folder
synchronize:
src: "/home/foo/certificates/"
dest: "{{ certificates_path }}/"
rsync_opts:
- "--include=fullchain.cer"
- "--include=*.key"
delegate_to: tower.example.com
我正在Localhost上运行本剧本。除此之外,我除此之外是在tower.example.com
上的foo
连接,然后将其与SSH作为foo
连接到组web
和staging
的服务器,以rsync按下匹配过滤器的文件夹的内容。
- 我可以在tower.example.com上运行其他剧本
- 我可以在tower.example.com上与用户连接,然后将
sudo -i && su foo
连接到foo。 - 作为foo,我可以连接到其他主机,作为组下的服务器和登台。
我缺少什么?
看来tower.example.com
可能无法访问其他主机。当SSH正在等待密码时,这可能会导致卡住。您可以通过
- 在
tower.example.com
上生成新的SSH键并在其他主机上授权它,/或 - 设置SSH-Agent转发。
另外,您可以将证书获取到localhost
上的临时文件夹,然后将其复制到其他主机。这避免了使用delegate_to
,但不如直接在远程主机之间同步文件的效率。