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:

python 复制代码
yun -y install ansible

(二)查看版本

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

python 复制代码
ansible -version

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

1.首先生成密钥对:

python 复制代码
ssh-keygen -t RSA

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

python 复制代码
ssh-copy-id -i root@192.168.100.10
ssh-copy-id -i root@192.168.100.20

(四)配置管理Ansible客户端

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

python 复制代码
[web]
192.168.100.10
192.168.100.20
192.168.100.30

三、Ansible模块的使用

(一)ping 模块

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

python 复制代码
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示例:

切换目录并列出文件:

python 复制代码
ansible web -m command -a "chdir=/ ls./"

查看主机内存:

python 复制代码
ansible web -m command -a "free -g"

查看主机硬盘使用情况:

python 复制代码
ansible web -m command -a "df -Th"

(四)copy模块

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

2.选项:

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

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

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

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

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

3.示例:

python 复制代码
ansible web -m copy -a "src=/etchosts dest=/ mode=775 owner=test group=test"

(五)shell模块

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

2.示例:

将内容重定向到文件:

python 复制代码
ansible web -m shell -a "echo "aaa" > /1.txx"

查看创建的文件:

python 复制代码
ansible web -m shell -a "ls -ld /1.txx"

使用管道符查看进程:

python 复制代码
ansible web -m shell -a "netstat -anptu | grep sshd"

(六)hostname模块

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

2.示例:

python 复制代码
ansible 192.168.100.20 -m hostname -a "name=111"

(七)yum模块

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

2.选项:

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

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

disablerepo:禁用指定的yum仓库。

enablerepo:启用指定的yum仓库。

3.示例:

删除系统yum仓库:

python 复制代码
ansible web -m shell -a "rm -rf /etc/yum.repos.d/CentOS-*"

挂载光盘:

python 复制代码
ansible web -m shell -a "mount /dev/cdrom/mnt"

安装httpd程序:

python 复制代码
ansible web -m yum -a "name=httpd state=present"

检查程序安装是否成功:

python 复制代码
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.示例:

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

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

相关推荐
开开心心_Every7 分钟前
Win10/Win11版本一键切换工具
linux·运维·服务器·edge·pdf·web3·共识算法
啟明起鸣9 分钟前
【Nginx 网关开发】从源码分析 Nginx 的多进程启动原理
运维·nginx
怣5020 分钟前
Linux创意命令组合:让终端变得有趣又高效
linux·运维·服务器
啟明起鸣26 分钟前
【Nginx 网关开发】上手 Nginx,简简单单启动一个静态 html 页面
运维·c语言·前端·nginx·html
Tinyundg38 分钟前
Linux系统分区
linux·运维·服务器
要做一个小太阳41 分钟前
华为Atlas 900 A3 SuperPoD 超节点网络架构
运维·服务器·网络·华为·架构
江畔何人初1 小时前
service发现
linux·运维·云原生
life码农1 小时前
Linux系统清空文件内容的几种方法
linux·运维·chrome
zbguolei1 小时前
虚拟机安装Ubuntu后无法登录
linux·运维·ubuntu
UP_Continue1 小时前
Linux--基础IO
linux·运维·服务器