Ansible-基础模块

目录

一 Ansible概述

1.Ansible是什么

2.为什么要学Ansible(特点)

二 Ansible的架构及运行机制

1.Ansible的架构

2.Ansible的运行机制

三 Ansible环境安装部署

1.控制节点安装ansible

2.Ansible目录结构

3.Ansible 命令行模块

(1) command 模块

 (2)shell模块

(3)cron 模块

 (4)user模块

 (5)group模块

(6)copy模块


一 Ansible概述

1.Ansible是什么

Ansible是一个基于Python开发的配置管理和应用部署工具,可以用于自动化部署、配置和管理计算机系统。它以简单性、可读性和灵活性为设计理念,使用SSH协议进行通信,并且不需要在被管理的计算机上安装任何额外的客户端软件。

2.为什么要学Ansible(特点)

  • 自动化部署和配置管理:Ansible使得软件部署和配置变得简单且可重复。通过编写Ansible脚本,可以定义和描述所需的系统配置,并自动应用到多台计算机上。这可以大大减少手动操作的时间和错误,并提高系统的一致性和可靠性。

  • 简单易学:相比其他自动化工具,Ansible的学习曲线相对较低。它采用基于文本的配置语言(YAML)和简单的任务模块,易于理解和编写。

  • 平台无关性:Ansible是基于SSH协议进行通信的,因此可以在各种不同的操作系统和云平台上运行。

  • 扩展性和灵活性:Ansible具有丰富的模块库和插件生态系统,可以满足各种不同场景下的自动化需求。

  • 社区支持和广泛应用:Ansible拥有庞大的开源社区支持,并且得到了广泛的应用。无论是小型项目还是大型企业环境,Ansible都被广泛使用于系统管理、应用部署、配置管理等方面。


二 Ansible的架构及运行机制

1.Ansible的架构

在Ansible中,数据的流向可以概括为以下几个部分:

  • 控制节点到被控制节点:控制节点是运行Ansible的主机,它通过SSH协议与被控制节点建立连接。控制节点将任务和命令发送到被控制节点,并接收执行结果。

  • 主机清单到控制节点:主机清单文件列出了被控制节点的连接信息,包括主机名或IP地址、SSH用户名和密码等。控制节点读取主机清单文件,获取被控制节点的信息,以便建立与被控制节点的连接。

  • Playbook到控制节点和被控制节点:Playbook是一个YAML文件,定义了自动化流程、任务和主机清单的组合。控制节点读取Playbook文件,解析其中的任务和主机清单信息,并将任务和命令发送到相应的被控制节点。

  • 模块和插件的数据传输:Ansible使用各种模块和插件来实现不同的任务。数据在控制节点和被控制节点之间通过SSH协议传输。例如,当执行文件复制任务时,控制节点将文件发送到被控制节点,或者从被控制节点获取文件。

总体上,数据从控制节点流向被控制节点,包括命令、任务、文件等。控制节点负责解析和发送数据,而被控制节点负责执行任务并返回执行结果。这种数据流向使得Ansible可以实现自动化管理和配置的目标主机。

2.Ansible的运行机制

Ansible的运行机制是基于控制节点和被控制节点之间的通信,控制节点是运行Ansible的主机,被控制节点是需要管理和配置的目标计算机,主机清单文件列出了所有被控制节点的连接信息,模块定义了要执行的任务,Playbook定义了整个自动化流程,Ansible通过SSH协议连接到被控制节点,并在每个节点上依次执行相应的任务。Ansible的运行机制简单高效,适用于大规模环境和复杂的自动化需求。


三 Ansible环境安装部署

控制节点192.168.27.30                                                ansible
被控制节点192.168.27.40
被控制节点192.168.27.50

1.控制节点安装ansible

(1)安装epel源、ansible

yum install -y epel-release
yum install -y ansible

(2)配置主机清单

cd /etc/ansible 

 vim hosts       

[webservers]        #配置组名
192.168.27.10       #组里包含的被控制的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)

[dbservers]
192.168.27.20

(3)配置密钥对验证

ssh-keygen -t rsa		#一路回车,使用免密登录
sshpass -p '123456' ssh-copy-id root@192.168.27.10
sshpass -p '123456' ssh-copy-id root@192.168.27.20 

2.Ansible目录结构

/etc/ansible/                    
├── ansible.cfg         
├── hosts              
└── roles/               

  • /etc/ansible/:默认的Ansible配置文件和相关文件存放目录。
  • ansible.cfg:Ansible的配置文件,用于配置一些全局参数,例如SSH连接参数、默认的远程用户等。这个文件一般无需手动修改,除非需要特别定制Ansible的行为。
  • hosts:Ansible的主机清单文件,用于存储需要管理的远程主机的相关信息,例如主机名、IP地址、SSH用户名和密码等。这个文件是必需的,因为Ansible需要知道要连接哪些主机,并在这些主机上执行任务。
  • roles/:Ansible的角色目录,用于存放可重用的Playbook代码和任务模板。一个角色可以包含多个任务和变量,可以被多个Playbook共享和复用。角色目录结构包括tasks、handlers、templates、files、vars、defaults、meta等子目录,用于组织和管理角色的不同部分。

3.Ansible 命令行模块

(1) command 模块

在远程主机执行命令,不支持管道,重定向等shell的特性。

ansible-doc -s command        #-s 列出指定模块的描述信息和操作动作

ansible webservers -m command -a 'date'	        #指定组执行 date       
ansible all -m command -a 'date'				#all 代表所有 hosts 主机
ansible all -a 'ls /'							#如省略 -m 模块,则默认运行 command 模块
ansible 192.168.27.40 -m command -a 'date'		#指定 ip 执行 date

命令格式:ansible <组名> -m <模块> -a <参数列表>

常用的参数:

  • chdir:在远程主机上运行命令前提前进入目录。
  • creates:判断指定文件是否存在,如果存在,不执行后面的操作。
  • removes:判断指定文件是否存在,如果存在,执行后面的操作。

 (2)shell模块

在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)。

ansible dbservers -m shell -a 'echo 123456| passwd --stdin work'

(3)cron 模块

在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。

ansible-doc -s cron				#按 q 退出

ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'name="test crontab" state=absent'			
#移除计划任务,假如该计划任务没有取名字,name=None即可

常用的参数:

  • minute/hour/day/month/weekday:分/时/日/月/周
  • job:任务计划要执行的命令
  • name:任务计划的名称

 (4)user模块

用户管理的模块

ansible-doc -s user

ansible dbservers -m user -a 'name="work01"'				#创建用户work01
ansible dbservers -m command -a 'tail /etc/passwd'
ansible dbservers -m user -a 'name="work01" state=absent'	#删除用户work01

常用的参数:

  • name:用户名,必选参数
  • state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
  • system=yes|no:是否为系统账号
  • uid:用户uid
  • group:用户基本组
  • shell:默认使用的shell
  • move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
  • password:用户的密码,建议使用加密后的字符串
  • comment:用户的注释信息
  • remove=yes|no:当state=absent时,是否删除用户的家目录

 (5)group模块

用户组管理的模块

ansible-doc -s group

ansible dbservers -m group -a 'name=mysql gid=306 system=yes'	#创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=work01 uid=306 system=yes group=mysql'	
#将work01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id work01'    

(6)copy模块

用于复制指定主机文件到远程主机的。

ansible-doc -s copy

常用的参数:

  • dest:指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容。
  • src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录。
  • mode:指出复制时,目标文件的权限 。
  • owner:指出复制时,目标文件的属主。
  • group:指出复制时,目标文件的属组。
  • content:指出复制到目标主机上的内容,不能与src一起使用。
  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值