ansible模块

news2025/1/6 20:19:40

目录

一、ansible的command模块

1.ad-hoc

2.playbook

3.command模块

二、ansible的shell模块

1.shell模块帮助

2.shell模块支持的参数和解释

3.简单试验

4.批量远程执行脚本

三、script模块

1.script模块帮助

2.shell模块支持的参数和解释

3.实践

四、ansible文件操作模块

1.copy模块

2.file模块

3.yum模块

4.system模块

5.cron模块

五、ansible剧本


一、ansible的command模块

ansible实现批量化主机管理的模式,主要有两种

  • 利用ansible的纯命令行实现的批量管理,ad-hoc模式 ----- 好比简单操作
  • 利用ansible的playbook剧本来实现批量管理,playbook剧本模式 ---- 好比复杂操作

1.ad-hoc

ansible的ad-hoc模式是ansible的命令行形式,也就是处理一些临时的,简单的任务,可以直接使用ansible的命令行来操作比如

  • 临时批量查看被管理机器的内存情况,cpu负载情况,网络情况
  • 比如临时的分发配置文件等等

2.playbook

ansible的playbook模式是针对比较具体,且比较大的任务,那么你就得实现写好剧本,应用场景

  • 一键部署rsync备份服务器
  • 键部署Inmp环境

3.command模块

作用:在远程节点上执行一个命令

  1. ansible-doc-s command 查看该模块支持的参数
  2. chdir:在执行命令之前,先通过cd进入该参数指定的目录
  3. creates:在创建一个文件之前,判断该文件是否存在,如果存在了则跳过前面的东西,如果不存在则执行前面的动作
  4. free_form:该参数可以输入任何的系统命令,实现远程执行和管理
  5. removes:定义一个文件是否存在,如果存在了则执行前面的动作,如果不存在则跳过动作
  6. command模块是ansible的默认基本模块,也可以省略不写,但是要注意如下的坑
  • 使用command模块,不得出现shel变量 name,也不得出现特殊符号>、;这些符号command模块都不认识,如果你想用前面指定的变量,特殊符号,请使用 shell模块,command模块不适用这种场景
ansible manage -m command -a 'date'

切换目录

ansible manage -m command -a 'pwd chdir=/tmp/'

判断目录是否存在

ansible manage -m command -a 'pwd chdir=/tmp/'

ansible manage -m command -a 'pwd removes=/files'

warn报警

这里有个warn警告,我们可以通过加warn=False消除这个警告

ansible manage -m command -a 'pwd creates=/tmp'


二、ansible的shell模块

1.shell模块帮助

作用:在远程机器上执行命令 (复杂的命令)

了解模块用法的渠道

  • linux命令行里面通过 ansible-doc

  • ansible官网查看帮助信息ansible.builtin.shell module – Execute shell commands on targets — Ansible Documentation

2.shell模块支持的参数和解释

  • chdir 在执行命令之前,通过cd进入该参数指定的目录
  • creates 定义一个文件是否存在,如果存在则不执行该命令,如果存在该文件,则执行shell命令
  • free_form 参数信息中可以输入任何的系统指令,实现远程管理
  • removes 定义一个文件是否存在,如果存在该文件,则执行命令,如果不存在,则跳过

3.简单试验

两台被管理机上添加两个后台程序

ping 192.168.0.103 > /dev/null &


ps -ef | grep ping | grep -v grep

ping 192.168.0.103 > /dev/null &


ps -ef | grep ping | grep -v grep

管理机

 ansible manage -m shell -a "ps -ef|grep ping|grep -v grep"

4.批量远程执行脚本

该需要执行的脚本,必须要求在客户端机器上存在,否则会报错文件不存在,这是shell模块的特点,是因为还有一个专门执行脚本的模块

步骤:

  • 创建文件
  • 创建shell脚本文件
  • 赋予脚本可执行权限
  • 执行脚本
  • 忽略warn信息

思路分析

最好所有的操作都是在 管理机器上,也就是(老板)这台机器 m01上进行远程的,批量化操作

ansible manage -m shell -a "mkdir -p /server/myscripts/; echo 'hostname'> /server/myscripts/hostname.sh; chmod +x /server/myscripts/hostname.sh; cd /server/myscripts/; bash hostname.sh; warn=False"

