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博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java 高阶】一文精通 Spring MVC - 基础概念(一)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

Redis的基本操作

文章目录 1.Redis简介2.Redis的常用数据类型3.Redis的常用命令1.字符串操作命令2.哈希操作命令3.列表操作命令4.集合操作命令5.有序集合操作命令6.通用操作命令 4.Springboot配置Redis1.导入SpringDataRedis的Maven坐标2.配置Redis的数据源3.编写配置类&#xff0c;创还能Redis…

k8s-ingress-context deadline exceeded

报错&#xff1a; rancher-rke-01:~/rke # helm install rancher rancher-latest/rancher --namespace cattle-system --set hostnamewww.rancher.local Error: INSTALLATION FAILED: Internal error occurred: failed calling webhook "validate.nginx.ingress.kube…

Java后端开发面试题——微服务篇总结

Spring Cloud 5大组件有哪些&#xff1f; 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置中心 Nacos 负载均衡 Ribbon 服务调用 Feign 服务保护 sentinel 服务网关 Gateway Ribbon负载均衡策略有哪些 ? RoundRobinRule&…

Docker容器与虚拟化技术:Docker consul 实现服务注册与发现

目录 一、理论 1.Docker consul 二、实验 1.consul部署 2. consul-template部署 三、总结 一、理论 1.Docker consul &#xff08;1&#xff09;服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&…

Python功能制作之简单的音乐播放器

需要导入的库&#xff1a; pip install PyQt5 源码&#xff1a; import os from PyQt5.QtCore import Qt, QUrl from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtWidgets import QApplication, QMainWind…

RNN+LSTM正弦sin信号预测 完整代码数据视频教程

视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…

基于web的鲜花商城系统java jsp网上购物超市mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于web的鲜花商城系统 系统有2权限&#xff1a;前台…

【数据结构与算法】迪杰斯特拉算法

迪杰斯特拉算法 介绍 迪杰斯特拉&#xff08;Dijkstra&#xff09;算法是典型最短路径算法&#xff0c;用于计算一个节点到其他节点的最短路径。它的主要特点是以中心向外层层扩展&#xff08;广度优先搜索思想&#xff09;&#xff0c;直到扩展到终点为止。 算法过程 设置…

thinkphp6.0 配合shell 脚本 定时任务

1. 执行命令&#xff0c;生成自定义命令 php think make:command Custom<?php declare (strict_types 1);namespace app\command;use app\facade\AdmUser; use think\console\Command; use think\console\Input; use think\console\input\Argument; use think\console\i…

Microsoft正在将Python引入Excel

Excel和Python这两个世界正在碰撞&#xff0c;这要归功于Microsoft的新集成&#xff0c;以促进数据分析和可视化 Microsoft正在将流行的编程语言Python引入Excel。该功能的公共预览版现已推出&#xff0c;允许Excel用户操作和分析来自Python的数据。 “您可以使用 Python 绘图…

浙大数据结构第八周之08-图7 公路村村通

题目详情&#xff1a; 现有村落间道路的统计数据表中&#xff0c;列出了有可能建设成标准公路的若干条道路的成本&#xff0c;求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N&#xff08;≤1000&#xff09;和候选道路数目M&#xff08…

Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

一、创建Android签名文件 使用Android Studio开发工具&#xff0c;可视化窗口进行创建 第一步&#xff1a;点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步&#xff1a;选择APK选项 第三步&#xff1a;创建签名文件 第四步&#xff1a;输入创建签名的…

VMware和ubuntu配置Hadoop环境

本博客主要是为了学校课程”大数据与云计算“需要安装Hadoop而写&#xff0c;希望这篇博客对各位阅读这篇博客的人有所帮助。废话不多说&#xff0c;下面直接开始配置教程。 一、获取VMware安装包 VMware获取方法有很多种&#xff0c;这里我准备了官网获取和从我准备的资料中获…

【计算机网络篇】TCP协议

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; TCP协议 1&#xff0c;TCP 简介 TCP&#xff08;Transmission Control Protocol&#xff09;是…

探究HTTP API接口测试:工具、方法与自动化

本文将深入探讨HTTP API接口测试的重要性&#xff0c;并介绍了相关工具、方法以及自动化测试的实施&#xff0c;同时比较了HTTP和API接口测试的区别。从不同角度解析这一关键测试领域&#xff0c;帮助读者更好地理解和应用于实际项目中。 在如今数字化的世界中&#xff0c;软件…

【学会动态规划】摆动序列(27)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

STM32--MPU6050与I2C外设

文章目录 前言MPU6050参数电路MPU6050框图 IIC外设框图 IIC的基本结构软件IIC实现MPU6050硬件IIC实现MPU6050 前言 在51单片机专栏中&#xff0c;用过I2C通信来进行实现AT24C02的数据存储&#xff1b; 里面介绍的是利用程序的编程来实现I2C的时序&#xff0c;进而实现AT24C02与…

k8s-dashboard使用指导手册

一、访问 dashboard http://172.66.209.101:32001 二、选择 Namespace 如下图&#xff1a; 1 在①搜索框中输入 spms 2 在②选择 spms-cloud 三、查找 pod 1 打开 pod 列表 2 打开过滤窗口 3 搜索 pod 在打开的搜索框中输入 pod的关键字&#xff0c;支持模糊搜索 如搜索…

Linux系统USB摄像头测试程序(三)_视频预览

这是在linux上usb摄像头视频预览程序&#xff0c;此程序用到了ffmpeg、sdl2、gtk3组件&#xff0c;程序编译之前应先安装他们。 #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <zconf.h> …