Ansible同步要求输入密码

时间:2015-08-03 12:16:19

标签: deployment ansible rsync ansible-playbook

我正在使用Ansible(1.9.2)将一些文件部署到Redhat 6.4服务器。

剧本看起来像这样

- name: deploy files
  hosts: web
  tasks:
    - name sync files
      sudo: no
      synchronize:
        src={{ local_path }}
        dest={{ dest_path }}

为了解决这个问题,我运行了类似下面的内容

ansible-playbook -i myinventory myplaybook.yml -u DOMAIN\\user --ask-pass

当我开始播放时,我在提示符下输入密码,然后成功获取事实,但是一旦达到 synchronize 任务,另一个提示再次要求我输入密码,如下所示< / p>

DOMAIN\user@hostname's password:

如果我再次输入密码,则部署正确完成。

我的问题是

  1. 如何修复或解决此问题,以便每次使用同步模块时都不必输入密码?
  2. 这是同步模块当前预期的行为吗?或者这是Ansible的错误吗?
  3. 由于环境限制,我无法使用ssh密钥。

    出于可伸缩性原因,我不想使用复制模块。

    我尝试过的事情

    1. 我已经看过很多关于这个问题的其他问题,但我有 无法使用其中任何一个来解决我的问题或了解是否 这是预期的行为。
    2. Ansible文档通常很出色,但我在官方文档上找不到任何相关内容。
    3. 我尝试在库存文件中指定用户和密码,而不是使用 - ask-pass -u 参数。但是,当我不必输入密码来收集事实时,同步模块仍然会请求我的密码。
    4. 我也试过设置 - ask-sudo-pass ,但它没有帮助
    5. 我一直在使用CentOS 7控制盒,但我也尝试过Ubuntu 14.04盒子
    6. 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

为什么不使用Vault加密的下面的库存(ansible-playbook -ask-vault-pass ...)?:

[targets]
other1.example.com    ansible_connection=ssh    ansible_ssh_user=mpdehaan   ansible_ssh_pass=foobar
other2.example.com    ansible_connection=ssh    ansible_ssh_user=mdehaan    ansible_ssh_pass=foobar123

答案 1 :(得分:0)

如果您的ansible服务器凭据与目标主机不同,则Synchronize将要求您输入密码。我已经尝试了许多提议的解决方法,但是没有一个能够工作......

最终我不得不使用--sftp-extra-args返回文件模块来实现我所需要的。它成功了。

答案 2 :(得分:0)

要传递密码以同步模块,可以使用--password-file选项,如下所示。

tasks:
- name: test_rsync
  synchronize:
    mode: pull
    src: rsync://user@host/your/remote/path
    dest: /your/local/path/
    rsync_opts:
      - "--password-file=/path/to/password_file"