ansible常用模块介绍

ansible运行模块的两种方式

Ad - Hoc
利用 ansible 命令直接完成管理 主要用于临时命令使用场景
ansible westos -m shell -a 'ls /mnt'
playbook
ansible 脚本 主要用于大型项目场景 需要前期的规划
vim test.yml 
        - hosts: all
          tasks:
          - shell: ls /mnt

 ansible-playbook test.yml

如何查看模块帮助

ansible - doc [ 参数 ] [ 模块 ...]
# 常用参数
- l ## 列出可用模块
- s ## 显示指定模块的 playbook 片段

 ansible-doc  -l

 ansible-doc shell 

 ansible-doc shell -s

ansible命令的常用执行参数

格式
ansible 清单 - m 模块 - a 模块参数
# 常用参数
--version 显示版本
-m module指定模块默认为command模块
-v
详细过程
- vv - vvv 更详细过程
--list显示主机列表也可以用--list-hosts
-k提示输入ssh连接密码默认key认证
-C预执行检测
-T执行命令的超时时间默认10s
- u
指定远程执行的用户
- b
执行 sudo 切换身份操作
-become-user=USERNAME指定sudo的用户
- K
提示输入 sudo 密码

ansible all -m ping

ansible all -m ping -v

ansible westos -m shell -a 'whoami' -u westos -k -b --become-user=westos

以上配置参数都可以再配置文件。ansible.cfg中输入

command模块的使用方法

功能 : 在远程主机执行命令 此模块为默认模块
# 常用参数
chdir执行命令前先进入到指定目录
cmd运行命令指定
creates如果文件存在将不运行
removes 如果文件存在在将运行
free_form 在远程主机中执行的命令此参数不需要加

ansible all -m command -a 'chdir=/mnt pwd'

ansible all -m command -a 'chdir=/mnt pwd creates=/mnt' 

Linux中的很多通配符在command模块中不支持 

shell模块的使用方法

command 功能类似
# 常用参数
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在在将运行
free_form 在远程主机中执行的命令此参数不需要加
executable 指定执行环境默认为sh

ansible all -m shell -a " ps ax | grep $$ " -k

ansible all -m shell -a "executable=sh ps ax | grep $$ " -k

ansible all -m shell -a "executable=bash ps ax | grep $$ " -k

scrip模块使用方法

功能 :
ansible 主机中写好的脚本在受控主机中执行
vim ~/.ansible / westos.sh
        !/ bin / bash
        echo $HOSTNAME
ansible all -m script -a "~/.ansible/westos.sh"

copy模块的使用

功能
ansible 主机复制文件到受控主机
# 常用参数
src 源文件
dest 目的地文件
owner 指定目的地文件所有人
group指定目的地文件所有组
mode 指定目的地文件权限
backup=yes 当受控主机中存在文件时备份原文件
content 指定文本内容直接在受控主机中生成文件
ansible all -m copy -a "src=westos.sh dest=/mnt/westos.sh owner=xxx mode=707 backup=yes"
ansible all -m shell -a "ls -l /mnt/westos.sh"

fetch模块的使用方法

功能
从受控主机把文件复制到 ansible 主机 , 但不支持目录
# 常用参数
src 受控主机的源文件
dest 本机目录
flat 基本名称功能
ansible all -m fetch -a "src=/mnt/westos.sh dest=/tmp "
ansible 192.168.91.89 -m fetch -a "src=/mnt/westos.sh dest=/tmp/westosname.sh flat=yes"

file模块的使用方法

功能
设置文件的属性
# 常用参数
path 指定文件名称
state 指定操作状态
                                   touch
建立
                                 absent
删除
                                directory
递归
                                      link
建立软链接
                                    hard建立硬链接
mode
设定权限
owner 设定文件用户
group 设定文件组
src 源文件
dest 目标文件
recurse=yes 递归更改
ansible all -m file -a 'src=/mnt/file1 dest=/mnt/filehard state=hard'
ansible all -m file -a 'path=/mnt/file2 state=touch owner=devops group=xxx mode=777'

压缩及解压模块

archive
# 作用
压缩
# 常用参数
path 打包目录名称
dest 声称打包文件名称
format 打包格式
owner 指定文件所属人
mode 指定文件权限

 ansible all -m archive -a 'path=/etc dest=/opt/etc.tar.gz format=gz owner=xxx mode=700'

un archive
功能
解压缩
# 常用参数
copy 

默认为yes                ansible主机复制文件到受控主机

设定为no               从受控主机中寻找src源文件

remote_src 

功能同copy且相反

