ansible 模块

news/2025/10/28 10:58:37/文章来源:https://www.cnblogs.com/luokeli0755/p/19171213

ansible 模块

Ansible playbook 常用模块

service /systemd 模块 服务器状态

# service  centos6
- name: restart XXXservice:name: iptables state: started/stoped/restarted/reloadedenabled:nowhen: ansible_os_family == 'RedHat'# systemd centos7 
- name: stop CentOS Firewallsystemd:name: firewalldstate: stoppedenabled: nowhen: ansible_os_family == 'RedHat'- name: stop Ubuntu Firewallsystemd:name: ufwstate: stoppedenabled: nowhen: ansible_os_family == 'Debian'- name: disable SELinux #临时关闭selinuxselinux:state: disabled

lineinfile 模块 行文件 行替换

path: 指定要操作的文件对象
regexp: 匹配条件
line:  想要替换成的行
insertbefore: 在某行之前插入
insertafter: 在某行之后插入
state: present 插入absent  删除- name: Disable SELinux #永久关闭selinuxlineinfile:dest: /etc/selinux/configregexp: '^SELINUX='line: 'SELINUX=disabled'state: present

replace 模块 替换字符串 类似 sed命令

path: 指定要操作的文件对象
regexp: 正则表达式
replace: 要替换成的字符串
backup: 修改前是否备份原文件#实例
- name: Set_selinux_disabled_centos7
- name: Disable SELinux disabled centos7replace:path: /etc/selinux/configregexp: 'SELINUX=(enforcing|permissive)'replace: 'SELINUX=disabled'backup: yes

copy 模块

src    管理主机文件默认是从files里拷贝
dest   远程节点文件路径
owner  属主
group  属组
mode   拷贝到远程主机文件的权限 =0755
remote_src=yes 表示将远程主机上的数据进行移动操作
remote_src=no 表示将管理主机上的数据进行分发操作
content 当不使用src指定拷贝的文件时,可以使用content直接指定文件内容
force  已经存在同名文件 强制覆盖 force=yes or force=no
backup 已经存在同名文件 强制备份 backup=yes or backup=no

when 模块 判断

1 简单条件判断
- name: 判断其系统是否是centos7debug:msg: "is OS CentOS"when:- ansible_distribution == "CentOS"- ansible_distribution_major_version == "7"2 条件判断
==  :相等为真
!=  :不等为真
>   :大于为真
<   :小于为真
>=  :大于等于等为真
<=  :小于等于等为真为真
and :逻辑与
or  :逻辑或
not  :取反# 实例: 根据shell执行的返回成功失败执行下面的语句
- name: task1shell: "ls test/s"register: returnmsg #执行了命令后的结果返回给一个变量,这个变量的值在playbook的task之间相互传递变量ignore_errors: true  #忽略错误- name: task2debug: msg="run ok"when: returnmsg.rc == 0
- name: task3debug: msg="run no"when: returnmsg.rc != 03 条件判断与 tests(exist)
4 判断变量的一些测试(defined,undefined,none)
5 判断执行结果的一些测试(成功,失败,更改,跳过)
6 判断路径的一些测试(file,directory,link,mount,exists)
7 判断字符串的一些测试(lower,upper)
8 判断整除的一些测试(偶数,奇数,整除)
9 版本 比较判断版本号
10 其他一些判断的测试 (subset,superset,string,number)
11 block模块 结合
12 fai模块 结合
13 failed_when
14 changed_when

package yum apt dnf pip 包管理模块

package:使用操作系统本机的自动检测软件包管理器管理软件包
yum:使用yum管理软件包
apt:使用APT管理软件包
dnf:使用dnf管理软件包
pip:从PyPI管理Python软件包name:要安装的软件包名,多个软件包以英文逗号隔开 state 对当前指定的软件安装、移除操作 支持的参数有:
present:安装,但不升级
inistalled:确认安装
latest:安装且升级为最新
absent和removed:移除# 通过操作系统的自动监测软件包管理器管理软件(就是ubuntu 自动用apt centos7自动用yum rocky9 用 dnf)
- name: Install Update Remove pkgpackage:name: package_namestate: present/latest/absent/removed# apt ubuntu系列 更新缓存
- name: apt updateapt:update_cache: yes# yum/dnf centos系列 清除缓存并更新
- name: Clean all Yum cache and Makecacheyum/dnf:name: '*'state: latestclean_all: yesupdate_cache: yes

