免费版的Ansible将不允许我将文件从Ansible服务器移动到客户端服务器

时间:2015-05-07 04:52:08

标签: ubuntu ssh ansible

我可以在服务器与ansible和客户端服务器之间进行ssh。这两个服务器都是Ubuntu的AWS实例。此命令显示客户端服务器成功:

ansible all -m ping

这是我的playbook site.yml:

的内容
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: Move the file foo
    action: file src=/tmp/crowded/foo dest=/tmp/crowded/foo

4)当我不是root时,我尝试运行这个剧本:

ansible-playbook -i hosts -k -K site.yml -vvvv

但我明白了(其中x.x.x.x是客户端服务器的IP地址):

fatal: [x.x.x.x] => SSH encountered an unknown error. The output was:
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/ubuntu/.ansible/cp/ansible-ssh-x.x.x.x-22-root" does not exist


...

debug1: No more authentication methods to try.
Permission denied (publickey).


TASK: [Move the file foo] *****************************************************
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ********************************************************************
           to retry, use: --limit @/home/ubuntu/site.retry

x.x.x.x              : ok=0    changed=0    unreachable=1    failed=0

如何移动Ansible文件?我想了解剧本的运作方式。

1 个答案:

答案 0 :(得分:1)

文件模块并不是要复制Ansible中的文件,而是简单地确保文件存在,更改权限,创建目录和文件。符号链接等。如果要将文件从ansible服务器复制到客户端计算机,则需要使用副本或模板模块。

我建议您仔细查看filecopytemplate模块的文档。请特别注意,在您的示例中使用的文件模块在创建符号链接时仅识别src参数:

  

要链接的文件的路径(仅适用于state = link)。将接受绝对,相对和不存在的路径。相对路径未扩展。

然而,所有这些与您遇到的错误无关:

  

debug1:不再需要尝试验证方法。   权限被拒绝(公钥)。

您似乎遇到Ansible使用的SSH身份验证问题。您可能需要按照Ansible Getting Started部分中的说明将SSH私钥加载到ssh-agent中,并且/或确保在ansible中设置private_key_fileremote_user值。 cfg文件正确。