设定为yes 表示包在受控主机

设定为no表示包在ansible主机

src 包路径可以使ansible主机也可以使受控主机
dest 受控主机目录
mode 加压后文件权限 <copy=yes>

 ansible all -m unarchive -a "src=/opt/etc.tar.gz dest=/mnt copy=no"

hostname模块

作用
管理主机名称
# 常用参数
name 指定主机名称

ansible 192.168.91.89 -m hostname -a 'name=AAAA.westos.com'

定时任务设定模块

cron
# 作用
计划任务
# 常用参数
minute 分钟
hour 小时
day 
month 
weekday 
name 任务名称
job 任务脚本或命令
disabled 

yes 禁用计划任务

no 启动计划任务

state 
                              absent删除计划任务

ansible all -m cron -a "job='echo hello' name=test disabled=yes"

软件仓库配置模块

yum_repository
# 作用
配置系统软件仓库源文件
# 常用参数
name 指定仓库名称
baseurl 指定源路径
description 指定仓库描述
file 指定仓库文件名称
enabled 仓库是否启用
gpgcheck 仓库是否检测gpgkey
state 

默认值present 建立

absent 为删除

ansible all -m yum_repository -a 'name=AppStream file=westos baseurl=http://192.168.91.88/var/www/html/westos/AppStream gpgcheck=no description="AppStream" enabled=yes state=present'

利用dnf模块管理软件

作用
管理系统中的 dnf 仓库及管理软件
常用参数
name指定包
state指定动作
                                         present安装
                                          latest更新
                                          absent删除
list列出指定信息
                                           httpd
                                         installed
                                               all
                                         available
disable_gpg_check禁用gpgkey检测
enablerepo指定安装包来源
disablerepo禁用安装包来源
ansible all -m dnf -a 'name=httpd state=present enablerepo=AppStream'

service服务管理模块

作用
管理系统服务状态
常用参数
name 指定服务名称
state 指定对服务的动作
                                                   started
                                                    stoped
                                                    restarted
                                                    reloaded
enabled 设定服务开机是否启动
#yes 开启启动
#no 开机不启动
ansible all - m service - a "name = httpd state = started enabled = yes" 

火墙控制模块firewalld

常用参数
zone 火墙的域
service 服务名称
permanent 永久生效
state
                                                       enabled 允许
                                                       disabled 拒绝

immediate 

立即生效

ansible all -m firewalld -a 'zone=public service=http permanent=yes state=enabled immediate=yes'

利用user模块管理用户

作用
模块可以帮助我们管理远程主机上的用户 比如创建用户 修改用户 删除用户 为用户创建密钥对等操作
# 常用参数
name 必须参数用于指定要操作的用户名称
group 指定用户所在的基本组
gourps 指定用户所在的附加组
append 指定添加附加组默认值为no
shell 指定用户的默认 shell
uid 指定用户的 uid
comment 指定用户的注释信息
state 用于指定用户是否存在于远程主机
                             present
建立
                            absent
删除
remove 当删除用户是删除用户家目录,默认值为no
password

此参数用于指定用户的密码。但密码为明文

可以用openssl password -6 '密码'生成加密字符

generate_ssh_key 生成sshkey

ansible all -m user -a 'name=linux group=72 groups=1000 shell=/bin/sh uid=6666 comment="linux user" state=present'

利用group模块管理组

作用
group 模块可以帮助我们管理远程主机上的组
# 常用参数
name 用于指定要操作的组名称
state 用于指定组的状态
                          absent
删除
                         present
建立
gid 用于指定组的gid

ansible all -m group -a 'name=linux gid=2000 state=present'

文件关键行替换

lineinfile
# 常用参数
path 指定要操作的文件
line 指定文本内容 "|+" 表示格式化输入
regexp 使用正则表达式匹配对应的行当替换文本时
## 如果有多行文本都能被匹配
## 则只有最后面被匹配到的那行文本才会被替换
## 当删除文本时 如果有多行文本都能被匹配
## 这么这些行都会被删除
state 

当想要删除对应的文本时需要将state参数的值设置为absent

state的默认值为present

backrefs

当内容无匹配规则时不对文件做任何更改,默认值为no

向后引用regexp变量信息

insertafter

借助insertafter参数可以将文本插入到指定的行”之后

insertafter参数的值可以设置为EOF或者正则表达式

insertbefore

借助insertbefore参数可以将文本插入到指定的行之前

insertbefore参数的值可以设置为BOF或者正则表达式

