【发布时间】:2016-02-13 13:41:47
【问题描述】:
场景:
我们有 2 台服务器并使用私钥通过 ssh 进行通信
服务器 1(阶段)
服务器 2(生产)
库存文件:
[server]
server1.com
server2.com
两台服务器都有默认用户名“ubuntu”
现在我们需要将私钥放在本地机器上,服务器 1,服务器 2,在同一路径上。例如:
在本地计算机上:/tmp/key/privatekey(远程服务器 1 的私钥)
在服务器 1 上:/tmp/key/privatekey(远程服务器 2 的私钥)
在服务器 2 上:/tmp/key/privatekey(远程服务器 1 的私钥)
- name: copy archived file to another remote server using rsync.
synchronize: mode=pull src=/home/{{ user }}/packages/{{ package_name }}.tar.gz dest=/tmp/{{ package_name }}.tar.gz archive=yes
delegate_to: "{{ production_server }}"
tags: release
Ansible 剧本:
ansible-playbook -i inventory --extra-vars "host=server[0] user=ubuntu" --private-key=/tmp/key/privatekey playbook.yml --tags "release"
在本地机器上执行 ansible playbook 将远程服务器 1 将服务器 1 上的存档文件复制到服务器 2。
这正如我们预期的那样工作,但太荒谬了,我们必须将私钥放在 3 台机器(本地、服务器 1、服务器 2)上的同一路径上。如果我们想将私钥放在不同的路径上怎么办?或者用户想为服务器 1 和服务器 2 使用不同的帐户/用户名?
我尝试修改库存,为服务器 2 提供用户和身份验证密钥。我将私钥放在服务器 1 的 /home/ubuntu/key/ 下:
[server]
server1.com
server2.com ansible_ssh_private_key_file=/home/ubuntu/key/privatekey ansible_ssh_user=ubuntu
然后运行上面相同的 ansible playbook 命令。结果,服务器 1 无法远程服务器 2
如果我们想将私钥放在不同的路径上怎么办?或者用户想为服务器 1 和服务器 2 使用不同的帐户/用户名?
【问题讨论】: