ansible模块与playbook模块

本文详细介绍了Ansible的管理方式,包括adhoc临时命令和Playbook剧本。重点讲解了多个核心模块,如command、shell、file、copy、fetch、lineinfile和replace等,并提到了yum_repository模块用于配置YUM源。此外,还阐述了Playbook的编写,YAML语法特点,以及Ansible中的变量和facts的使用,强调了loop语句在实现循环功能中的作用和block关键词在定义任务块上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

ansible

ansible管理

adhoc临时命令

ansible模块

command模块

shell模块

script模块

file模块

copy模块

fetch模块

lineinfile模块

replace模块

问题:

Ansible哪个模块可以自动配置YUM源?

yum_repository

service模块

Playbook剧本

YAML

编写playbook

问题:

在YAML文件中使用什么符号支持跨行文本

在Ansible的Playbook剧本中使用什么关键词定义任务?

YAML文件中用什么代表数组,什么代表kv数据?

简单描述ansible_facts的作用?

ansible变量

facts变量

自定义变量

触发执行任务

问题:

Ansible使用什么语句实现循环功能?

Ansible使用什么关键词可以定义任务块?


ansible

  • 是一款自动化运维工具,基于python开发,批量管理服务器的工具

  • 首次发布于2012年,2015年被红帽公司收购

  • 使用Python语言编写的

  • 基于ssh进行管理,所以不需要在被管端安装任何软件

  • ansible在管理远程主机的时候,主要是通过各种模块进行操作的

ansible管理

  • ansible进行远程管理的两个方法:

    • adhoc临时命令。就是在命令行上执行管理命令。

    • playbook剧本。把管理任务用特定格式写到文件中。

  • 无论哪种方式,都是通过模块加参数进行管理。

adhoc临时命令

语法:

ansible 主机或组列表 -m 模块 -a "参数"    # -a是可选的

ansible模块

# 列出ansible的所有模块数量
[root@control ansible]# ansible-doc -l | wc -l
2834
# 列出ansible的所有模块
[root@control ansible]# ansible-doc -l 
# 查看与yum相关的模块
[root@control ansible]# ansible-doc -l | grep yum
# 查看yum模块的使用说明,主要查看下方的EXAMPLE示例
[root@control ansible]# ansible-doc yum

command模块

  • ansible默认模块,用于在远程主机上执行任意命令

  • command不支持shell特性,如管道、重定向。

# 在所有被管主机上创建目录/tmp/demo
[root@control ansible]# ansible all -a "mkdir /tmp/demo"
# 查看node1的ip地址
[root@control ansible]# ansible node1 -a "ip a s"
[root@control ansible]# ansible node1 -a "ip a s | head"   # 报错

shell模块

与command模块类似,但是支持shell特性,如管道、重定向。

# 查看node1的ip地址,只显示前10行
[root@control ansible]# ansible node1 -m shell -a "ip a s | head"

script模块

用于在远程主机上执行脚本

# 在控制端创建脚本即可
[root@control ansible]# vim test.sh
#!/bin/bash
yum install -y httpd
systemctl start httpd
# 在test组的主机上执行脚本
[root@control ansible]# ansible test -m script -a "test.sh"

file模块

  • 可以创建文件、目录、链接等,还可以修改权限、属性等

  • 常用的选项:

    • path:指定文件路径

    • owner:设置文件所有者

    • group:设置文件所属组

    • state:状态。touch表示创建文件,directory表示创建目录,link表示创建软链接,absent表示删除

    • mode:设置权限

    • src:source的简写,源

    • dest:destination的简写,目标

[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt state=touch"   # touch是指如果文件不存在,则创建
# 在test主机上创建/tmp/demo目录
[root@control ansible]# ansible test -m file -a "path=/tmp/demo state=directory"
# 将test主机上/tmp/file.txt的属主改为sshd,属组改为adm,权限改为0777
[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt owner=sshd group=adm mode='0777'"
[root@control ansible]# ansible test -a "ls -l /tmp/file.txt"
# 删除test主机上/tmp/file.txt
[root@control ansible]# ansible test -m file -a "path=/tmp/file.txt state=absent"    # absent英文缺席的、不存在的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值