file 模块

path   要操作的文件或目录
owner  属主
group  属组
mode   权限 =0755
state  state=touchtouch     创建空文件directory 创建空目录absent    递归删除file      查看指定目录信息是否存在hard      硬链接link      软连接
recurse =yes递归### 模块实例
# 1 修改目录/data属性,属主root,属组root
file: path=/data owner=root group=root
# 2 创建/data2目录,并设置父目录、子目录属主属组都为root 权限为755
file: path=/data owner=root group=root mode=755 state=directory recurse=yes
# 3 创建文件aa.txt
file: name=/data/aa.txt state=touch
# 4 创建 软 链接文件
file: src=/data path=/tmp/data state=link

unarchive 解压模块

模式:copy=yes 将ansible主机上的 压缩包解压到指定目录  remote_src=nocopy=no  将(被控主机)上的 压缩包解压到指定目录  remote_src=yes
src  tar.gz包的原路径
dest 指定解压的绝对路径
exec 解压时需要排除的目录和文件
owner  属主
group  属组
mode   权限 =0755src=jdk-8u351-linux-x64.tar.gz dest=/usr/local/ copy=yes owner=root group=root

cron 模块 计划任务

name	计划任务名称
job	    指定计划的任务中需要实际执行的命令或者脚本
user	指定用户,默认是root用户
state	指定状态,prsent=添加(默认),absent=删除
backup	备份minute	分钟,取值范围(0-59,*, */2)
hour	小时,取值范围(0-23,,/2)
day	    天,取值范围(1-31,,/2)
mouth	月,取值范围(1-12,,/2)
weekday	周,取值范围(0-6 for Sunday-Saturday, *)#实例:
name='ntpdate' minute=0 hour=4 job='/usr/bin/docker restart kcacp_gpu_0' user='root' state='prsent'

register 注册变量 引用变量

# 查看全部端口 并把输出定义到host_port变量名里
- name: "get host port info"shell: netstat -lntpregister: host_port
# 打印输出端口
- name: "print host port"debug:msg: "{{host_port['stdout_lines']}}"# 查看时间 并把输出定义到date_output变量名里
- name: echo date command: date register: date_output 
# 使用 when 对关键字对分析后的进行判断 匹配测执行这个task()- name: echo date_output command: echo "30"when: date_output.stdout.split(' ')[2] == "30"
# 因为 register 获取到的输出内容都是字符串,可以使用 python 字符串的方法对其做处理
# 比如本文中使用的 split,还可以使用 find 方法

uri 模块

uriurl
until 直到后面的条件满足为真
retries 重试时长
delay   重试间隔时长- name: check service is healthuri:url: "http://127.0.0.1:{{ APP_PORT}}/healthz"register: resultuntil: result.status == 200retries: 20		#(最长等待20*5=100s)delay: 5

authorized_key 分发公钥到远程主机

name  用户
key   公钥文件
state 状态present 添加keyabsent   移除key
exclusive  是否移除authorized_keys文件中其它非指定key(默认no)# 使用authorized_key 模块免密登录(没验证过)
- name: push ssh pub keyauthorized_key:name: "root"key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}'"state: present

debug 模块 调试模块,用于在调试中输出信息

msg  输出的消息
var  指定变量(任务执行的输出作为变量)直接将其打印输出
verbosity  debug的级别 默认0# 为每个主机打印回送地址和网关地址的示例
- debug:msg: "System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}"- debug:msg: "System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gateway }}"when: ansible_default_ipv4.gateway is defined# 运行uptime状态信息,并显示信息
- shell: /usr/bin/uptimeregister: result- debug:var: resultverbosity: 2
# 输入hostname
- name: Display all variables/facts known for a hostdebug:var: hostvars[inventory_hostname]verbosity: 4

command、shell、raw 和 script 这四个模块的作用和用法都类似都用于远程执行命令或脚本

