Linux学习(第十六周)

第十六周学习内容:PXE和ansible

第十六周作业:

1、实现cobbler+pxe自动化装机 。

      PXE,被称为预启动执行环境,可以实现自动化装机,会用到的几个重要组件:dhcp、tftp、http或ftp。

      dhcp:动态主机配置协议,主机想要接入tcp/ip网络要为其配置包括ip地址、掩码、网关、dns等参数,借助dhcp协议可以自动的为主机分配以上这些参数。工作原理:dhcp服务器拥有一个地址池,主机发送广播的DHCP请求报文,服务器做出响应,响应中就包含着主机请求的内容,主机收到响应后返回确认报文,同样服务器在收到确认报文后也给主机发送一个确认信息。整个报文交互流程:DHCP DISCOVER-DHCP OFFER-DHCP REQUEST-DHCP ACK。dhcp协议还有租约的概念,所分配出去的参数都有其租期,当租期满时会收回,主机会在租期一半的时候申请续租。dhcp在linux系统上的具体实现有dhcpd程序包。

      dhcpd:安装完成后其配置文件在/etc/dhcp/dhcp.conf,服务文件时dhcpd.service。默认配置文件默认是空的,可以将模板复制过来,cp /usr/share/doc/dhcp-X-X/dhcp.conf.example /etc/dhcp/dhcp.conf。配置文件中使用option开头作为选项,后面可以跟routers指明网关,domain-name-servers指明DNS服务器,domain-name指明域名;其他重要配置项还有default-lease-time表示默认租期,max-lease-time表示最大租期,subnet X.X.X.X netmask X.X.X.X {}用来指明地址池,在“{}”中可以用range来定义具体给出去的地址范围,filename配合next-server用来定义去远程主机上加载哪个文件,这个在PXE部署中其中关键性作用。

      image.png

      tftp:作为PXE的重要组件,需要安装tftp_server程序包,提供简单的文件传输。这个程序非常小,无需做什么特殊配置,直接启动即可,甚至不一定要以服务方式启动,以临时守护程序启动也可以,默认存放目录为/var/lib/tftpboot目录下,启动服务后就可以上传文件,下载文件了。

      http或ftp:这两个程序是作为PXE的yum仓库,一般会把光盘挂在到这两个程序的root目录下,作为PXE安装新系统时的yum仓库,如果是使用kickstart文件自动安装也是使用这两个程序作为kickstart文件的路径。

      image.png

      PXE的工作流程:没有安装系统的主机开机,通过DHCP拿到IP地址和远程主机地址以及要加载的文件,通过tftp去加载哪个远程主机上的文件,该文件会指引主机如何加载内核、initrd等,最终使用anaconda打开安装界面,安装系统过程中其他程序的安装源是以http或ftp指向的远程主机,或者使用kickstart文件安装的话,此文件也是在远程主机上的。

      具体配置:PXE工作流程中这个要去远程主机主机上加载的重要文件叫做pxelinux.0,需要安装syslinux,安装完成后在/usr/share/syslinux目录下就找到了,将其复制到tftp目录下,同时还要讲其他几个辅助文件也一并拷过去,chain.c32、menu.c32、mboot.c32、memdisk,分别是列表文件,图形界面文件等。

      image.png

      再在tftp目录下,也就是/var/lib/tftpboot目录下创建个pxelinux.cfg目录,该目录下新建个default文件作为启动安装列表。

      image.png

      从挂载的光盘中/images/pxeboot目录项将init和内核文件拷贝至tftp目录下。

      image.png

      此时打开一台主机以后可以看到,自动获取地址,加载pxelinux.0文件,进入安装界面。

      image.png

      总结:使用PXE进行自动系统安装需要拷贝4个小文件(chain.c32、menu.c32、mboot.c32、memdisk),3个大文件(pxelinux.0、vmlinuz、initrd.img)到tftp目录下,光盘和ks文件是放在http目录下,dhcp提供地址和远程主机地址和需要加载文件,别忘了还要配置一个default文件。

      cobbler:使用PXE在一台服务器上同时提供多个不同系统的安装是非常困难的,而cobbler作为pxe的二次封装,可以做到将多种可安装系统揉合在一起,用户可以基于选择菜单挑选想要安装的系统。cobbler位于EPEL仓库,安装完成后的主配置文件是/etc/cobbler/settings,在此目录下还有许多次配置文件和模板文件。什么配置也不该就可以启动cobbler服务了,会跳出好多条配置报错,一条一条去解决即可。首先是server,默认为127.0.0.1,应该修改为服务器地址;然后是next_server,也改为服务器地址;再是关闭selinux;最后是把/usr/share/syslinux目录下的pxelinux.0和menu.c32拷贝到/var/lib/cobbler/loaders目录下,也可以把整个selinux拷贝过去,减少报错。做好这些配置就可以启动cobbler服务了,当然dhcp/http/tftp服务还是要准备好的。

      cobbler的三个层次:distro:不同的发行版系统;profile:不同配置的同一发行版系统;system:不同ip地址同一配置的同一发行版系统。

      cobbler的具体用法:coobler+主选项+次选项,主选项有distro、profile、system;次选项有add、edit、copy、list、remove等,使用--help可以查看帮助信息。定义一个distro有四个必须的配置指令:--kernel=指定内核文件、--initrd=指定initrd文件、--name=定义名字、--arch=定义平台。嫌麻烦的话可以直接导入,这是最为方便的方法:cobbler import --name="CentOS-7.0_x86_64" --path=/media/cdrom。会自动生成一个最小安装的profile,如果不想用最小安装的话,可以自行添加,命令为cobbler profile add --name=XXX --distro=XXX --kickstart=XXX。

      image.png

      此时打开一台主机以后可以看到,进入安装界面。

      image.png

      总结:使用cobbler进行自动系统安装,先启动cobbler,一条条解决配置报错;再配置运行环境,包括导入光盘,修改profile,自定义profile的话需要指ks文件。

2、ansible实现主/备模式高可用。

      ansible是一个能够做到远程进行系统配置,更新发布,批量运行命令等操作的程序,非常轻量化,没有服务进程,客户端也无需安装额外的程序,服务器端也就是部署指令的主机上也只需要个命令行工具即可。ansible程序本身只是执行一些管理命令,具体的任务是由模块去完成的,核心模块用来完成最为常见的任务,自定义模块用来完成实现anible默认不支持的任务。连接被管理主机是通过ssh的,哪些主机可被管理则通过HOST文件(主机清单)定义,还有一块日志插件和核心组件playbooks(剧本),用来定义哪些主机执行那些操作之类的,ansible配置的最终目的就是定义剧本和角色。

      具体配置:安装ansible

      image.png

      编辑主机清单

      image.png

      配置http服务的角色:先创建必要的目录

      image.png

      再添加http服务的配置文件

      image.png

      再添加一张测试页面

      image.png

     最后配置http服务的任务,角色创建完毕。

      image.png

      配置keepalived服务的角色:同样先创建必要的目录

      image.png

      再创建keepalived的配置文件

      image.png

      因为配置文件中使用了变量,所以要为主机清单中的主机添加上keepalived的主从和优先级变量

      image.png

      配置keepalived服务的任务,角色定义完毕。

      image.png

      配置真正的剧本

      image.png

      最后执行剧本

      image.png

      此时就可以对后端两台主机进行访问了。

      image.png

      

      

      

猜你喜欢

转载自blog.51cto.com/13762416/2344783