1

今天我开始学习 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 的文章或教程解释了他们为什么不需要它的步骤,或者他们是否在编写教程或视频之前手动设置了它。

所以我认为如果我们也可以自动化这一步会很棒..

4

3 回答 3

0

我使用这些命令在根帐户下的 CentOS 6.8 上设置密钥:

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}是我的主机文件,它有一个默认值,但可以用参数覆盖。

命令是为了restorecon安抚selinux。我只是硬编码它以针对/root/目录运行,我不记得确切原因。如果您运行它来设置非 root 用户,我认为该命令是无稽之谈。

我认为这些安装是必需的python-simplejsonlibselinux-python

如果您重复运行它,这将向authorized_keys包含重复条目的文件发送垃圾邮件。可能有更好的方法,但这是我快速而肮脏的运行一次脚本。

我对 CentOS 7 和 Ubuntu 的脚本做了一些细微的改动。

于 2016-09-23T17:02:00.300 回答
0

如果尚未设置 ssh 密钥,您可以随时提示输入 ssh 密码

-k, --ask-pass      ask for connection password
于 2016-09-23T04:30:06.837 回答
0

不确定这些是什么类型的服务器,但几乎所有 Ansible 教程都涵盖了 Ansible 使用 SSH 并且您需要 SSH 访问权限才能使用它的事实。

根据您最初配置服务器的方式,您可能能够在首次启动时注入 ssh 密钥,但如果您从仅密码登录开始,则可以--ask-pass在运行 Playbook 时使用该标志。然后,您可以让您的第一次游戏使用authorized_key模块在服务器上设置您的密钥。

于 2016-09-26T19:49:52.493 回答