backup 是否在修改文件之前对文件进行备份
create 当要操作的文件并不存在时是否创建对应的文件
ansible all -m lineinfile -a 'path=/mnt/westos line="hello westos\nhello westos" create=yes'
ansible all -m lineinfile -a 'path=/mnt/westos line="hello linux" create=yes'
ansible all -m lineinfile -a 'path=/mnt/westos  regexp="(h.{4}).*(w.{5})" line="\1" backrefs=yes'

替换文件中的关键字

replace
# 作用
replace 模块可以根据我们指定的正则表达式替换文件中的字符串 文件中所有被匹配到的字符串都会被替换
# 常用参数
path 指定要操作的文件
regexp 

指定一个正则表达式

文件中与正则匹配的字符串将会被替换

replace 指定最终要替换成的字符串
backup 是否在修改文件之前对文件进行备份最好设置为yes

ansible all -m replace -a 'path=/mnt/westos regexp="hello" replace="westos_hello" backup=yes'

利用setup采集被控主机的变量信息

作用
setup 模块用于收集远程主机的一些基本信息
# 常用参数
filter 用于进行条件过滤如果设置仅返回匹配过滤条件的信息
ansible all - m setup - k
ansible all - m setup - a "filter = 'ansible_all_ipv4_addresses' " - k

利用debug显示指定信息

作用
调试模块 用于在调试中输出信息
# 常用参数
msg
调试输出的消息
var:
将某个任务执行的输出作为变量传递给debug 模块
debug 会直接将其打印输出
verbosity
debug 的级别 默认是 0 全部显示

 ansible all -m debug -a 'var="westos"' -e westos="linnnnn"

ansible all -m debug -a 'msg="hello hello"'

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

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

相关文章

【后端】JVM 远程调试

前言 再好的代码,也还是有瑕疵的,不是代码不给力,是线上问题太牛逼太玄幻。这不刚部署就出现了问题,幸好还是测试的时候,早点发现早点解决,不给任何人带来不必要的损失,是我做人的原则,只要钱到位,任何问题都不是问题。 JVM 远程调试 不得不说 IDEA 和 宝塔配合是真…

Windows驱动中使用数字签名验证控制设备访问权限

1. 背景 在一般的驱动开发时&#xff0c;创建了符号链接后在应用层就可以访问打开我们的设备并进行通讯。 但我们有时候不希望非自己的进程访问我们的设备并进行交互&#xff0c;虽然可以使用 IoCreateDeviceSecure 来创建有安全描述符的设备&#xff0c;但大数的用户账户为了方…

多人聊天室

1.创建服务面板 package yiduiy;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Has…

STM32串口接收数据包(自定义帧头帧尾)

1、基本概述 本实验基于stm32c8t6单片机&#xff0c;串口作为基础且重要的外设&#xff0c;具有广泛的应用。本文主要理解串口数据包的发送与接收是如何实现的&#xff0c;重要的是理解程序的实现思路。 2、关键程序 定义好需要用到的变量&#xff1a; uint8_t rxd_buf[4];//…

Gti GUI添加标签

通过Git Gui打开项目&#xff0c;通过菜单打开分支历史&#xff0c;我这里是名为"develop"的分支 选中需要打标签的commit&#xff0c;右键-Create tag即可 但貌似无法删除标签&#xff0c;只能通过git bash

MySQL之锁

MySQL之锁 锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性 MySQL锁可以按模式分类为&#xff1a;乐观锁与悲观锁。 按粒度分可以分为全局锁、表级锁…

Python pass语句及其作用及(for和while)循环嵌套及用法

Python pass语句及其作用 很多程序都提供了“空语句”支持&#xff0c;Python 也不例外&#xff0c;Python 的 pass 语句就是空语句。 有时候程序需要占一个位、放一条语句&#xff0c;但又不希望这条语句做任何事情&#xff0c;此时就可通过 pass 语句来实现。通过使用 pass …

设计一算法,对单链表实现就地逆置

对单链表逆置&#xff0c;要联想到单链表的头插性质 举个例子&#xff1a;现在有一个空链表&#xff0c;我们依次对它进行头插123 那么形成的链表是321&#xff0c;这样就形成了逆置 //单链表就地逆置 //思路&#xff1a;把原表接到一个新表上&#xff0c;然后对原表进行头插 …

Nero刻录光盘软件-极好用

目录 一、下载Nero 二、软件安装 三、刻录数据 前言 刻录之前准备一张新的光盘&#xff0c;之前一旦使用过&#xff0c;就无法刻录&#xff0c;一定要新的光盘。 一、下载Nero nero官网下载地址&#xff1a;Nero下载 csdn免费下载地址&#xff1a;https://download.csdn.…