弊端就是需要shell脚本存在于被管理机器,才能执行


三、script模块

1.script模块帮助

功能:吧管理机器上的脚本远程的传输到备管理节点上去执行

比起shel模块,script模块功能更强大,在管理机器本地有一份脚,就可以在所有被管理节点上去运行

  • linux命令行里面通过 ansible-doc
  • ansible官网查看帮助信息ansible.builtin.script module – Runs a local script on a remote node after transferring it — Ansible Documentation

2.shell模块支持的参数和解释

  • chdir 在执行命令之前,通过cd进入该参数指定的目录
  • creates 定义一个文件是否存在,如果存在则不执行该命令,如果存在该文件,则执行shell命令
  • free_form 参数信息中可以输入任何的系统指令,实现远程管理
  • removes 定义一个文件是否存在,如果存在该文件,则执行命令,如果不存在,则跳过

3.实践

 cd /myshell/
echo -e "pwd\nhostname" > shell1.sh
cat shell1.sh 

chmod -x shell1.sh 
ansible manage -m script -a "/myshell/shell1.sh"


四、ansible文件操作模块

1.copy模块

作用:复制文件数据到远程主机

ansible-doc -s copy #查看copy模块的参数用法

参数解释如下

copy模块是远程推送数据的模块,只能把管理节点上的数据,推送给远程节点,无法拉取数据到本地

实际案例

吧管理节点上的文件数据,发给被管理节点

ansible manage -m command -a "useradd user"
ansible manage -m copy -a "src=/etc/hosts dest=/tmp/hosts owner=user group=user mode=0666"

内容添加

ansible manage -m copy -a "content='content hosts_ansible\n'  dest=/tmp/1.txt backup=yes"

2.file模块

作用,创建,修改文件,目录的属性

ansible-doc -s file #查看模块详细信息与用法

file模块常用的参数解释:

  • group 定义文件/目录的 属组
  • owner 定义属主
  • mode 定义权限
  • path 必选参数,定义文件路径
  • dest 创建出来的软连接 它的路径
  • src 定义源文件路径,主要用于创建link类型文件使用
  • state 参数:
  1. file: 如果目标文件不存在,那么不会创建该文件
  2. touch: 如果文件不存在,则创建一个新的文件,如果文件已经存在了,则修它的最后修改时间
  3. directory:如果目录不存在,那么会创建目录
  4. link: 用于创建软连接类型
  5. absent :删除目录,文件或者取消连接

创建目录

ansible manage -m file -a "dest=/tmp/dir1 "

ansible manage -m file -a "dest=/tmp/dir1 state=directory"

远程批量生成文件

 ansible manage -m file -a "dest=/tmp/dir1/1.txt mode=666 state=file"

这个会报错,因为文件不存在

ansible manage -m file -a "dest=/tmp/dir1/1.txt mode=666 state=touch owner=user group=user"

创建软链接

ansible manage -m file -a "src=/etc/hosts dest=/tmp/hosts_link state=link"

3.yum模块

在使用ansible的yum模块时,state选项有如下几种:

  • absent
  • installed
  • latest
  • present
  • removed

比较疑惑的是present 和installed,absent和removed的区别,其实他们含义是一样的,源码:

