ansible常用模块介绍

news2025/1/21 9:42:09

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.coloradmin.cn/o/1290324.html

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

相关文章

【Docker】从零开始:13.Docker安装tomcat

Docker】从零开始&#xff1a;13.Docker安装Tomcat 下载Tomcat镜像启动Tomcat镜像新版本Tomcat修改访问Tomact首页 下载Tomcat镜像 [rootdocker ~]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 0e29546d541c: Pull complete 9b829c7…

IDEA加载阿里Java规范插件

IDEA加载阿里巴巴Java开发手册插件&#xff0c;在写代码的时候会自动扫描代码规范。 1、打开Settings 2、打开Plugins 3、搜索Alibaba Java Code Guidelines&#xff08;XenoAmess TPM&#xff09;插件&#xff0c;点击Install进行安装&#xff0c;然后重启IDE生效。 4、鼠标右…

Zabbix 5.0 安装部署

一、系统准备工作&#xff1a; Linux &#xff1a; centos 7 mini zabbix-server版本 5.0 LTS 二、安装配置步骤 系统更新 yum update -y 关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 #临时 sed -i s/SELINUXenforcing/SELINU…

User: zhangflink is not allowed to impersonate zhangflink

使用hive2连接进行添加数据是报错&#xff1a; [08S01][1] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. User: zhangflink is not allowed to impersonate zhangflink 有些文章说需要修…

烟感监控:这个技巧是真的香,后悔没早点知道!

在现代社会&#xff0c;安全意识的提升成为各行各业关注的焦点之一。特别是在建筑、工业和住宅领域&#xff0c;火灾作为一种突发性、破坏性极强的灾害&#xff0c;给人们的生命和财产安全带来了巨大的威胁。 因此&#xff0c;为了有效预防和应对火灾&#xff0c;烟感监控系统逐…

【Angular开发】Angular中的高级组件

在这个博客中&#xff0c;我将解释Angular中的几个高级组件和机制&#xff0c;它们增强了灵活性、可重用性和性能。 通过熟悉这些高级组件和机制&#xff0c;您可以提高您的Angular开发技能&#xff0c;并在应用程序中利用灵活性、可重用性和性能优化的能力。让我们开始吧&…

iOS ------ 调用高德地图SDK

一&#xff0c;导入第三方库 这里使用CocoaPods安装SDK&#xff0c;方法和前面导入第三方库相同 1.打开终端&#xff0c;cd 文件路径 进入到所创建的项目文件中 2.输入pod init为该项目创建Podfile文件 3.编辑 Podfile 文件 Podfile文件内容如下&#xff1a; platform :ios,…

yolov1网络结构

YOLO神经网络结构如下图所示。把一幅480x480的原图分割成7x749个网格&#xff0c;每个网格要预测两个预选框&#xff08;bounding box&#xff09;的坐标&#xff08;x&#xff0c;y&#xff0c;w&#xff0c;h&#xff09;&#xff0c;其中x和y表示box中心点与该格子边界的相对…

Netty中Channel的isWritable方法理解

目录 初见 深入 需要注意 对待超SIZE情况开源项目怎么做 1、seata中 2、SUMMER中 3、一些资料中 总结 初见 以下是包中注释 Returns true if and only if the I/O thread will perform the requested write operation immediately. Any write requests made when t…

Elasticsearch,Kibana集成,x-pack鉴权配置

Elasticsearch,Kibana集成 Java8环境部署[CentOS7] cd /usr/local/src wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gztar -xzvf jdk-8u201-linux-x64.tar.gz -C /usr/local#配置环境变量 vim /etc/profile #文末添加 export JAVA_HOME/us…

PostgreSQL 元组统计与 pgstattuple 优化

第1章 简介 1.1 参考文档 https://www.percona.com/blog/postgresql-tuple-level-statistics-with-pgstattuple/ 1.2 关于pgstattuble 由于Postgres表膨胀会降低数据库性能&#xff0c;因此我们可以通过消除表膨胀来提高其性能。我们可以使用pgstattuple扩展来识别膨胀的表。 这…

DenseNet分类网络改进(添加SPP)--亲测有效

最近&#xff0c;我在做多分类问题。在针对基模型的选择中&#xff0c;我使用了DenseNet作为基本模型。我在阅读论文时&#xff0c;遇到了一种改进方式&#xff1a; 如上图所示&#xff0c;在全连接层之前引入SPP模块&#xff1a; 代码如下&#xff1a; SPP模块代码&#x…

VMware 虚拟机 电脑重启后 NAT 模式连不上网络问题修复

问题描述&#xff1a; 昨天 VMware 安装centos7虚拟机&#xff0c;网络模式配置的是NAT模式&#xff0c;配置好后&#xff0c;当时能连上外网&#xff0c;今天电脑重启后&#xff0c;发现连不上外网了 检查下各个配置&#xff0c;都没变动&#xff0c;突然就连不上了 网上查了…

Flink Flink数据写入Kafka

一、环境准备 flink 1.14写入Kafka&#xff0c;首先在pom.xml文件中导入相关依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><flink.version>1.14.6</flink.version><spark.version>2.4.3</spa…

MySQL联合查询、最左匹配、范围查询导致失效

服务器版本 客户端&#xff1a;navicat premium16.0.11 联合索引 假设有如下表 联合索引就是同时把多列设成索引&#xff0c;如(empno&#xff0c;ename)在查询的时候就会先按照empno进行查询&#xff0c;再按照ename进行查询其中empno是全局有序&#xff0c;ename是局部有…

java数字千分位格式转换

java数字千分位格式转换 public static void main(String[] args) {System.out.println(thousandsSeparator("123123131"));}public static String thousandsSeparator(String value) {if (isNotNull(value)) {String[] arr value.split("");for (int i …

Kotlin Flow 操作符

前言 Kotlin 拥有函数式编程的能力&#xff0c;使用Kotlin开发&#xff0c;可以简化开发代码&#xff0c;层次清晰&#xff0c;利于阅读。 然而Kotlin拥有操作符很多&#xff0c;其中就包括了flow。Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符&#xff0c;巧妙使…

top K问题(C语言)

目录 前言 top K问题 模拟数据 建堆 验证&#xff08;简单了解即可&#xff09; 最终代码 调试部分 前言 在大小堆的实现&#xff08;C语言&#xff09;中我们讨论了堆的实际意义&#xff0c;在看了就会的堆排序&#xff08;C语言&#xff09;中我们完成了堆排序&#…

MYSQL全语法速查(含示例)

文章目录 1.从简单的查询开始查找所有记录(SELECT *)查找记录中的所有登录名(SELECT)查找登录名为admin的密码(WHERE)查找电话号码非空的记录(IS NOT NULL)查找所在城市为北京或者用户名字是李四的记录(OR)查找所在城市为北京并且用户名字是张三的记录(AND)查找用户名字是李四或…

6个实用又好用的交互原型工具!

在 UI/UX 设计中&#xff0c;原型设计是至关重要的一步。正如用户体验中的其它环节一样&#xff0c;有无数的交互原型工具可以帮助你完成原型设计。市场上有太多的交互原型工具&#xff0c;如果你不知道选择哪一种&#xff0c;那么我们将为你介绍 6 个实用又好用的交互原型工具…