今日现货黄金最新建议

近期现货黄金价格再度逼近历史高位&#xff0c;很多本来在场外观望的投资者&#xff0c;都纷纷希望进场一试身手。然而大涨大跌的行情并不是很适合新手投资者参与&#xff0c;如果大家还没做好技术上的准备&#xff0c;可以多听听正规交易平台的专业人士的意见。 在正式入市之前…

重磅!苹果官方发布大模型框架:一个可以充分利用苹果统一内存的新的大模型框架MLX,你的MacBook可以一键运行LLaMA了

本文来自DataLearnerAI官方网站&#xff1a;重磅&#xff01;苹果官方发布大模型框架&#xff1a;一个可以充分利用苹果统一内存的新的大模型框架MLX&#xff0c;你的MacBook可以一键运行LLaMA了 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/105170187…

西工大计算机学院计算机系统基础实验一(函数编写1~10)

还是那句话&#xff0c;千万不要慌&#xff0c;千万不要着急&#xff0c;耐下性子慢慢来&#xff0c;一步一个脚印&#xff0c;把基础打的牢牢的&#xff0c;一样不比那些人差。回到实验本身&#xff0c;自从​​​​​​按照西工大计算机学院计算机系统基础实验一&#xff08;…

CMMI5大成熟度等级和4大过程域

CMMI&#xff08;Capability Maturity Model Integration&#xff0c;能力成熟度模型集成&#xff09;模型系列是帮助组织改进其过程的最佳实践的集合。这些模型由来自产业界、政府以及软件工程研究所&#xff08;Software Engineering Institute&#xff0c; SEI&#xff09;的…

2024年十大最好猫罐头有哪些?2024年10款最好的猫罐头盘点

我发现不少人有这样的困扰&#xff01;买到各种数值都很好的猫罐头后&#xff0c;猫咪一点都不吃。或者是猫咪吃了猫罐头之后&#xff0c;吃了一段时间后就软便身体不舒服。 通过本文&#xff0c;我将与大家盘点2024年10款最好的猫罐头&#xff0c;并提供一些选购猫罐头的小妙招…

JavaSE基础50题:6. 求出0~999之间的所有“水仙花数”并输出

概念 “水仙花数”是指一个三位数&#xff0c;其各位数字的立方和确好等于该数本身。 如&#xff1a;153 135333,则153是一个“水仙花数”。 【方法】 如何获得每一位的数&#xff1a;如(153) 个位: 153 % 10 3 十位: 153 / 10 15 15 % 10 5 百位: 153 / 100 1 代码 pu…

SimplePIR——目前最快单服务器匿踪查询方案

一、介绍 这篇论文旨在实现高效的单服务器隐私信息检索&#xff08;PIR&#xff09;方案&#xff0c;以解决在保护用户隐私的同时快速检索数据库的问题。为了实现这一目标&#xff0c;论文提出了两种新的PIR方案&#xff1a;SimplePIR和DoublePIR。这两种方案的实现基于学习与错…

浅谈基于Pytest框架的自动化测试开发实践

Pytest是Python的一种易用、高效和灵活的单元测试框架&#xff0c;可以支持单元测试和功能测试。本文不以介绍Pytest工具本身为目的&#xff0c;而是以一个实际的API测试项目为例&#xff0c;将Pytest的功能应用到实际的测试工程实践中&#xff0c;教大家将Pytest用起来。 在开…

JFrog Artifactory—高性能软件制品管理仓库

产品概述 JFrog Artifactory是一个可扩展的通用二进制存储库管理器&#xff0c;可在整个应用程序开发和交付过程中自动管理工件和依赖项。JFrog Artifactory支持大多数开发语言&#xff0c;是整个DevOps流水线中大多数软件包、容器映像和Helm图表的单一数据源。Artifactory对元…

二叉搜索树——模拟

对于一个无穷的满二叉排序树&#xff08;如图&#xff09;&#xff0c;节点的编号是1,2,3&#xff0c;…。对于一棵树根为X的子树&#xff0c;沿着左节点一直往下到最后一层&#xff0c;可以获得该子树编号最小的节点&#xff1b;沿着右节点一直往下到最后一层&#xff0c;可以…

Java TCP协议实现一对一聊天与UDP协议实现群聊案例

JavaTCP协议实现一对一聊天与UDP协议实现群聊案例 1.TCP协议实现一对一聊天 1.1服务端运行结果 1.2客服端运行结果 1.3代码汇总 服务端 package twentyone;import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.…
最新文章