今天我开始学习ansible,我尝试在远程服务器上运行ping命令时遇到的第一件事是
192.168.1.100 | UNREACHABLE! => {
"changed": false,
"msg": "(u'192.168.1.100', <paramiko.rsakey.RSAKey object at 0x103c8d250>, <paramiko.rsakey.RSAKey object at 0x103c62f50>)",
"unreachable": true
}
所以我手动设置了SSH密钥,我认为我面对这个问题,因为任何devops没有编写或教程解释他们不需要它的步骤,或者他们是否在编写教程之前手动设置了它视频。
所以我认为如果我们能够自动化这一步也会很棒。
答案 0 :(得分:0)
如果没有设置ssh密钥,您可以随时提示输入ssh密码
-k, --ask-pass ask for connection password
答案 1 :(得分:0)
我使用这些命令在root帐户下设置CentOS 6.8上的密钥:
h(2000)=2
cat ~/.ssh/id_rsa.pub | ssh ${user}@${1} -o StrictHostKeyChecking=no 'mkdir .ssh > /dev/null 2>&1; restorecon -R /root/; cat >> .ssh/authorized_keys'
ansible $1 -u $user -i etc/ansible/${hosts} -m raw -a "yum -y install python-simplejson"
ansible $1 -u $user -i etc/ansible/${hosts} -m yum -a "name=libselinux-python state=latest"
是传递给脚本的第一个参数,应该是机器名。
我在其他地方设置${1}
,但您也可以将其设为参数。
${user}
是我的主机文件,它有一个默认值,但可以用参数覆盖。
${hosts}
命令是安抚selinux。我只是硬编码它来运行restorecon
目录,我无法记住原因。如果你运行它来设置一个非root用户,我认为该命令是无意义的。
我认为需要这些安装,/root/
和python-simplejson
。
如果重复运行,这将使libselinux-python
个文件发送垃圾邮件。可能有更好的方法,但这是我的快速和脏运行一次脚本。
我在CentOS 7和Ubuntu的脚本中略有不同。
答案 2 :(得分:0)
不确定这些服务器的类型,但几乎所有Ansible教程都涵盖了Ansible使用SSH并且您需要SSH访问才能使用它的事实。
根据您首先配置服务器的方式,您可以在首次启动时注入ssh密钥,但如果您从仅密码登录开始,则可以在运行时使用--ask-pass
标志剧本。然后,您可以使用authorized_key模块在服务器上设置密钥。