Ansible实践(一):初识Ansible自动化运维工具及主机清单配置

环境声明

  • 阿里云ECS Centos7.7.1908 ×1
  • Azure虚拟机 Centos7.7.1908 ×1
  • AwsEC2 Centos7.7.1908 ×1
  • Vmware Centos7虚拟机 Centos7.7.1908 ×1

构建自己的Server集群

构建属于自己的服务器集群,听起来似乎很遥不可及,需要巨大成本的样子。但其实,将几台服务器联合起来管理使用,已经可以称得上一个小集群了.
方法一、作为学生党,可以借助BAT三个国内云服务商提供的学生主机各买一台,在40元以内的成本构建起属于自己的"服务集群",由于楼主本身用于AWS和Azure的一年优惠体验,所以只采购了阿里云的学生主机
方法二、另一种方法在Vmware创建多个虚拟主机,同时运行,也可以作为"服务集群 "。前提需要您的物理主机配置过关,否则同时开启多个虚拟主机,物理主机承受的工作负载很大。如果您拥有两台或以上个人主机,可以考虑将一台电脑部署为Esxi虚拟化平台,再创建多个虚拟机,使用另一台物理主机进行管理。本来也想使用Esxi的,只可惜楼主在学校的那台联想服务器忘了做内网穿透。

本文中Server集群指代的是虚拟主机服务集群,Machine集群指代的是物理主机集群。由于公有云服务商提供的主机本质上也属于虚拟主机,故本文实践和讨论的是Server集群。

认识Ansible

Ansible是一款基于Python开发的自动化运维工具,能够实现批量系统配置、批量程序部署、批量运行命令等
ANsible基于模块工作,常用模块包括shell模块、复制模块、用户模块、软件包模块、服务模块、文件模块、剧本模块等待
Ansible官网: https://docs.ansible.com/

安装Ansible模块及基本配置

我们无需为集群中的每台服务器部署Ansible,只需为一台主机安装Ansible作为Ansible服务器,其余作为Ansible客户机即可。为了节约云服务器资源,本文使用一台Vmware主机作为Ansible服务器。下面开始安装。

  • 安装红帽拓展源
	yum install -y epel-release
  • 安装Ansible
	yum install  -y ansible

安装完成后,为了方便其他Ansible客户机的管理,在Ansible服务器的本地解析文件中添加相关信息

	vim /etc/hosts 

为每台客户机配置易于记忆的域名
本文将三台客户机分别命名为
aliserver、awsserver、azuserver
在配置完成后,您可以使用

	ping [hostname]  

检测是否可以正确解析

Ansible主机清单配置

/etc/ansible/hosts是Ansible的主机清单文件,包含连接Ansible客户机的基本信息。注意,Ansible服务器和客户机的通信是基于ssh的。接下来,由浅入深配置主机清单文件。

  • 仅添加客户机
	vim /etc/ansible/hosts

在末尾加入`

	[ip] aliserver
	[ip] awsserver
	[ip] azuserver

保存退出后,输入

	ansible aliserver -m ping -o -u root -k

输入密码后以及同意ssh主机密钥检测的安全提示后,得到如下提示,证明测试连通性成功

`aliserver ' SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},
"changed": false, "ping": "pong"}`

另外两台客户机的测试同上测试连通性语句参数说明
aliserver 目标主机或主机组
-m 指定模块ping
ping 模块
-u 用户
-k 使用密码

  • 添加组
    编辑 /etc/hosts文件在三台主机的上一行,添加[server]字段,即定义了一个客户机组再次使用测试连通性语句`
	ansible server -m ping -o -u 

依此输入密码即可测试组中所有主机的连通性

  • 添加主机的连接相关信息
    如果不想每次测试连通性都输入一串参数,您可以在主机清单文件中添加主机配置信息,在每一行主机后面,以[参数]=参数值,空格作为参数分隔符的形式添加连接信息。例如
	aliserver  ansible_ssh_user='root'  ansible_ssh_pass='xxx'`

常见可选参数
在这里插入图片描述

  • 利用变量简化信息的填写
    在您命名的server集群组中,如果它们的连接信息具有一致的部分,您可以使用Vars变量将参数简化。例如在定义的server组中,具有相同的端口号,用户,可以使用以下格式同一组中的主机一次性配置参数
	[server]``host[1:4]   #主机名的填写支持类似正则的简化填写  
	[server:vars]
	ansible_ssh_user='root'
	ansible_ssh_pass='xxx'
  • 分组组合
    分组不仅支持将主机划分至某个组,同时支持将组划分至一个组中,作为子组,方便集群机器的灵活管理。为了将组与主机区分,您需要使用children声明。
	[server1]
	host[1:2]
	
	[server2]
	host[3:4]
	
	[server:children]
	server1 
	server2
  • 指定清单文件,方便主机清单的跨设备迁移使用
    使用ansible语句操作时默认的主机清单文件是/etc/ansible/hosts。为了方便清单文件的重复和跨设备使用,您可以在主机或组参数前添加主机清单文件参数。例如存在主机清单文件hostlist,,可以使用以下语句进行操作`
	ansible -i hostlist host1 -m ping -o

总结

  • Ansible作为运维自动化工具,在仅使用一台主机作为ansible服务器的情况下,实现客户机的批量化管理和部署。
  • Ansible服务器与客户机之间的通信基于ssh协议,请确保服务器sshd服务的正常,ssh端口号,防火墙与云服务商安全组的配置。另外,使用密码的方式进行通信并不安全,尤其是将连接信息写入主机清单文件时,存在关键信息暴露的危险
  • 本文举例用到的ping如上所示,是基于ssh的通信行为,与ICMP协议无关,ping是Ansible的一个模块,Ansible的工作都是基于模块工作的,下一篇我们也会详细介绍Ansible的常用模块。

个人博客同步更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值