Ansible用于网络设备管理 part 0 安装和登录网络设备

真尼玛累了,但是又怕第二天早上又忘掉,在这先大概写写。

安装:

http://www.tecmint.com/install-and-configure-ansible-automation-tool-in-linux/

http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/

基本就靠这俩就搞定了

登录网络设备让我比较费劲,因为之前不了解公钥私钥加密(说实话是别人讲了,没理解,这次终于理解了,改天得专门写个博客写公钥私钥和如何反其道而行的设置私钥登陆,见http://superuser.com/questions/556355/is-there-a-difference-if-ssh-key-is-created-on-serverside 这哥们儿和我想的一样哈哈!删掉生成者服务器上的私钥!然后放到本地PC!),公钥私钥是让马哥Linux给讲明白的。如何配置公钥私钥主要靠下面这俩链接

http://wilson18.com/topic/72-how-to-set-up-ssh-keys-to-log-in-on-centos-65-from-windows/ 这个链接很神奇,它给了我反其道而行之的思路,也大概让我知道了我们公司的账号是怎么架构的,估计就是反着来,用脚本生成给user, user自己负责保管私钥。其中的 chmod也有用!然后也传递给我一个概念,加上上面那个哥们儿心里所想的,让我觉得,key pair 这个东西的生成者是哪个机器根本不重要,重要的就是这个私钥放在哪里(登录者),公钥放在哪里(被登录者),然后还有私钥的主人是谁,也就是那个账号,账号是由ssh-keygen时那个机器上的那个Linux账号决定的(不过我觉得可以改...也许不能)。还有这个链接,http://serverfault.com/questions/591476/ssh-server-refused-our-key-for-all-users-except-root-user,这个是用来解决非root用户如何使用密钥的,当我把私钥从生成者服务器上拿走之后,就要解决这个问题,而这个链接给了我方法解决非root用户登录进来的问题。

当把上面的一切弄明白之后,我给自己hsun建了一个账号在10.19.96.150上,然后把私钥剪切到了我的OS X上,然后解决掉一切的权限问题,免密码从OS X登录到这个机器上去。然后正餐才开始:

1、建立一个叫ansibleserver的账号,为他生成key pair, 把public key传到办公室的vc上去,这样ansibleserver就能直接登录vc switch了。

[[email protected]_Server ~]$ ssh cn-pek1-10-a01-ex-vc1.cnet.com
Enter passphrase for key ‘/home/ansibleserver/.ssh/id_rsa‘:
--- JUNOS 12.3R9-S1 built 2015-03-13 08:00:19 UTC
{master:0}
[email protected]-pek1-10-a01-ex-vc1> 

2、然后比着Kirk老师在https://pynet.twb-tech.com/blog/ansible/ansible-cfg-template.html 这个博客里写的架构ansible账户的方法,为ansibleserver这个用户建立相应的用户家目录,如下图,哈哈,我画了图,清楚多了

就这样,比着这个图取理解Kirk的前两篇博客。也为ansibleserver这个账户建立好这一切。

哦?hosts文件要改一下,为的是让ansibleserver这个账户为我们办公室的vc switch服务,图里这个gituser是完全按照Kirk的博客里说的建立的。

那么下面就是如何让ansibleserver为办公室的vc switch服务,这个我参考了诸多的博客,最终知道了hosts文件应该怎么写,因为这个时候ssh已经能直接登录vc switch了,没有理由ansible命令get不到vc switch,当时报的错如下:

[[email protected]_Server ansible]$ ansible all -m ping -u ansibleserver
localhost | FAILED => SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
Enter passphrase for key ‘/home/ansibleserver/.ssh/id_rsa‘:
Enter passphrase for key ‘/home/ansibleserver/.ssh/id_rsa‘:
cn-pek1-10-a01-ex-vc1.cnet.com | FAILED => failed to transfer file to error: unknown command: /bin/sh/ping:

Connecting to cn-pek1-10-a01-ex-vc1.cnet.com...
Permission denied (publickey,password,keyboard-interactive).
Couldn‘t read packet: Connection reset by peer

[[email protected]_Server ansible]$
[[email protected]_Server ansible]$ 

我特么的当时感到十分的奇怪,尼玛我passphrase根本没打错啊,我直接ssh命令到vc switch的时候也没出错啊,那我就去搜错报错信息中的“unknown command: /bin/sh/ping:”这一句去了,结果真就找到了解决的办法,来自这个链接 https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/ansible-project/9zG8bMyv4es/Lw6CpW_pIW0J , 这个链接里就教会了我如何去些hosts文件,来避免这个错误,它的里面写的那个IP,其实就是目标主机的地址,我这里写的我的vc的主机名,下面是我的hosts文件的内容

[[email protected]_Server ansible]# more hosts
[switch]
cn-pek1-10-a01-ex-vc1.cnet.com   ansible_connection=local    ansible_ssh_host=cn-pek1-10-a01-ex-vc1.cnet.com

[local]
localhost ansible_ssh_user=ansibleserver
[[email protected]_Server ansible]# 

改成这样之后,ansible的那个ping命令就能正常使用了,效果如下:

[[email protected]_Server ansible]$ ansible all -m ping
localhost | FAILED => SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
cn-pek1-10-a01-ex-vc1.cnet.com | success >> {
    "changed": false,
    "ping": "pong"
}

我不得不吐槽一下官方文档之简陋,连个ansible all -m ping应该出来什么output它都不写,官方doc链接在这 http://docs.ansible.com/ansible/intro_getting_started.html,基本没帮上什么忙,唉。

to be re-modified....

时间: 2024-08-27 15:16:08

Ansible用于网络设备管理 part 0 安装和登录网络设备的相关文章

Ansible用于网络设备管理 part 4 使用NAPALM成品库+Gabriele的方法+循环

上次用NAPALM实现了一个给端口加description的小功能,但是那次仅仅是用于给一个设备的一个端口加description,没有实现一次给多个设备加,也没有实现一个给多个端口加(虽然这次也没实现,但是快了). 今天只讨论IOS,古老的IOS. 循环的功能是通过bash自带实现的,其实也可以通过Python,只是我的Python太渣,并没有通过Ansible实现,是因为我现在还不太会用hosts,所以用的bash.添加配置的功能是通过NAPALM实现的.那么其实呢,通过NAPALM实现添加

Ansible用于网络设备管理 part 2 对Jinja2 YAML 和 module的理解

虽然很不想用“应该”这个词,但是还是写上了,的确我自己目前就是这么理解的. 那么这个理解就是,Ansible的一个key point 就是总的一个playbook是去依赖很多元素的,就像一开始那个图里画的,如下图 这里面就涉及到它下挂的不管是yml文件还是Jinja2文件,这些文件的内部一定是和Ansible这个东西相紧密关联的,我之前之所以不那么理解就是在于这一点没有弄清楚,再说明白一点就是下面的内容 看到task:下面的东西了么?name, yum, service,还有在Jinja2文件(

Fuel7.0安装

陈沙克在他的经典文章里分析了多个安装部署工具,用于openstack部署. 当然时代变了,所以很多这些工具都改头换面了. 目前看, 1 Mirantis Fuel仍然是最好的商业用选择,虽然还有瑕疵. fuel在7和7之后已经提供开源的plugin插件,例如contrail的插件.并将fuel plugin方案放入openstack发展会中. fuel在6的时候已经在提供商业化的plugin了. fuel目前的8有个讨厌的地方就是需要联网取些内容(是我网的问题,联网去取docker image供

Hadoop2.2.0安装过程记录

1    安装环境1.1    客户端1.2    服务端1.3    安装准备    2    操作系统安装2.1.1    BIOS打开虚拟化支持2.1.2    关闭防火墙2.1.3    安装VNC3    JAVA安装    3.1    配置目的3.2    配置过程3.3    结果验证4    主机名配置4.1    配置目的4.2    配置过程4.3    结果验证5    增加hadoop用户5.1    配置目的5.2    配置过程5.3    结果验证6    Had

Centos6.5/7.0安装后优化(实验用)

############################################################################## #Centos6.5/7.0安装后优化(实验用)2014.07.18 ############################################################################## # 优化条目: # 1.修改ip地址.网关.主机名.DNS等 # 2.关闭selinux,清空iptables #

Centos 7.0 安装Mono 3.4 和 Jexus 5.6

2013-07-26 写过一篇<CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4>,CentOS 7在CentOS 6的基础上有很大的调整,本文是这篇文章的更新,主要介绍CentOS 7下安装Mono 3.4 和 Jexus 5.6. CentOS是一个基于RHEL的Linux发行版,其目的是为了提供一套免费与自由的企业等级Linux发行版.CentOS的名称来自于「Community ENTerprise Operating System」,从名称便可以知道这是一套由社区

Veeam Backup & Replication 7.0 安装和使用

一.安装Veeam备份程序 除了使用vSphere Data Protection进行备份和恢复外,还有很多第三方软件可以使用,本案例将介绍虚拟化方面著名的备份恢复软件--Veeam Backup & Replication vPower的工作原理: 将经过压缩的备份作为普通的VMDK文件发布 直接从备份运行虚拟机 创建一个隔离的环境,用于应用项恢复.恢复验证.测试及故障排查 什么是Veeam Backup & Replication: 提供先进的基于虚拟化的数据保护解决方案,同时支持Vm

CentOS 6.0安装和配置ssh服务

/* 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击.所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器.服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题.通过使用SS

网络检测工具smokeping安装配置

smokeping是MRTG和RRDtool作者Tobi Oetiker的作品,主要用于对IDC网络质量,稳定性等做检测,主要功能包括常规的ping,dig,echoping,curl等,依赖rrdtool来画图.选择smokeping我觉得有以下原因: 1,最佳的画图功能,延迟和丢包用颜色和阴影表示很直观. 2,免费和开源. 3,支持主从的分布式模式. 4,可以自定义报警功能. smokeping官方网站:http://oss.oetiker.ch/smokeping/ 如下安装配置的系统为: