Ansible运行临时命令及常用模块介绍

news2024/11/21 1:29:31

目录

一.运行临时命令

1.基本语法格式

2.查看当前版本已安装的所有模块

二.ansible常见模块

1.command模块

2.shell模块

3.raw模块

4.script模块

5.file模块

参数列表:

示例:

6.copy模块

参数列表:

示例:

7.fetch模块

参数列表:

示例:

8.yum/apt/dnf

参数列表:

示例:

9.service模块

参数列表:

示例:

10.systemd模块

11.get_url

参数列表:

12.cron模块

参数列表:

13.user模块

参数列表:

示例:

14.Archive(打包压缩)/unarchive(解包解压)模块


一.运行临时命令

1.基本语法格式

ansible 主机/组 -m 模块名称 -a 模块参数 其他选项

#使用ping模块来测试节点连通性
[student@workstation ~]$ ansible servera -m ping
servera | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
[student@workstation ~]$ ansible servera -m ping -o   #-o使输出在一行
servera | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"}

2.查看当前版本已安装的所有模块

[student@workstation ~]$ ansible-doc -l | wc -l
2834[student@workstation ~]$ ansible-doc ping   
#直接使用"ansible-doc 模块名"来获取模块使用帮助,可以在查看后搜索"/EXAMPLES"来查看示例
[student@workstation ~]$ ansible-doc -s ping  #查看模块用法和后接参数

二.ansible常见模块

1.command模块

(1)通过-a后面跟上需要运行的命令,直接执行,但命令行不能包含“<,>,|,&”不指定模块时默认执行command模块

[student@workstation ~]$ ansible servera -m command -a 'free -m'
servera | CHANGED | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:            821         222         366          11         232         464
Swap:             0           0           0

(2)参数简介

chdir:切换目录

[student@workstation ~]$ ansible servera -m command -a 'chdir=/etc pwd'
servera | CHANGED | rc=0 >>
/etc

creates:文件存在时,后方接的命令不会执行

[student@workstation ~]$ ansible servera -m command -a 'creates=aaa.txt ls'
#不存在aaa.txt,ls命令执行
servera | CHANGED | rc=0 >>
anaconda-ks.cfg
original-ks.cfg

removes:文件不存在时,后方接的命令不会执行

[student@workstation ~]$ ansible servera -m command -a 'removes=aaa.txt ls'
#不存在aaa.txt,ls命令跳过执行
servera | SUCCESS | rc=0 >>
skipped, since aaa.txt does not exist

2.shell模块

同command,基于/bin/bash执行命令,可以支持“<,>,|,&”

[student@workstation ~]$ ansible servera -m shell -a 'free -m | grep Swap'
servera | CHANGED | rc=0 >>
Swap:             0           0           0

free_form:要执行的linux命令

executable:切换执行shell绝对路径来执行命令

3.raw模块

同command和shell,可以执行含特殊符号的命令,但raw模块没有chdir,creates,removes等参数

[student@workstation ~]$ ansible-doc -s raw
- name: Executes a low-down and dirty command
  raw:
      executable:            # Change the shell used to execute the command. Should be an absolute path to the executable. When using privilege escalation (`become') a default shell
                               will be assigned if one is not provided as privilege escalation requires a shell.
      free_form:             # (required) The raw module takes a free form command to run. There is no parameter actually named 'free form'; see the examples!

4.script模块

在受管节点上执行管理节点的shell(把shell从管理节点复制到受管节点再在受管节点上运行)

[student@workstation ~]$ cat date.sh
#!/bin/bash
date > /date.txt
[student@workstation ~]$ ansible servera -m script -a '/home/student/date.sh'
#将管理节点的shell脚本文件复制到servera上执行,并查看是否执行成功
servera | CHANGED => {
    "changed": true,
    "rc": 0,
    "stderr": "Shared connection to servera closed.\r\n",
    "stderr_lines": [
        "Shared connection to servera closed."
    ],
    "stdout": "",
    "stdout_lines": []
}
​
[student@workstation ~]$ ansible servera -m shell -a 'cat /date.txt'
servera | CHANGED | rc=0 >>
Sat Oct 14 04:09:17 GMT 2023      #执行成功