if state in ['installed','present']:
    if disable_gpg_check:
        yum_basecmd.append('--nogpgcheck")
    res = install(module, pkgs, repoq, yum_basecmd, conf_file, en_repos, dis_repos)

elif state in ['removed','absent']:
    res = remove(module, pkgs,repoq, yum_basecmd, conf_file, en_repos, dis_repos)

elif state == 'latest':
    if disable_gpg_check:
        yum_basecmd.append('--nogpgcheck')
    res = latest(module, pkgs, repoq, yum_basecmd, conf_file, en_repos, dis_repos)
else:
    # should be caught by AnsibleModule argument_spec
    module.fail_json(msg-"we should never get here unless this all
        "failed",changed=False, results='',errors='unexpected state')
return res

批量检查所有被管理节点是否安装了nginx服务

ansible manage -m shell -a "rpm -qa nginx warn=false"

通过yum模块批量安装

ansible manage -m yum -a "name=nginx state=installed"

批量卸载

ansible manage -m yum -a "name=nginx state=absend"

升级软件包

ansible manage -m yum -a "name=nginx state=latest"

升级系统所有软件包,排除某个服务不升级

ansible manage -m yum -a "name='*' state=latest exclude='nginx'"

4.system模块

ansible-doc -s service

ansible-doc -s systemd

费注意的是serivce对centos7有效

当你使用service命令管理服务,系统自动的重定向为eyetemct1服务管理命令

  • name 指定服务的名宇,比如nginx.serivce,如crond.serivce
  • state 填入你要执行的操作,reloaded,restarted,started,stopped
  • enabled 指定服务开机自启 systemctl enable nginx
  • danmon_reload 每当修改了配置文件,使用systemd重读配置文件

查看服务是否正常运行

ansible manage -m shell -a "systemctl status crond | grep Active"

检查crond服务是否开机自启了

ansible manage -m shell -a "systemctl list-unit-files | grep crond"

system模块管理服务

ansible manage -m systemd -a "name=crond state=stopped"
ansible manage -m systemd -a "name=crond state=restart"
ansible manage -m systemd -a "name=crond state=restarted"

启动nginx服务

ansible manage -m systemd -a "name=nginx state=started enabled=yes"

5.cron模块

cron模块主要是管理linux的定时任务条目

分         时         日         月         周 执行命令的绝对路径

*            *           *           *           *

定时crontab条目都是遵循了规则

每5分钟执行命令

*/5 * * * *  

每个月的3号,13号,早上8点整 重启nginx

0 8 3,13 * * /usr/bin/systemctl restart nginx

添加定时任务,每2分钟进行时间同步

ansible manage -m cron -a "name=ntp_cron job='/usr/sbin/ntpdate ntp.aliyuan.com > /dev/mull 2>&1' minute=*/2"

查看下

ansible manage -m shell -a "crontab -l"

再添加一个记录,事件是每个月的3号,13号,早上8点整 重启nginx

ansible manage -m cron -a "name=ntp_cron job='/usr/bin/systemctl restart nginx' minute=0 hour=8 day=3,13 "
ansible manage -m shell -a "crontab -l |grep nginx"


五、ansible剧本

1.概念

ansible核心的功能,作用就是进行配置管理

ansible需要编写的playbook剧本需要遵循一定的规则,格式,这个格式就称之为yaml语法

2.使用剧本批量安装nginx

先批量卸载nginx服务

ansible manage -m yum -a "name=nginx state=absent"

创建yaml剧本

 mkdir /myyaml
 cd /myyaml/
 vim nginx_install.yaml

  1 # install nginx yaml
  2 - hosts: all
  3   tasks: all
  4       - name: Install nginx service
  5         yum: name=nginx state=present
  6       - name: Copy Nginx.conf to every_server
  7         copy: src=./nginx.conf dest=/etc/nginx/conf/nginx.conf mode=0644
                                                                            

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

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

相关文章

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据 概述 上一节我们讲述了通过文本框向 ESP32 发送字符串、数字。有时,我们需要向 ESP32 发送连续的值,这种需求可以通过在网页端实现滑动条来实现。 需求及功能解析 本节演示如何在 ESP32 上部署一个…

P4 链表的节点数统计与链表数据查找替换

目录 前言 01 链表的节点数统计 02 链表数据查找替换 2.1 残疾的数据查找 2.2 数据查找优化 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C 》✨✨✨ 🔥 推荐专栏2: 《 Linux C应用编程(概念类)》✨…

这几款 idea 插件让效率起飞!

作者:苍何,前大厂高级 Java 工程师,阿里云专家博主,CSDN 2023 年 实力新星,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。 🔥热门文章推荐&#xf…

MySQL 教程 1.4

MySQL 连接 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。 实例 以下是从命令行中连接mysql服务器的简单实例: [roothost]# mysql -u root -p Enter password:****** 在登录成功后会出现 mysql> 命令提示窗…

jmeter资料

1.jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象…

大数据:Hadoop刷题

大数据:Hadoop刷题 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要…

EG20网口远程下载程序使用案例

EG20网口远程下载程序使用案例 前言:本文档主要说明了使用蓝蜂虚拟网络工具通过EG20网关的网口(LAN口)远程给PLC下载程序的步骤及其注意事项。使用蓝蜂虚拟网络工具,不仅支持程序的远程下载,同样支持程序的远程上传与…

流量内存cpu使用率使用工具

类似360工具球的工具 我提供了夸克下载喜欢的朋友可以直接下载使用 我用夸克网盘分享了「TrafficMonitor」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan…

与原有视频会议系统对接

要实现与原有视频会议系统对接,需要确保通信协议的一致性。连通宝视频会议系统可与第三方视频会议系统对接。实现与第三方会议系统对接还可以使用会议室连接器,可以确保不同系统之间的数据传输和交互。 具体对接流程可能因不同品牌和类型的视频会议系统而…

三、C语言常见概念

目录 1. C语言是什么? 3. 编译器的选择 3.1 编译和链接 3.2 编译器的对比 6. main函数 7. printf 和 库函数 8. 关键字介绍 8.1 什么是预编译? 8.2 static 的关键词作用? 8.3 const 的作用 8.4 voliate 的作用 8.5 typedef 的作用…

了解http协议

http的相关概念 互联网:是网络的网络,是所有类型网络的母集 因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上,大家把连接在因特网上的计算机都成为主机。 万维网:数据库 URL:万维…

疯狂英语李阳团队到中科国药•中科大有大健康产业上市企业孵化平台

11月21日,李阳导师团队一行莅临中科国药•中科大有大健康上市企业孵化平台深圳盐田孵化园区考察交流、合作洽谈。期间,李阳导师团队参观孵化园区企业及深圳盐田国际职业培训学院,了解国际职业培训学院的发展情况,对国际职业教育规…

YOLOv8-Seg改进:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-s…

HarmonyOS应用开发者基础认证考试(98分答案)

基于最近大家都在考这个应用开发者基础认证考试,因此出了一期,一样复制word里面搜索做,很快,当然good luck 判断题 Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(Tr…

Jetpack Compose——Text的基本使用

效果图为: // 第一行 Text(text "hello world", fontSize 30.sp)//设置字体大小// 第二行 Text(text stringResource(id R.string.hello_world),//设置为资源中的文字color colorResource(id R.color.purple_500)//设置字体颜色)// 第三行 Text(tex…

学习感悟一己之言

学习感悟一己之言 学习上克服困难实际上是克服心理上或认识上的障碍的过程。所谓的理解,就是化陌生为熟悉。看不懂,一方面是因为接触的材料太陌生,即远离你当前的背景知识;另一方面是材料或讲述者的描述刻画不准确或晦涩不当。有了…

实现优雅的自增枚举类:Python中的枚举与自增技巧

更多资料获取 📚 个人网站:ipengtao.com 枚举类型在编程中扮演着重要的角色,它们为变量赋予了更加清晰的含义。然而,在Python中,实现自增的枚举类并非直接而简单的任务。本文将深入讨论如何通过不同的方式优雅地实现自…

羊大师分析,鲜羊奶对健康的影响与作用

羊大师分析,鲜羊奶对健康的影响与作用 你是否曾经听到过“羊奶比牛奶更健康”的说法?而鲜羊奶作为最纯正的羊奶形式,其营养价值更是不可小觑。除了拥有传统奶类所包含的营养成分外,鲜羊奶还含有更多人体必需的氨基酸和微量元素&a…

Python应用:利用matplotlib画学生成绩分布饼图

1. 题目 给定一组学生成绩:[85, 92, 78, 65, 95, 88, 72, 60, 98, 45, 100, 46, 23, 88, 67, 89, 67, 88, 99],现在评分等级为优(90-100)、良(70-89)、及格(60-69)、不及格&#xff…

js数组方法大全(开发必会)

前言 js中数组的方法还是有很多的,而且js中数组操作方法我说是一个前端开发必须熟练使用和掌握的我想没有人反对吧。 说真的,数组这些api本身还是需要死记硬背的,就像乘法口诀表,很多东西你需要很熟练的就能写出来。就像让你去找数组里面符合条件的元素,你总可能定义一个空数…