Bootstrap

Ansible自动化运维:基础与实践

在当今的IT运维领域,Ansible作为一款强大的自动化运维工具,正发挥着日益重要的作用。本文将详细介绍Ansible的相关知识,包括其作用、特点、安装配置以及常用模块的使用方法,旨在帮助读者快速上手并熟练运用Ansible进行自动化运维工作。

一、Ansible概述

(一)Ansible的作用

Ansible主要用于远程批量化执行命令和配置服务,是一套综合性的自动化管理工具集。通过它,运维人员能够高效地对多台计算机或者网络设备进行统一管理,极大地提高了工作效率,减少人工操作的繁琐与错误。

(二)Ansible的特点

它由Python语言开发,这使得其具有良好的可读性和扩展性。Python的丰富库和简洁语法为Ansibled功能实现提供了坚实基础

作为开源免费工具,Ansible吸引了大量开发者和用户参与贡献和使用,社区资源丰富,能获得到大量的模块和解决方案。

其模块化设计是一大亮点,每一个模块代表一个特定功能,如文件操作,服务管理等,方便用户根据需求灵活组合使用。

使用简单灵活,通过简答的命令行语法即可完成复杂的自动化任务,无需编写大量代码。

支持跨平台操作,可在多种操作系统上运行,包括Linux、Unix和windows等,适应多样化的IT环境。

(三)Ansible涉及的角色类型

使用者:主要是运维工程师,他们利用Ansible进行日常的系统管理和运维工作。同时,开发人员也可以基于Ansible进行二次开发,定制符合特定业务需求的模块。

Ansible工具:核心在于其模块设计,众多模块构成了丰富的功能库,用户通过调用这些模块实现各种自动化操作。

作用对象:Ansible可应用于指定的计算机或网络,对目标设备进行精准的配置和管理。

二、Ansible安装与配置

(一)安装Ansible

在Centos系统中,可通过以下命令安装Ansible:

yun -y install ansible

(二)查看版本

安装完成后,使用以下命令查看Ansible版本:

ansible -version

(三)配置ssh免交互式验证

1.首先生成密钥对:

ssh-keygen -t RSA

2.然后将公钥上传到远程执行命令的主机,例如:

ssh-copy-id -i [email protected]
ssh-copy-id -i [email protected]

(四)配置管理Ansible客户端

编辑/etc/ansible/hosts文件,定义客户端管理组和主机列表,示例如下:

[web]
192.168.100.10
192.168.100.20
192.168.100.30

三、Ansible模块的使用

(一)ping 模块

用于测试Ansible与目标主机的连通性,有以下两种测试方式:

ansible -i /etc/ansible/hosts web -m ping 
ansible web -m ping

(二)常用命令选项

-i:指定加载的主机列表文件路径,如/etc/ansible/hosts。

-v:输出详细信息,帮助用户了解任务执行的过程中的更多细节。

-m:为指定模块传递参数,根据不同模块的要求设置相应的参数值。

-a:为指定模块传递参数,根据不同模块的要求设置相应的参数值。

--private:指定密钥文件进行验证,确保连接的安全性。

--list-hosts:列出Ansible管理的计算机列表,方便查看和确认。

(三)command模块

1.作用:在远程计算机上执行命令,但不支持管道符和重定向操作。

2.选项:

chdir:用于切换远程主机的目录,在执行命令前进入指定目录。

creates:在创建文件时使用,若指定文件已存在则不执行后续命令。

removes:与creates相反,若指定文件存在则执行删除操作,然后执行后续命令。

3示例:

切换目录并列出文件:

ansible web -m command -a "chdir=/ ls./"

查看主机内存:

ansible web -m command -a "free -g"

查看主机硬盘使用情况:

ansible web -m command -a "df -Th"

(四)copy模块

1.作用:实现文件或目录的复制操作。

2.选项:

dest:指定目标目录或者文件的路径,及复制后的存放位置。

src:源目录或文件的路径,表明要复制的内容来源。

mode:设置复制后文件或目录的权限,如775

owner:修改复制数据的所有者,如test

group:修改复制数据所属组,如test

3.示例:

ansible web -m copy -a "src=/etchosts dest=/ mode=775 owner=test group=test"

(五)shell模块

1.作用:在远程主机上执行命令,支持管道符和重定向操作,功能比command模块更大。

2.示例:

将内容重定向到文件:

ansible web -m shell -a "echo "aaa" > /1.txx"

查看创建的文件:

ansible web -m shell -a "ls -ld /1.txx"

使用管道符查看进程:

ansible web -m shell -a "netstat -anptu | grep sshd"

(六)hostname模块

1.作用:用于修改计算机的名字

2.示例:

ansible 192.168.100.20 -m hostname -a "name=111"

(七)yum模块

1.作用:实现程序的批量化安装和卸载操作。

2.选项:

name:指定要安装或卸载的程序名字。

state: 有present(安装)liatest(安装最新版本)absent(卸载)等取值。

disablerepo:禁用指定的yum仓库。

enablerepo:启用指定的yum仓库。

3.示例:

删除系统yum仓库:

ansible web -m shell -a "rm -rf /etc/yum.repos.d/CentOS-*"

挂载光盘:

ansible web -m shell -a "mount /dev/cdrom/mnt"

安装httpd程序:

ansible web -m yum -a "name=httpd state=present"

检查程序安装是否成功:

ansible web -m shell -a "rpm -qa | grep httpd"

(八)user模块

1.作用:创建和管理用户账户信息

2.选项:

name:用户的名称。

state:present表示创建用户,absent表示删除用户。

system=yes | no:确定是否为系统用户。

uid:指定用户的ID。

group:用户所属的组。

shell:指定用户的默认shell。

home:指定用户的宿主目录。

move_host=yes|no:设置家目录是否存在。

password:用户的密码,需加密处理。

comment:对用户的说明信息。

remove=yes|no:删除用户时是否同时删除其家目录等相关文件。

3.示例:

ansible web -m user -a 'user=111 system=yes uid=520 group=root shell=/bin/bash password=密码 comment="aa"'

通过对Ansible这些基础内容的学习,读者可以初步掌握Ansible的核心功能和使用方法,为进一步深入学习和在实际工作的应用奠定坚实的基础。随着Ansible使用经验的积累,还可以探索其更高级的特性和应用场景,实现更复杂,高效的自动化运维任务。

;