我使用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
当我开始播放时,我在提示符下输入密码,然后成功获取事实,但是一旦达到同步任务,另一个提示再次询问我的密码,如下所示
DOMAIN\user@hostname's password:
如果我再次输入密码,则部署正确完成.
我的问题是
>我如何修复或解决这个问题,以便我不必为每次使用同步模块输入密码?
>这是同步模块当前预期的行为吗?或者这是Ansible中的错误?
由于环境限制,我无法使用ssh密钥.
出于可伸缩性的原因,我不想使用复制模块.
我尝试过的事情
>我已经看到了关于这个问题的其他一些问题,但我有
无法使用其中任何一个来解决我的问题或了解是否
这是预期的行为.
> Ansible synchronize prompts passphrase even if already entered at the beginning
> Ansible prompts password when using synchronize
> https://github.com/ansible/ansible/issues/5934
> https://github.com/ansible/ansible/issues/7071
> Ansible文档通常很出色但我在官方文档上找不到任何相关内容.
>我尝试在库存文件中指定用户和密码,而不使用–ask-pass和-u参数.但是,当我不必输入密码来收集事实时,同步模块仍然会请求我的密码.
>我也试过设置–ask-sudo-pass,但它没有帮助
>我一直在使用CentOS 7控制盒,但我也尝试过Ubuntu 14.04盒子
有人可以帮忙吗?
解决方法
为什么不使用
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