在当今的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使用经验的积累,还可以探索其更高级的特性和应用场景,实现更复杂,高效的自动化运维任务。