因为管理一般都是用 ssh 密钥连接远程主机, 但要获取 ssh 密钥还是需要先用密码远程登陆一次去生成和获取 但 ssh-keygen 这个命令是一个交互式命令, 如果用 psexec 模块来做响应匹配, 则需要目标主机安装 pypsexec 包, 但我并不想在部署服务之前在远程主机安装任何依赖, 所以改用 shell 模块 原 shell 脚本:
if [ -f ~/.ssh/id_rsa.pub ]
then
cat ~/.ssh/id_rsa.pub
elif [ -f ~/.ssh/id_rsa ] && [ ! -f ~/.ssh/id_rsa.pub ]
then
echo -e "\ny\n\n\n" | ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
else
echo -e "\n\n\n\n" | ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
fi
改成 play
- hosts: 192.168.8.128
tasks:
- name: create host ssh rsa
shell:
if [ -f ~/.ssh/id_rsa.pub ];then cat ~/.ssh/id_rsa.pub;elif [ -f ~/.ssh/id_rsa ] && [ ! -f ~/.ssh/id_rsa.pub ];then echo -e "\ny\n\n\n" | ssh-keygen -t rsa; cat ~/.ssh/id_rsa.pub;else echo -e "\n\n\n\n" | ssh-keygen -t rsa; cat ~/.ssh/id_rsa.pub; fi
但似乎 echo -e "\ny\n\n\n" | ssh-keygen -t rsa; 这一句并没有起效果, 有遇到过这种问题的吗? 如果还是不行的话, 那就只能 script 模块传送脚本, 或者用 paramiko 封装一个, 之前在其他项目用的是 fabric, 但这个想用 ansible 做
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.