我用以下方式使用ansible:
ansible-playbook -f 1 my-play-book.yaml --ask-pass --ask-sudo-pass
在此之后,我被要求输入ssh和sudo密码(两者的密码相同).
在我的playbook文件中,我正在使用同步任务:
synchronize: mode=push src=rel/path/myfolder/ dest=/abs/path/myfolder/
对于每个主机,我被提示输入远程主机的ssh密码(与我在playbook运行开始时输入的密码相同)
如何在执行同步任务时避免输入密码?
Ansible的同步模块(v1.6.5)提示输入密码(输入密钥的密码),即使我已经在运行playbook 的开头输入了密码.
知道为什么吗?
我用以下选项运行我的playbook:
-u myuser --ask-sudo-pass --private-key=/path/to/id_rsa
Run Code Online (Sandbox Code Playgroud)
这是我的同步任务:
- name: synchronize source files in src location
sudo: yes
synchronize: src={{local_src}} dest={{project_dirs.src}} archive=yes delete=yes rsync_opts=["--compress"]
when: synchronize_src_files
Run Code Online (Sandbox Code Playgroud)
使用ssh-agent更新
按照Lekensteyn的建议,我尝试使用ssh-agent.我没有提示,但任务失败了.我错过了什么?
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
错误:
TASK: [rolebooks/project | synchronize source files in src location] **********
failed: [10.0.0.101] => {"cmd": "rsync --delay-updates -FF --compress --delete-after --archive --rsh 'ssh -i /home/vagrant/.ssh/id_rsa -o StrictHostKeyChecking=no' --rsync-path=\"sudo rsync\" [--compress] --out-format='<<CHANGED>>%i %n%L' /projects/webapp mike@10.0.0.101:/var/local/sites/project1/src", "failed": true, "rc": 12}
msg: sudo: no tty present …Run Code Online (Sandbox Code Playgroud)