我在负载均衡器后面有两个Web服务器,它们使用Let's Encrypt进行自动SSL。 web1
将处理SSL密钥的创建和续订,然后将这些密钥同步到web2
。尝试使用variant of this对我不起作用:
- name: Sync SSL files from master to slave(s)
synchronize:
src: "{{ item }}"
dest: "{{ item }}"
when: inventory_hostname != 'web1'
delegate_to: web1
with_items:
- /etc/nginx/ssl/letsencrypt/
- /var/lib/letsencrypt/csrs/
- /var/lib/letsencrypt/account.key
- /etc/ssl/certs/lets-encrypt-x3-cross-signed.pem
返回立即错误:
Permission denied (publickey).\r\nrsync: connection unexpectedly closed (0 bytes received so far) [Receiver]\nrsync error: unexplained error (code 255) at io.c(605) [Receiver=3.0.9]\n"
为什么在ansible登录web1
或web2
后,ssh转发无法正常工作?当我手动执行它时,它工作正常:
ssh -A user@web1
#logged into web1 successfully
ssh user@web2
#logged into web2 successfully
这是我的ansible.cfg
[defaults]
filter_plugins = ~/.ansible/plugins/filter_plugins/:/usr/share/ansible_plugins/filter_plugins:lib/trellis/plugins/filter
host_key_checking = False
force_color = True
force_handlers = True
inventory = hosts
nocows = 1
roles_path = vendor/roles
[ssh_connection]
ssh_args=-o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r -o ForwardAgent=yes
pipelining = True
retries = 1
我认为发生的事情是我正在尝试从仅具有root权限的文件夹中复制内容。所以正在使用sudo
,这会切换我的用户以及为什么我得到权限被拒绝,b / c SSH密钥与非root用户关联。因此,我似乎需要一种方法来访问仅root用户文件夹的内容,并与普通用户一起发送。我可以创建一些步骤来复制和更改root权限,然后与非root同步,并使用sudo修复远程主机上的权限。
似乎有很多步骤,但不确定同步是否可以处理我的用例。
更新:添加了更多相关错误