# 区别
command  执行简单的远程 shell 命令,不支持特殊符号< > | ; &
shell    执行简单的远程 shell 命令,支持解析特殊 shell 符号< > | ; &
raw      执行底层 shell 命令, 在没有python的远程主机上执行命令
script   在远程主机上执行管理主机上的脚本,不要求目标主机上已经装好python
#### 如果要安全且可预测地执行命令,最好改用 command 或 shell 模块 ###
# 实例 command 
- name: command uptimecommand:uptimeargs:chdir: /root
# 实例 shell 带特殊符号 进入目录 指定解析器
- name: shell uptimeshell:uptime > /root/test.txtargs:chdir: /rootexecutable: /bin/bash
# 实例 raw 
- name: raw uptimewar:uptimeargs:executable: /bin/bash
# 实例 script 在远程主机上执行管理机器上的脚本
- name: raw uptimescript:"/bin/bash files/test.sh"args:executable: /bin/bash

expect 用于在给的的节点上执行一个命令并响应提示 (python 要安装pexpect模块才能执行)

command	   命令模块执行命令运行
responses  期望的字符串/正则表达式和字符串的映射来响应。 如果响应是一个列表,则连续的匹配将返回连续的响应# 修改密码: 匹配不区分大小写的搜索用前缀?i (?!)password": 输入"kc@123456"
- name: change kcadmin passwordansible.builtin.expect:command: passwd kcadminresponses:(?i)password: "kc@123456"
# 多次交互
vim sc.sh
read -p "111: " name1
read -p "222: " name2
read -p "pass: " name3
echo $name1 $name2 $name3- name: Test Scriptexpect:command: sc.shresponses:enter one: 'one'enter two: 'two'enter three: 'three'enter password: 'pass'echo: yes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年10月烤火炉推荐:知名榜单全维度选择方案

霜降一过,长江中下游的湿冷开始往屋里钻,北方尚未供暖的“空窗期”也让客厅秒变冰窖。租住房东不让改燃气、有娃家庭怕明火、老人关节受不了空调直吹,这些真实场景把“烤火炉”推上热搜。奥维云网2024取暖季数据显示…

2025年10月烤火炉推荐:主流品牌口碑排行榜与避坑指南

一到十月,北方集中供暖尚未启动,南方湿冷已悄然来袭,不少家庭、租房族、银发人群开始把“烤火炉”加入紧急采购清单。调研机构奥维云网显示,2024年取暖季线上销量同比增27%,其中石墨烯速热品类占比首次突破35%,成…

【金融行业案例】基于Vaadin全栈Java框架重构内部系统,全面提升开发效率与用户体验