5.file模块

主要用于创建、删除文件或目录,修改权限等

参数列表:

path:必要参数,指定文件或目录,也可以使用dest或name(旧版本)替换

state:可以有touch(文件)、directory(目录)、link(软链接)、hard(硬链接)、absent(删除)几个可选项,主要用来进一步确认你操作的对象的文件属性

src:操作对象为link或hard并且state指定了link或hard时使用src来指定链接的来源

force:state=link时,使用force强制创建链接文件,使用于三种情况(src指向的源文件在创建链接前不存在,可以先强制创建链接文件;存放链接文件的目录内存在同名文件,可以使用force=yes实现删除同名文件再创建链接文件;前两种情况都有的情况下,使用force=yes会强制替换同名文件为创建的链接文件)

owner:指定文件拷贝到受管节点后的属主,前提是要先有这个用户

group:指定文件拷贝到受管节点后的属组,前提是要先有这个组

mode:指定文件拷贝到受管节点后的权限,一般多采用“mode=权限数值”方式

recurse:操作对象为目录时,会递归操作该目录

示例:

[student@workstation ~]$ ansible servera -m file -a 'path=/tmp/abc.txt state=touch'
servera | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dest": "/tmp/abc.txt",
    "gid": 0,
    "group": "root",
    "mode": "0644",
    "owner": "root",
    "secontext": "unconfined_u:object_r:user_tmp_t:s0",
    "size": 0,
    "state": "file",
    "uid": 0
}
[student@workstation ~]$ ansible servera -m shell -a 'ls /tmp | grep abc.txt'
servera | CHANGED | rc=0 >>
abc.txt

6.copy模块

主要用于将管理节点文件拷贝到受管节点

参数列表:

src:指定被copy的目录或文件

dest:指定被copy文件的目的目录(必要参数)

content:被copy内容非src指定文件时,使用content直接指定文件内容,src和content两者必要一个

force:受管节点路径下已经有同名文件但两者内容不同,选择是否强制覆盖,默认为yes

backup:受管节点路径下已经有同名文件但两者内容不同,选择是否对受管节点的该文件进行备份

owner:指定文件拷贝到受管节点后的属主,前提是要先有这个用户

group:指定文件拷贝到受管节点后的属组,前提是要先有这个组

mode:指定文件拷贝到受管节点后的权限,一般多采用“mode=权限数值”方式

示例:

[student@workstation ~]$ cat list
servera
[student@workstation ~]$ ansible servera -m copy -a 'src=/home/student/list dest=/tmp/'
servera | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "8e723f6a40d561529bae71445d9a60fbd8185fc6",
    "dest": "/tmp/list",
    "gid": 0,
    "group": "root",
    "md5sum": "b891602b9b8b0a41ffd86c15b171ea56",
    "mode": "0644",
    "owner": "root",
    "secontext": "unconfined_u:object_r:admin_home_t:s0",
    "size": 8,
    "src": "/root/.ansible/tmp/ansible-tmp-1697267810.5263553-92157951653798/source",
    "state": "file",
    "uid": 0
}
[student@workstation ~]$ ansible servera -m shell -a 'cat /tmp/list'
servera | CHANGED | rc=0 >>
servera
​
#注意:若是对目录进行拷贝操作,src接的路径最后没有/表示连同目录一起拷贝,路径最后有/表示只拷贝该目录下的文件并不拷贝目录

7.fetch模块

主要用于将受管节点的文件拷贝到管理节点

参数列表:

dest:拷贝到管理节点的路径

src:从受管节点的哪个路径拷贝

flat:选择是否拷贝受管节点上该文件的目录结构,yes为不拷贝结构

示例:

#拷贝默认目录结构
[student@workstation ~]$ ansible servera -m fetch -a 'src=/tmp/abc.txt dest=/home/student'
servera | CHANGED => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/home/student/servera/tmp/abc.txt",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "remote_md5sum": null
}
[student@workstation ~]$ ll
total 16
-rw-rw-r--. 1 student student 238 Oct 12 13:27 ansible.cfg
-rw-rw-r--. 1 student student  29 Oct 14 04:06 date.sh
-rw-rw-r--. 1 student student   8 Oct 12 09:34 list
-rw-rw-r--. 1 student student 105 Oct 12 13:33 myhosts1
drwxrwxr-x. 3 student student  17 Oct 14 07:36 servera
[student@workstation ~]$ tree servera
servera
└── tmp
    └── abc.txt
​
1 directory, 1 file
​
#不拷贝目录结构,拷过来直接就是文件
[student@workstation ~]$ ansible servera -m fetch -a 'src=/tmp/abc.txt dest=/home/student/ flat=yes'
servera | CHANGED => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/home/student/abc.txt",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "remote_md5sum": null
}
[student@workstation ~]$ ll
total 16
-rw-rw-r--. 1 student student   0 Oct 14 07:48 abc.txt
-rw-rw-r--. 1 student student 238 Oct 12 13:27 ansible.cfg
-rw-rw-r--. 1 student student  29 Oct 14 04:06 date.sh
-rw-rw-r--. 1 student student   8 Oct 12 09:34 list
-rw-rw-r--. 1 student student 105 Oct 12 13:33 myhosts1
​
#注意一个报错:
"msg": "dest is an existing directory, use a trailing slash if you want to fetch src into that directory"
flat=yes时目录已存在,需要在目录后加个斜杠

8.yum/apt/dnf

主要用于软件包管理

参数列表:

name:进行操作的软件包名,可以是本地rpm包路径也可以是网络文件url地址

state:可选项present(安装),absent(删除),latest(更新)

示例:

[student@workstation ~]$ ansible servera -m yum -a 'name="bind" state=present'
servera | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "msg": "Nothing to do",
    "rc": 0,
    "results": [
        "Installed: bind"
    ]
}
​
[student@workstation ~]$ ansible servera -m yum -a 'name="httpd" state=latest'
#更新某个包

9.service模块

主要用于各种服务的设置

参数列表:

enabled:yes/no,是否开机自启动

name:服务名称

state:可选项started,stopped,restarted,reloaded

daemon_reload:yes/no,是否配置文件重载

示例:

[student@workstation ~]$ ansible servera -m service -a 'name=httpd state=started'

10.systemd模块

主要用于服务配置文件变化后的服务管理

参数和用法同service模块

11.get_url

主要用于从http/https,ftp等服务器上下载资源,可以理解为linux上的wget命令

参数列表:

sha256sum:下载完成后进行完整性验证

timeout:超时时间,默认10秒

url:指定url地址,url=地址

urlpassword/urlusername:验证用户密码和名称

use_proxy:使用代理

owner:指定属主

group:指定属组

12.cron模块

主要用于计划任务管理

参数列表:

name:自定义名称,尽量贴近任务内容

minute:多少分钟,*/2表示每两分钟

hour:时

day:日

month:月

weekday:周几

state:可选项present(创建),absent(删除)

job:需要执行的具体任务,在state=present的前提下

backup:是否在做计划任务前对原本内容进行备份

user:以哪个用户的身份来执行

13.user模块

主要用于用户管理,user与group模块用法类似

参数列表:

name:指定用户名

uid:指定该用户uid

group:指定该用户所属组(私有组)

groups:指定该用户附加组

state:可选项present(创建),absent(删除)

remove:当state=absent时,remove表示将该用户的家目录一起删除

password:指定密码

home:家目录位置

createhome:yes/no,是否创建家目录

shell:shell类型

示例:

