ansible(2)-- ansible常用模块
部署ansible:ansible(1)-- 部署ansible连接被控端_luo_guibin的博客-CSDN博客
目录
一、ansible常用模块
1.1 ping
1.2 command
1.3 raw
1.4 shell
1.5 script
1.6 copy
1.7 template
1.8 yum
11.0.1.13 | 主控端(ansible) |
11.0.1.12 | 被控端(k8s-master) |
一、ansible常用模块
查看主控端被控端IP,主控端(10.1.1.13)查看ansible配置文件的被控端,已经做好ssh连接。
[root@ansible ~]# ip a | grep 11.0.1 #主控端inet 11.0.1.13/24 brd 11.0.1.255 scope global noprefixroute ens33
[root@k8s-master ~]# ip a| grep 11.0.1. #被控端inet 11.0.1.12/24 brd 11.0.1.255 scope global noprefixroute ens33[root@ansible ~]# cat /etc/ansible/hosts | grep -Ev '^$|#'
[test]
11.0.1.12[root@k8s-master ~]# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDecpeG4vJSLMos4kyPRLKB6jRQPQZxxCj/UGUlub0nEoa7dExT5l/Jwe9ePCDmcDmD49EiUsefeixDOz/XSZIfn1+Iq/FZBS7sF21utdzX7zLU45qDurLMys44SZyckfs45PvXpjzaBqZc+WincHwKGu4EJo9eVbr9xUJUjUWre/AdLHn00XMncPHr1rFp/G6i7o6iavabFgdxCtzrqNz4xa7gOnRJpsTCHTdlCjUiPVBRMt1wEklQPMOUuJn0BIiaq8O3EI7sG/9pXgiI/l49tH77piBcZqND20uFsxHUT+55yt81cT3G6Mu+Q6BIW7RkWyFvERwrcDVWjZQ8obBD root@ansible
ansible -m module_name 没有选定则默认使用command模块
ansible -a ‘module_args’ 理解为当前指定模块所需的参数,默认模块为command,command默认参数就是一条linux命令。
1.1 ping
ping模块用于检查指定节点机器是否连通,用法很简单,不涉及参数,主机如果在线,则回复pong
[root@ansible ~]# ansible test -m ping
11.0.1.12 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
}
1.2 command
command模块用于在上执行命令,ansible默认就是使用command模块。command模块有一个缺陷就是不能使用管道符和重定向功能。
[root@ansible ~]# ansible 11.0.1.12 -a 'ls /root/.ssh'
11.0.1.12 | CHANGED | rc=0 >>
authorized_keys#ls当前目录为空
[root@ansible ~]# ansible 11.0.1.12 -a 'ls /tmp'
11.0.1.12 | CHANGED | rc=0 >>
ansible_command_payload_jXbMsq#创建test文件
[root@ansible ~]# ansible 11.0.1.12 -a 'touch /tmp/test'
[WARNING]: Consider using the file module with state=touch rather than running 'touch'. If you need to use command
because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in
ansible.cfg to get rid of this message.
11.0.1.12 | CHANGED | rc=0 >>#查看是否创建成功
[root@ansible ~]# ansible 11.0.1.12 -a 'ls /tmp'
11.0.1.12 | CHANGED | rc=0 >>
ansible_command_payload_G9vt0o
test
#重定向虽然显示成功,但实际并没有写入
[root@ansible ~]# ansible 11.0.1.12 -a "echo 'hello world' > /tmp/test"
11.0.1.12 | CHANGED | rc=0 >>
hello world > /tmp/test
[root@ansible ~]# ansible 11.0.1.12 -a 'cat /tmp/test'
11.0.1.12 | CHANGED | rc=0 >>#管道命令无法使用
[root@ansible ~]# ansible 11.0.1.12 -a 'ps -ef | grep network'
11.0.1.12 | FAILED | rc=1 >>
error: garbage optionUsage:ps [options]Try 'ps --help <simple|list|output|threads|misc|all>'or 'ps --help <s|l|o|t|m|a>'for additional help text.For more details see ps(1).non-zero return code
1.3 raw
raw模块用于在远程主机上执行命令,其支持管道符与重定向。
[root@ansible ~]# ansible 11.0.1.12 -m raw -a "echo 'hello world' > /tmp/test"
11.0.1.12 | CHANGED | rc=0 >>
Shared connection to 11.0.1.12 closed.[root@ansible ~]# ansible 11.0.1.12 -a 'cat /tmp/test'
11.0.1.12 | CHANGED | rc=0 >>
hello world#支持管道和重定向命令
[root@ansible ~]# ansible 11.0.1.12 -m raw -a 'ps -ef | grep network'
11.0.1.12 | CHANGED | rc=0 >>
root 1730 1 4 10:17 ? 00:03:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.2 --cgroup-driver=systemd
root 31023 31021 0 11:26 pts/1 00:00:00 bash -c ps -ef | grep network
root 31035 31023 0 11:26 pts/1 00:00:00 grep network
Shared connection to 11.0.1.12 closed.
1.4 shell
shell模块用于在被控端上执行被控端上的脚本,亦可直接在被控端端上执行命令。shell模块亦支持管道与重定向。
使用raw写入被控端/tmp/shell.sh
[root@ansible ~]# ansible 11.0.1.12 -m raw -a "echo 'echo shell_module' > /tmp/shell.sh"
11.0.1.12 | CHANGED | rc=0 >>
Shared connection to 11.0.1.12 closed.[root@ansible ~]# ansible 11.0.1.12 -m raw -a 'cat /tmp/shell.sh'
11.0.1.12 | CHANGED | rc=0 >>
echo shell_module
Shared connection to 11.0.1.12 closed.#成功执行sh文件
[root@ansible ~]# ansible 11.0.1.12 -m shell -a 'sh /tmp/shell.sh'
11.0.1.12 | CHANGED | rc=0 >>
shell_module
1.5 script
script模块用于在被控端
上执行主控机上的脚本
[root@ansible ~]# echo "echo master-node" > /tmp/script.sh
[root@ansible ~]# cat /tmp/script.sh
echo master-node
执行主控机脚本script.sh,成功打印“master-node”。
[root@ansible ~]# ansible 11.0.1.12 -m script -a "/tmp/script.sh"
11.0.1.12 | CHANGED => {"changed": true, "rc": 0, "stderr": "Shared connection to 11.0.1.12 closed.\r\n", "stderr_lines": ["Shared connection to 11.0.1.12 closed."], "stdout": "master-node\r\n", "stdout_lines": ["master-node"]
}
执行主控机脚本并将执行结果写入被控端/tmp/script-tmp文件
[root@ansible ~]# ansible 11.0.1.12 -m script -a "/tmp/script.sh &> /tmp/script-tmp"
11.0.1.12 | CHANGED => {"changed": true, "rc": 0, "stderr": "Shared connection to 11.0.1.12 closed.\r\n", "stderr_lines": ["Shared connection to 11.0.1.12 closed."], "stdout": "", "stdout_lines": []
}#查看输出是否成功
[root@ansible ~]# ansible 11.0.1.12 -m shell -a "cat /tmp/script-tmp"
11.0.1.12 | CHANGED | rc=0 >>
master-node
[root@ansible ~]#
1.6 copy
copy模块用于复制文件至远程被控端,dest是被控端路径,必须是绝对路径。
[root@ansible ~]# touch /tmp/copy
[root@ansible ~]# ansible 11.0.1.12 -m copy -a 'src=/tmp/copy dest=/tmp/copy-bak'
11.0.1.12 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/copy-bak", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1692430003.5-3588-37280436501987/source", "state": "file", "uid": 0
}[root@ansible ~]# ansible 11.0.1.12 -m shell -a 'ls /tmp/ | grep copy'
11.0.1.12 | CHANGED | rc=0 >>
copy-bak
1.7 template
template其实和copy类似复制文件。
src是控制端目录,可以是相对路径也可以是绝对路径,dest是被控端路径,必须是绝对路径。
template模块与copy模块作用相同都是用于copy文件的,区别在于copy模块copy的src源文件都是静态文件,不存在变量;当年我们需要copy的文件中出现变量,我们就要用到template模块;并且src文件是以".j2"结尾的模板文件,当然普通文件也可以通过template实现复制,简单来说,template会比copy跟高级。
[root@ansible ~]# touch /tmp/template[root@ansible ~]# ansible 11.0.1.12 -m template -a 'src=/tmp/template dest=/tmp/template-bak'
11.0.1.12 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/template-bak", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1692430426.38-3724-205690846918337/source", "state": "file", "uid": 0
}[root@ansible ~]# ansible 11.0.1.12 -m shell -a 'ls /tmp/ | grep template'
11.0.1.12 | CHANGED | rc=0 >>
template-bak
1.8 yum
使用yum模块需要保证被控端有合适的yum源,yum模块用于在指定节点机器上通过yum管理软件,其支持的参数主要有两个。
- name:要管理的包名
- state:要进行的操作
state常用的值:
- latest:安装软件
- installed:安装软件
- present:安装软件
- removed:卸载软件
- absent:卸载软件
被控端安装ftp服务
[root@k8s-master ~]# rpm -qa | grep ftp
[root@k8s-master ~]# [root@ansible ~]# ansible 11.0.1.12 -m yum -a 'name=ftp state=present'
11.0.1.12 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "changes": {"installed": ["ftp"]}, "msg": "", "rc": 0, "results": ["Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirrors.aliyun.com\n * extras: mirrors.aliyun.com\n * updates: mirrors.ustc.edu.cn\nResolving Dependencies\n--> Running transaction check\n---> Package ftp.x86_64 0:0.17-67.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ftp x86_64 0.17-67.el7 base 61 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 61 k\nInstalled size: 96 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ftp-0.17-67.el7.x86_64 1/1 \n Verifying : ftp-0.17-67.el7.x86_64 1/1 \n\nInstalled:\n ftp.x86_64 0:0.17-67.el7 \n\nComplete!\n"]
}[root@k8s-master ~]# rpm -qa | grep ftp
ftp-0.17-67.el7.x86_64
被控端卸载ftp服务
[root@ansible ~]# ansible 11.0.1.12 -m yum -a 'name=ftp state=removed'
11.0.1.12 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "changes": {"removed": ["ftp"]}, "msg": "", "rc": 0, "results": ["Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ftp.x86_64 0:0.17-67.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ftp x86_64 0.17-67.el7 @base 96 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 96 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ftp-0.17-67.el7.x86_64 1/1 \n Verifying : ftp-0.17-67.el7.x86_64 1/1 \n\nRemoved:\n ftp.x86_64 0:0.17-67.el7 \n\nComplete!\n"]
}[root@k8s-master ~]# rpm -qa | grep ftp
[root@k8s-master ~]#
参考文档:
https://www.cnblogs.com/Their-own/archive/2022/10/24/16820142.html
ansible的copy模块四种拷贝情况_如何查看ansible copy失效原因_-光光-的博客-CSDN博客
相关文章:

ansible(2)-- ansible常用模块
部署ansible:ansible(1)-- 部署ansible连接被控端_luo_guibin的博客-CSDN博客 目录 一、ansible常用模块 1.1 ping 1.2 command 1.3 raw 1.4 shell 1.5 script 1.6 copy 1.7 template 1.8 yum 11.0.1.13 主控端(ansible)11.0.1.12 被控端(k8s…...

一文了解Gin对Cookie的支持z
1. 引言 本文将从Web应用程序处理请求时需要用户信息,同时HTTP又是无状态协议这个矛盾点出发。从该问题出发,简单描述了解决该问题的Token 机制,进而引出Cookie的实现方案。 基于此我们将详细描述Cookie的规范,然后详细描述具体…...

android外卖点餐界面(期末作业)
效果展示: AndroidMainFest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><a…...

ArcGIS API开发介绍
本来想自己总结写一下的,但是发现有个网站总结的特别好。所以直接给大家分享一下地址: 起步 - Start | ArcGis中文网 当然系统性的学习和使用还的看官网文档Quick Links | API Reference | ArcGIS Maps SDK for JavaScript 4.27 | ArcGIS Developers …...
大数据课程K5——Spark的框架核心概念
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的框架核心概念; ⚪ 掌握Spark的Spark集群模式安装; ⚪ 掌握Spark的Spark架构; ⚪ 掌握Spark的Spark调度模块; 一、Spark框架核心概念 1. RDD。弹性分布式数据集,是Spark最…...

【⑬MySQL | 数据类型(一)】简介 | 整数 | 浮点 | 定点类型
前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL数据类型简介 | 整数 | 浮点 | 定点类型的分享✨ 目录 前言0.数据类型简介1 整数类型2 浮点类型3 定点类型4 日期/时间类型总结 0.数据类型简介 数据类型(data_type)是指系统中所允许的…...
5.6 汇编语言:汇编高效数组寻址
数组和指针都是用来处理内存地址的操作,二者在C语言中可以互换使用。数组是相同数据类型的一组集合,这些数据在内存中是连续存储的,在C语言中可以定义一维、二维、甚至多维数组。多维数组在内存中也是连续存储的,只是数据的组织方…...

uniapp - 实现卡片式胶囊单选后右上角出现 “√“ 对勾对号选中效果功能,适用于小程序h5网页app全平台通用(一键复制组件源码,开箱即用!)
效果图 uniapp全平台兼容(小程序/h5网页/app)实现点击选择后,右上角出现 √ 对号效果(角标形式展现),功能组件, 改个样式,直接复制使用该组件。 组件源码 在 components 组件文件夹下,随便建立一个 .vue 文件,一键复制下方源码。...

使用Jetpack Compose构建可折叠Card
使用Jetpack Compose构建可折叠Card 为何在Android应用开发中使用扩展卡片 扩展卡片在Android应用开发中广受欢迎,它们可以让开发者打造干净紧凑的用户界面,同时可以轻松展开,显示额外的内容。 通过巧妙地使用扩展卡片,开发者可…...

安卓手机跑 vins slam (1)
我是迪卡魏曼依奇,一直是用手机拍照,将图片导出到电脑,然后使用RealityCapture三维重建。 RealityCapture是靠特征点去把拍摄的多个图像进行对齐的。需要拍摄的足够多,且有特征才能对齐,要不然很多图像会找不到公共点…...

腾讯云-对象存储服务(COS)的使用总结
简介 对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。通过控制台、API、SDK 和工具等多样化方式,用户可简单、快速地接入 COS࿰…...
kafka复习:(3)自定义序列化器和反序列化器
一、实体类定义: public class Company {private String name;private String address;public String getName() {return name;}public void setName(String name) {this.name name;}public String getAddress() {return address;}public void setAddress(String a…...

Unity 图片资源的适配
前言 最近小编做Unity项目时,发现在资源处理这方面和Android有所不同;例如:Android的资源文件夹res下会有着mipmap-mdpi,mipmap-hdpi,mipmap-xhdpi,mipmap-xxhdpi,mipmap-xxxhdpi这五个文件夹&a…...

【Axure高保真原型】通过输入框动态控制折线图
今天和大家分享通过输入框动态控制折线图的原型模板,在输入框里维护项目数据,可以自动生成对应的折线图,鼠标移入对应折点,可以查看对应数据。使用也非常方便,只需要修改输入框里的数据,或者复制粘贴文本&a…...

【Java】树结构数据的搜索
这里写自定义目录标题 需要实现的效果前端需要的json格式:一定是一个完整的树结构错误错误的返回格式错误的返回格式实现的效果 正确正确的返回格式正确的展示画面 后端逻辑分析代码总览 数据库表结构 需要实现的效果 前端需要的json格式:一定是一个完整…...

ElementUI中的日历组件加载无效的问题
在ElementUI中提供了一个日历组件。在某些场景下还是比较有用的。只是在使用的时候会有些下坑,大家要注意下。 官网提供的信息比较简介。我们在引入到项目中使用的时候可以能会出现下面的错误提示。 Unknown custom element: <el-calendar> - did you …...
Git版本管理(03)stash临时操作和.gitignore配置
1 git stash操作(临时存储) 1.1 git stash常见流程 当你修改了某一个分支,但此时要切换分支时如果直接切换会因为一些修改冲突而checkout失败,那么此时就可以使用git stash命令来解决该问题。一般流程为: $git pull# 将当前未提交的修改…...

【ThingJS | 3D可视化】开发框架,一站式数字孪生
博主:_LJaXi Or 東方幻想郷 专栏: 数字孪生 | 3D可视化框架 开发工具:ThingJS在线开发工具 ThingJs 低代码开发 ThingJs 低代码开发注意点场景效果配置层级层级常用API实例化 Thing,加载场景load 加载函数ThingJs 层级关系图查找层…...

SpringBoot返回响应排除为 null 的字段
SpringBoot返回响应排除为 null 的字段 可以通过全局配置,使返回响应中为null的字段,不在出现在返回结果中。 注意:这样配置,使得返回响应包含的字段随请求结果变化,响应到底包含哪些字段不直观;除非业务…...

华为数通方向HCIP-DataCom H12-821题库(单选题:41-60)
第41题 以下关于IS-IS协议说法错误的是? A、IS-IS协议支持CLNP网络 B、IS-IS 协议支持IP 网络 C、IS-IS 协议的报文直接由数据链路层封装 D、IS-IS协议是运行在AS之间的链路状态协议 答案:D 解析: 关于IS-IS协议的说法错误是D. IS-IS协议是运行在A…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...