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_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.mfbz.cn/a/209373.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【pytorch】从yolo的make_grid理解torch.meshgrid、torch.stack

文章目录 简述1、torch.meshgrid 创建行列坐标2、torch.stack 结合行列坐标3、通过view函数扩展维度 简述 yolo检测 make_grid创建网格代码如下,那么什么是torch.meshgrid? def _make_grid(nx20, ny20):yv, xv torch.meshgrid([torch.arange(ny), torch.arange(…

C++基础 -28- 友元

友元用于访问类中的所有数据成员 类中的私有成员,类外不可访问 定义友元的格式(友元函数必须要在类内,声明) friend void show(person &b); 使用友元访问类的所有成员 #include "iostream"using namespace std…

深入Spring Security魔幻山谷-获取认证机制核心原理讲解(新版)

文/朱季谦 这是一个古老的传说。 在神秘的Web系统世界里,有一座名为Spring Security的山谷,它高耸入云,蔓延千里,鸟飞不过,兽攀不了。这座山谷只有一条逼仄的道路可通。然而,若要通过这条道路前往另一头的…

html实现各种好看的鼠标滑过图片特效模板

文章目录 1.鼠标悬浮效果1.1 渐动效果1.2 渐变效果1.3 边框效果1.4 线行效果1.5 图标效果1.6 块状效果1.7 边线效果1.8 放大效果1.9 渐出效果1.10 痕迹效果1.11 交叉效果1.12 着重效果1.13 详展效果1.14 能动效果1.15 明细效果 2.主要源码2.1 源代码 源码下载 作者:…

基于python的FMCW雷达工作原理仿真

这篇文章将介绍如何使用python来实现FMCW工作原理的仿真,第1章内容将介绍距离检测原理,第2章内容会介绍速度检测原理。 第1章 第1部分: 距离检测原理 调制的连续波雷达通常也被叫做调频连续波(FMCW)雷达是一个使用频率调制来测量…

鸿蒙(HarmonyOS)应用开发——容器组件(Grid组件)

前言 前面一篇文章中,已经说了List组件。那么接下来就是容器组件中的Grid组件 #mermaid-svg-oz1b7w45ASmMlZFa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oz1b7w45ASmMlZFa .error-icon{fill:#5522…

Docker-compose的在线与离线安装方式及问题解决

文章目录 一、在线方式1、GitHub2、daocloud.io 二、离线方式(推荐)三、验证 一、在线方式 1、GitHub curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/d…

springboot缓存技术-Ehcache-Redis-memcached

springboot缓存技术-Ehcache-Redis-memcached 文章目录 springboot缓存技术-Ehcache-Redis-memcachedspring缓存使用方式手机验证码案例缓存供应商变更Ehcache变更缓存供应商Redis缓存供应商变更memcached下载安装memcachedSpringBoot整合memcached spring缓存使用方式 导缓存…

linux后端基础---笔记整理(tmux、vim、shell、ssh/scp、git、thrift、docker)

目录 1.Linux常用文件管理命令 2.tmux终端复用器/vim命令式文本编辑器 3.Shell语法 3.1 Shell—版本3.2 新建一个test.sh文件3.3 Shell文件—运行方式3.4 Shell—注释3.5 Shell—变量3.6 Shell—默认变量,文件参数, “$”的用法3.7 Shell—数组3.8 shell—expr命令…

java餐饮刀削面快餐店点餐服务系统springboot+jsp

网上点餐省去了客户很多不必要的时间和麻烦,给商家带来更多利益。同时,网上点餐可以辅助餐饮企业营销。传统的点餐是需要配备一个专业的服务员负责菜品介绍并记录顾客点单,确认后上交至后台厨房,厨房根据菜品种类安排做菜顺序最终…

数据结构:带头双向循环链表的实现

引言 单链表存在缺陷:需要从头开始找前一个节点 解决方法:双向链表 链表的结构(8种): 1. 单向,双向 2. 带头、不带头 带头即为带哨兵位的头节点,第一个节点不存储有效数据。带头节点&#…

垃圾回收与内存泄漏

前端面试大全JavaScript垃圾回收与内存泄漏 🌟经典真题 🌟什么是内存泄露 🌟JavaScript 中的垃圾回收 🌟标记清除 🌟引用计数 🌟真题解答 🌟总结 🌟经典真题 请介绍一下 Jav…

混合使用Windows和Linux子系统的工具和命令

文章目录 在Windows中运行Linux命令使用PowerShell混合使用Linux和Windows命令通过power shell在Windows混合使用Linux工具在Linux中混合使用Windows 工具 推荐阅读 Windows和Linux的工具和命令可以通过WSL互换使用。 可以在Linux子系统中运行Windows命令,也可以在W…

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1)Redis 主从复制模式介绍1.2)Redis 主从复制实现、 第二章、哨兵机制2.1)容灾处理之哨兵2.2)Sentinel 配置 第一章、主从复制模式 1.1)Redis 主从复制模式介绍 ①单点故障:数…

【C++】string类模拟实现过程中值得注意的点

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.有关const的使用 &#x…

常用sql记录

备份一张表 PostgreSQL CREATE TABLE new_table AS SELECT * FROM old_table;-- 下面这个比上面好,这个复制表结构时,会把默认值、约束、注释都复制 CREATE TABLE new_table (LIKE old_table INCLUDING ALL) WITHOUT OIDS; INSERT INTO new_table SELE…

一进三出宿舍限电模块的改造升级

一进三出宿舍限电模块改造升级石家庄光大远通电气有限公司智能模块功能特点: 电能控制功能:可实施剩余电量管理,电量用完时将自动断电; 剩余电量可视报警提示功能:剩余电量可视,并当电量剩余5度时&#xff…

图解java.util.concurrent并发包源码系列——深入理解定时任务线程池ScheduledThreadPoolExecutor

深入理解定时任务线程池ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor作用与用法ScheduledThreadPoolExecutor内部执行流程DelayedWorkQueueScheduledFutureTask源码分析任务提交ScheduledFutureTask的属性和方法delayedExecute(t) 任务执行ScheduledFutureTask.su…

Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊

文章目录 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊使用 RenderEffect 模糊使用 Vukan 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊 本文首发地址 https://blog.csdn.net/CSqingchen/articl…

行内元素和块级元素分别有哪些?有何区别?怎样转换?

行内元素和块级元素分别有哪些? 常见的块级元素: p、div、form、ul、li、ol、table、h1、h2、h3、h4、h5、h6、dl、dt、dd 常见的行级元素: span、a、img、button、input、select 有何区别? 块级元素: 总是在新行上…
最新文章