向设备发出远程处理并使用Ansible进行简单的ping测试

时间:2016-02-10 23:19:25

标签: automation ansible cisco

按照在线和几本书中的说明后,我不确定为什么会这样。我觉得缺少设置,但这里是设置:

我正在尝试使用命令:

ansible all -u $USER -m ping  -vvvv

显然使用-vvvv进行调试,但除了它说它正在尝试连接的事实之外没有多少输出。我收到以下错误:

S4 | FAILED => FAILED: Authentication failed.

S4代表交换机4,思科交换机我试图自动配置并显示命令。我知道我在host_vars文件中设置的密码是100%是正确的,因为当我从标准SSH客户端使用它时它会起作用。

这是我在ansible.cfg文件中的非默认配置设置:

[defaults]
transport=paramiko
hostfile = ./myhosts
host_key_checking=False
timeout = 5

我的myhosts文件:

[cisco-switches]
S4

我的S4的host_vars文件:

ansible_ssh_host: 192.168.1.12
ansible_ssh_pass: password

我目前的版本是1.9.1,在Centos VM上运行。我确实在交换机的管理接口上应用了ACL,但它允许来自此特定IP的远程连接。

请指教。

1 个答案:

答案 0 :(得分:1)

由于您使用ansible来自动化Cisco交换机中的命令,我想您希望在没有提示输入密码的情况下执行与交换机的SSH连接,或者请求按[Y / N]确认连接。

为此,我建议在交换机上配置Cisco IOS SSH服务器以执行基于RSA的用户身份验证。

首先,您需要在Linux机器上生成RSA密钥对:

ssh-keygen -t rsa -b 1024

注意:您可以使用2048而不是1024,但考虑到某些IOS版本将接受最多254个字符的ssh公钥。

在交换机侧:

conf t    
ip ssh pubkey-chain
     username test
          key-string
               Copy the entire public key as appears in the cat id_rsa.pub
               including the ssh-rsa and username@hostname.
               Please note that some IOS versions will accept 
               maximum 254 characters.
               You can paste multiple lines.     
          exit
     exit

如果你需要那个'测试'用户可以执行特权IOS命令:

username test privilege 15 secret _TEXT_CLEAR_PASSWORD_

然后,从Linux机箱测试您的连接,以便将交换机添加到known_hosts文件。这只会发生在known_hosts文件中找不到的每个交换机/主机一次:

ssh test@10.0.0.1
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:d6:4b:d1:67.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.

ciscoswitch#
ciscoswitch#exit

最后使用ansible通过SSH和原始模块测试连接,例如:

ansible inventory -m raw -a "show env all" -u test

我希望你觉得它很有用。