我正在使用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:
如果我再次输入密码,则部署正确完成。
我的问题是
由于环境限制,我无法使用ssh密钥。
出于可伸缩性原因,我不想使用复制模块。
我尝试过的事情
有人可以帮忙吗?
答案 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"