BCI银行通过采用Vaadin实现了从传统系统向现代化内部工具的全面转型,显著提升了开发速度与用户体验,也为全球金融行业的系统升级提供了参考范例。导读: 在数字化转型的浪潮中,非洲领先金融机构 BCI银行(Banco Com…

2025年10月烤火炉推荐:对比排行榜助你轻松选

一到深秋,南方湿冷与北方干冷同步上线,很多人下班回家的第一件事就是打开烤火炉。可市面上产品从百元小太阳到近三千元仿真壁炉,功率、发热体、安全保护、能耗、噪音、颜值差异巨大,用户最怕“买前心动、买后闲置”…

Web前端入门第 89 问:总结 8 种跨域通信处理方案

为什么会跨域?跨域是谁附加的限制?为什么 APP 不会有跨域问题? 首先跨域问题是由于浏览器的同源策略(Same-Origin Policy)导致的,基本上所有浏览器都有限制,默认情况是不允许跨域访问的!! APP 的请求不受浏览…

2025年10月中国办公家具定制公司推荐:评价排行榜与选购指南

正在升级办公环境的企业行政、采购或创业者,常面临“预算有限却想要品牌感”“工期紧张又怕环保不达标”“展厅看得眼花缭乱却找不到落地案例”的三重焦虑。2025年第三季度全国规模以上服务业景气指数显示,办公空间升…

如何理解Java中的并发?

Java 中的并发(Concurrency) 指多个任务在同一时间段内交替执行(宏观上同时进行,微观上可能是 CPU 快速切换调度),目的是提高程序效率,充分利用系统资源(如 CPU、内存、I/O 等)。 一、为什么需要并发?资源利…

ElasticSearch基本指令

ElasticSearch基本指令https://www.elastic.co/cn/ 在postman中,向ES服务器发put请求(增加索引): http://127.0.0.1:9200/shopping 在postman中,向ES服务器发get请求(查询索引): http://127.0.0.1:9200/shopping 在…

2025年无糖无汽苏打水厂家权威推荐榜单:无汽苏打水/pH值高的苏打水/白桃苏打水源头厂家精选

随着健康饮食理念的普及,无糖无汽苏打水市场正以每年超过20%的速度增长,成为饮料行业中备受关注的细分品类。 根据中国饮料工业协会最新数据显示,2024年无糖无汽苏打水市场规模已达85亿元,预计2025年将突破百亿大关…

BOS中设置实际精度为6位小数,前端显示1位小数

注意:配置掩码仅对H5端生效,需要配置“显示格式化字符串”,客户端才有显示1位小数效果。

ctfshow—web ssti 361-372

ctfshow_web-ssti (361~372) web 361 首先,题目提示,名字就是考点,所以应该是需要我们传一个name的参数 然后就是检查是什么模板 然后找到可以注入的模块,这里我找到的是os._wrap_close在132,找模块的数字我们可…

2025年克拉玛依旅游团综合实力TOP3排行榜:阿勒泰旅游/新疆喀纳斯旅游/新疆旅游服务商精选。

据新疆文旅厅数据统计,2024年新疆接待游客总量突破2.5亿人次,同比增长超过30%,其中定制化旅游服务需求增幅显著提升。 本文将根据企业资质、服务质量、资源整合能力及客户满意度等多维度数据,从多家旅行社中筛选出…

2025年塑料合金板材厂家权威推荐榜单:ABS吸塑板/真空吸塑板/ABS吸塑板源头厂家精选

在当今工业制造领域,塑料合金板材凭借其优异的综合性能,已成为汽车、电子、家电等行业的关键材料。根据最新行业研究报告显示,全球高性能塑料板材市场呈现持续增长态势,年复合增长率预计将保持在4.7%-8.9% 。在这一…

2025 年最新推荐西安路灯厂家排行榜:市政 / LED / 智慧 / 太阳能 / 农村路灯企业权威测评指南

引言 随着智慧城市建设与乡村振兴战略的深入推进,路灯行业对产品节能性、智能化与场景适配性的要求显著提升。为帮助采购方精准筛选优质厂商,中国照明电器协会联合西北市政工程设计研究院,对西安及周边区域路灯企业…

php rce的一些绕过

1.通配符?*绕过** 通配符是一种特殊语句,主要有问号(?)和星号(*),用来模糊搜索文件。?:在linux里面可以进行代替字母。?仅代表单个字符串,但此单字必须存在。 *:在linux里面可以进行模糊匹配。*可以代表任何字符…

2025 年污水离心泵,耐腐蚀离心泵,杂质离心泵,卧式离心泵厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读

引言 在工业流体输送领域,污水离心泵、耐腐蚀离心泵、杂质离心泵、卧式离心泵作为关键设备,其性能直接关系到生产效率与环保达标。为精准筛选优质厂家,本次推荐榜单由通用机械工业协会泵业分会指导测评,结合 12 项…

2025 年中压离心泵,高压离心泵,清水离心泵,立式离心泵厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读

引言 在工业流体输送领域,中压离心泵、高压离心泵、清水离心泵及立式离心泵作为关键设备,其性能与可靠性直接关系到生产效率与安全。为精准筛选优质厂家,2025 年度测评工作由通用机械工业协会泵业分会主导,联合多家…

ansible palybook

ansible palybookAnsible # ansible 简介 Ansible是一种常用的自动运维化工具,基于python开发,分布式,无需客户端,轻量级,配置语言采用YAML # Ansible 特点1.模块化:调用特定的模块,完成特殊的任务2.Paramiko(p…

2025信创浪潮下,ITSM 平台选型指南:国产方案如何选对 “运维服务引擎”

2025年信创关键期,国产ITSM从合规适配升级为价值赋能。文章对比主流ITSM产品的核心定位、能力及适用场景,从企业规模、核心需求、长期成本给出选型建议,助力企业选适配的ITSM平台。01. 国产化 ITSM 进入 “价值竞争…

MonoDevelop 的续集dotdevelop

https://www.cnblogs.com/shanyou/p/18415351DotDevelop 是一个跨平台的 .NET 集成开发环境(IDE),它原本是 MonoDevelop 的分支项目,这个项目更侧重于 Linux 支持和 GTK3 升级,github:https://github.com/dotdev…