目标:我试图复制/home/foo/certificates/*/{fullchain.cer,*.key}
从一个服务器(tower.example.com)到其他节点。
使用verbose
选项尝试任务时,它会被卡住。输出日志可以在那里找到(Ansible 2.5):https://gist.github.com/tristanbes/1be96509d4853d647a49d30259672779
- 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上运行这个剧本。
我除此之外的是以foo
上的tower.example.com
连接,然后以foo
ssh连接到群组web
和staging
的服务器以推送内容与过滤器匹配的文件夹。
sudo -i && su foo
与foo连接。 我错过了什么?
答案 0 :(得分:0)
看来tower.example.com
可能没有对其他主机的ssh访问权限。这将导致Ansible在ssh等待密码时卡住。您可以通过以下方式解决此问题:
tower.example.com
上生成一个新的ssh密钥,并在其他主机上对其进行授权,和/或或者,您可以将证书提取到localhost
上的temp文件夹中,然后将其复制到其他主机上。这样可以避免使用delegate_to
,但效率不如直接在远程主机之间同步文件。