ansible模块

目录

一、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_specmodule.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 serviceansible-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 /myyamlcd /myyaml/vim nginx_install.yaml

  1 # install nginx yaml2 - hosts: all3   tasks: all4       - name: Install nginx service5         yum: name=nginx state=present6       - name: Copy Nginx.conf to every_server7         copy: src=./nginx.conf dest=/etc/nginx/conf/nginx.conf mode=0644

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

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

相关文章

Spring AOP 代码案例

目录 AOP组成 通知的具体方法类型 引入Spring AOP依赖 定义AOP层 UserController Postman测试 AOP工作流程 AOP组成 切面 : 切⾯(Aspect)由切点(Pointcut)和通知(Advice)组成,它既包含了…

搭建nfs文件目录共享

搭建nfs文件目录共享 一、简介 NFS,英文全称是Network File System,中文全称是网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源,在NFS应用中,本地NFS的客…

如何选择 Facebook 代理?

Facebook上从事业务推广、广告或资料推广以及群组的用户需要高质量且可靠的代理。使用代理,用户可以在账号被封锁的情况下访问自己的资料,同时与多人进行即时通信,并能够: 自动发送邀请参加各种活动; 通过特殊的机器人…

2022年高校大数据挑战赛A题工业机械设备故障预测求解全过程论文及程序

2022年高校大数据挑战赛 A题 工业机械设备故障预测 原题再现: 制造业是国民经济的主体,近十年来,嫦娥探月、祝融探火、北斗组网,一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业的核心,机械设备在…

经典神经网络——VGGNet模型论文详解及代码复现

论文地址:1409.1556.pdf。 (arxiv.org);1409.1556.pdf (arxiv.org) 项目地址:Kaggle Code 一、背景 ImageNet Large Scale Visual Recognition Challenge 是李飞飞等人于2010年创办的图像识别挑战赛,自2010起连续举办8年&#xf…

C/C++ 内存管理(1)

文章目录 C/C 内存划分静态和动态内存C语言的动态内存分配函数mallocfreecallocrealloc 常见内存使用错误 C/C 内存划分 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结 束时这些存储…

【数据结构】初识排序 直接插入排序

初识排序 & 直接插入排序 🐟排序在现实中的应用🐟排序的概念🐟常见的排序算法🐟直接插入排序💦举例--直接插入排序在现实种的应用💦单趟直接插入排序讲解💦直接插入排序算法 🐟排…

应用于智慧零售的AI边缘计算盒子+AI算法软硬一体化方案

中国是世界上最大的消费市场,零售行业拥有极大的发展潜力,阿里、腾讯两大互联网巨头正在加紧、加大布局; 信迈智慧零售方案可涵盖快消行业、服饰行业、餐饮行业、酒店行业、美家行业、消费电子行业、新零售商行业、服饰连锁、大卖场/商超、百…

fastmock如何判断头信息headers中的属性值

fastmock可以快速提供后端接口的ajax服务。 那么,如何判断头信息headers中的属性值呢? 可以通过function中的参数_req可以获得headers中的属性值,比如 User-Agent,由于User-Agent属性带有特殊符号,因此使用[]方式而不…

生成式 AI 与数据融合:亚马逊云科技的前沿探索与应用

目录 前言1 生成式AI和数据2 亚马逊云科技的AI创新2.1 数据与生成式 AI 的协同创新2.2 多模态融合与创新驱动2.3 构建创新平台与工作智能助手2.4 数据整合与安全保障 3 生成式AI结合企业数据的典型技术Amazon Q4 展望未来 授权声明:本篇文章授权活动官方亚马逊云科技…

经典神经网络——ResNet模型论文详解及代码复现

论文地址:Deep Residual Learning for Image Recognition (thecvf.com) PyTorch官方代码实现:vision/torchvision/models/resnet.py at main pytorch/vision (github.com) B站讲解: 【精读AI论文】ResNet深度残差网络_哔哩哔哩_bilibili …

NXP iMX8M Plus Qt5 双屏显示

By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 Verdin iMX8M Plu…

C++的explicit和隐式转换

隐式转换是指在某些情况下,编译器会自动进行类型转换,将一种类型的值转换为另一种类型,以满足表达式的要求。这种转换是隐式进行的,不需要显式地调用转换函数或构造函数。 int a 5; double b a; // int 到 double 的隐式转换上…

支持Upsert、Kafka Connector、集成Airbyte,Milvus助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte! 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?》,我们已经透露过 Milvus(Zilliz Cloud)为提高数据流处理效率, 先后支持了 Up…

【Redis】Redis高并发高可用(主从复制、哨兵机制)

Redis高并发高可用 复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制…

java类库的废弃API

java语言一直在进化,java类库也越来越庞大,给人的感觉是一直在做加法。 有没有做减法呢?当然也有,一些是设计失误需要撤回的,如可能引起线程安全问题的Thread.stop()等方法;还有是随着时代发展而被淘汰的&…

cocos 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer。(跟随摄像机滚动)(神坑官网也不说明一下)

参考文章:Cocos 3.x 层级Layer - 简书 2D镜头跟随应该怎么实现呢 - Creator 3.x - Cocos中文社区 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer? 场景:在制作摄像机跟随角色移动功能时,新增…

1.qml-3D入门讲解介绍

本章我们来学习QML 3D教程,QML 3D能够支持windows linux等多平台跨平台并且显示效果大部分一致,非常方便,学习的qt版本最低为qt6.5。 要使用qml 3D类,需要导入QtQuick3D模块。 这是使用空间渲染器和场景图的 QML 前端。目前&…

SQL Server 2016(分离和附加数据库)

1、实验环境。 基于上一个实验《SQL Server(创建数据库)》 2、需求描述。 class数据库的数据文件和事务日志文件都位于C:\db_class目录下。现在需要把class数据库的数据文件和事务日志文件分开存放,数据文件class.mdf存放于原位置&#xff0…

网传滴滴系统崩了,是因为k8s版本升级错误?

11月27日晚间,滴滴因系统故障导致App服务异常登上热搜,不仅无法显示定位、无法打车,有司机的后台还显示收入超690亿。28日和29日,滴滴两次发文致歉,称初步确定事故起因是底层系统软件发生故障。 相较于一些网友戏谑的…