[student@workstation ~]$ ansible servera -m user -a 'name=sulibao state=present password="slb123"'
​
[student@workstation ~]$ ansible servera -m shell -a 'cat /etc/passwd | grep sulibao'
servera | CHANGED | rc=0 >>
sulibao:x:1002:1002::/home/sulibao:/bin/bash
​
[student@workstation ~]$ ansible servera -m shell -a 'cat /etc/shadow | grep sulibao'
servera | CHANGED | rc=0 >>
sulibao:slb123:19645:0:99999:7:::

14.Archive(打包压缩)/unarchive(解包解压)模块

参数列表:

copy:yes/no,yes将管理节点上的压缩包传送到受管节点后解压至特定目录,no将受管节点的压缩包解压到指定路径下

src:原路径,若是受管节点的路径需要设置copy=no

dest:受管节点的目标路径

mode:压缩文件解压后权限设置

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

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

相关文章

SSL证书能选择免费的吗?

当涉及到保护您的网站和您的用户的数据时&#xff0c;SSL证书是必不可少的。SSL证书是一种安全协议&#xff0c;用于加密在Web浏览器和服务器之间传输的数据&#xff0c;例如信用卡信息、登录凭据和个人身份信息。 但是&#xff0c;许多SSL证书都是付费的&#xff0c;这可能会…

Java应用的混淆、加密以及加壳

文章目录 前言问题代码混淆存在的问题Java类文件加密存在的问题虚拟化保护存在的问题AOT编译存在的问题 Java应用的打包混淆器类加载与类加密Bootstrap Class LoaderExtension Class LoaderSystem Class Loader自定义ClassLoaderprotector4j 加壳采用Golang打包Java程序xjar 参…

基于未来搜索优化的BP神经网络(分类应用) - 附代码

基于未来搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于未来搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.未来搜索优化BP神经网络3.1 BP神经网络参数设置3.2 未来搜索算法应用 4.测试结果…

2023年四川省安全员B证证考试题库及四川省安全员B证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年四川省安全员B证证考试题库及四川省安全员B证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

Filebeat 采集 k8s Pod 和 Events 日志实战操作

文章目录 一、概述1&#xff09;采集 Pod 日志流程介绍3&#xff09;采集 Events 日志流程介绍 二、K8s 集群部署三、ElasticSearch 和 kibana 环境部署四、Filebeat 采集配置1&#xff09;采集 Pod 日志配置2&#xff09;采集 Events 日志配置1、创建 filebeat 授权 token2、f…

网络 | 排错五大步骤,没有解决不了的网络故障准达信息准达信息

网络故障是我们工作中最易常见的问题&#xff0c;那么如何才能进行网络排查&#xff0c;快速解决问题呢&#xff1f; 一、网络排错五大基本步骤与命令 五大基本思路如下&#xff1a; &#xff08;1&#xff09;检查物理链路是否有问题&#xff1b; &#xff08;2&#xff09;…

【总结】两个独立同分布的随机变量相加还是原来的分布吗?

二项分布&#xff0c;泊松分布&#xff0c;正态分布&#xff0c;卡方分布&#xff0c;具有独立可加性。 图源自没咋了&#xff0c;面哥课程。

【软考】9.3 二叉树存储/遍历/线索/最优/查找/平衡

《树与二叉树》 二叉树的顺序存储结构 顺序存储只适用于完全二叉树和满二叉树&#xff0c;一般二叉树不适用i 2 的左孩子为 2i 4&#xff0c;右孩子为 2i 1 5 二叉树的链式存储结构 链式存储适用于二叉树&#xff1b;空结点用“∧”表示二叉链表&#xff1a;左孩子&#xff0…

论文阅读:CenterFormer: Center-based Transformer for 3D Object Detection

论文地址&#xff1a;[2209.05588] CenterFormer: Center-based Transformer for 3D Object Detection (arxiv.org) 代码地址&#xff1a;GitHub - TuSimple/centerformer: Implementation for CenterFormer: Center-based Transformer for 3D Object Detection (ECCV 2022) …

