我有一个由ansible-playbook -u <username> -k playbooks/example.yml从命令行手动运行的ansible攻略
上面的方法运行良好。它会提示我输入SSH密码并运行攻略。
The ansible version in my linux machine: 2.7.7
作为我的构建计划的一部分,我需要在竹子中运行它。在竹子中,我不能输入密码,因为它不会提示我。所以我希望将用户名和ssh密码作为参数作为命令的一部分进行传递。
我试过了
ansible-playbook playbooks/monitor-linux-node.yml -e "ansible_user=<username> ansible_ssh_pass=password"这将抛出此错误
ERROR: blockinfile is not a legal parameter in an Ansible task or handler我也试过这个
ansible-playbook -u <username> playbooks/monitor-linux-node.yml -e "ansible_ssh_pass=password"这将抛出Usage: ansible-playbook playbook.yml并列出我们可以使用的参数。
任何关于如何在命令行中传递用户名和ssh密码的建议都将非常有用。
The ansible version in Bamboo machine: 1.9.4
发布于 2019-12-25 21:53:19
考虑使用sshpass
sshpass -p <ssh-password> ansible-playbook -u <username> --ask-pass playbooks/monitor-linux-node.yml会最接近你想要的。如果可能,考虑使用密码文件
sshpass -f <password-file> ansible-playbook -u <username> --ask-pass playbooks/monitor-linux-node.yml请注意--ask-pass密钥。sshpass将以非交互方式提供密码,而不是用户。
如果您不介意密码以未加密的方式存储在文件中,那么可以考虑使用group_vars/<group name>.yml来定义ansible_ssh_pass变量。您仍然需要sshpass,但ansible将在幕后使用它。
https://stackoverflow.com/questions/57518969
复制相似问题