Java多线程下载文件

JVM是支持多线程程序的&#xff0c;当程序需要同时执行两个或多个任务&#xff0c;实现一些需要等待的任务时&#xff0c;如用户输入、文件读写、网络操作、搜索等多线程程序比单线程程序更具优势&#xff0c;可充分利用CPU资源&#xff0c;完成时间更短&#xff0c;提高应用程…

代码管理工具 gitlab实战应用

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

Dokcer基础操作命令演示

Docker中的常见命令&#xff0c;可以参考官方文档&#xff1a;https://docs.docker.com/engine/reference/commandline/cli/ 1、命令介绍 其中&#xff0c;比较常见的命令有&#xff1a; 命令说明文档地址docker pull拉取镜像docker pulldocker push推送镜像到DockerRegistr…

【大数据】Apache Hive数仓(学习笔记)

一、数据仓库基础概念 1、数仓概述 数据仓库&#xff08;数仓、DW&#xff09;&#xff1a;一个用于存储、分析、报告的数据系统。 OLAP&#xff08;联机分析处理&#xff09;系统&#xff1a;面向分析、支持分析的系统。 数据仓库的目的&#xff1a;构建面向分析的集成化数据…

【Eclipse】Plug-in Development 插件的安装

先按路线找到需要的页面&#xff1a;eclipse–Window–Preferences–Java–Editor–Content Assist 在Work with框中输入&#xff1a;http://download.eclipse.org/releases/2019-06 PS&#xff1a;后面的2019-06是eclipse发行的时间 选择&#xff1a;General Purpose Tools 下…

TwinCAT3添加伺服控制器的方法

文章目录 一. 主要参考二. 使用嵌入式控制器CX5140添加三菱MR-J4-TM伺服控制器的方法具体步骤 一. 主要参考 《TwinCAT NC 使用指南》第四章 TwinCAT NC 控制总线伺服 二. 使用嵌入式控制器CX5140添加三菱MR-J4-TM伺服控制器的方法 嵌入式控制器: 倍福CX5140伺服控制器&…

【Eclipse】解决插件下载速度太慢

解决方案&#xff1a;修改镜像 下面列出几个国内的镜像网站&#xff1a; 中国科学技术大学(5.6MB/s) http://mirrors.ustc.edu.cn/eclipse/ 北京理工大学&#xff08;600KB/s&#xff09; http://mirror.bit.edu.cn/eclipse/ 大连东软信息学院(400KB/s) http://mirrors.neuso…

入门小白拥有服务器的建议

学习网络知识 当我们拥有了一台服务器以后,需要提前准备学习一些网络、服务器、互联网方便的知识, 以备在后续学习工作中使用。 建议的网络知识学习清单: 1. 网络基础知识:包括网络拓扑结构、协议、IP地址、子网掩码、网关等基础概念。 2. 网络安全:包括网络攻击类型、防…

基于黑猩猩优化的BP神经网络(分类应用) - 附代码

基于黑猩猩优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于黑猩猩优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.黑猩猩优化BP神经网络3.1 BP神经网络参数设置3.2 黑猩猩算法应用 4.测试结果&#x…

英语——语法——从句——定语从句——笔记

一、从句的定义&#xff08;Clause&#xff09; 英语的语法中&#xff0c;有主句和从句之分。主句呢&#xff1f;当然是&#xff0c;我们要表达主要意思的句子&#xff0c;要表达的所有句子都可简化为某某是/做什么。 而从句的概念&#xff0c;指复合句中不能独立成句&#xf…

PyTorch入门教学——简介与环境配置

一、简介 PyTorch是一个开源的Python机器学习库&#xff0c;其前身是2002年诞生于纽约大学的Torch。它是美国Facebook公司使用python语言开发的一个深度学习的框架。特点&#xff1a; 简洁 PyTorch的设计追求最少的封装&#xff0c;尽量避免重复造轮子。 简洁的设计带来的另外…