Ansible常用模块

目录

    • 实验前准备
    • Ansible部署
      • 安装ansible
      • 配置主机清单
      • 配置密钥对验证
    • 常用模块
      • commond模块
      • shell模块
      • cron模块
      • user模块
      • group模块
      • copy模块
      • file模块
      • ping模块
      • yum模块
      • service/systemd模块
      • script模块
      • setup模块
    • 遇到的问题
      • sshpass卡住

实验前准备

Ansible管理机:192.168.188.17 安装ansible
待管理主机1:192.168.188.11
待管理主机2:192.168.188.12
关闭防火墙
systemctl stop firewalld
setenforce 0

Ansible部署

以下操作不做说明都在ansible管理机上操作

安装ansible

yum install -y epel-release
yum install -y ansible
Ansible默认安装在/etc/ansible,目录结构如下:
/etc/ansible/
├── ansible.cfg #配置文件,一般不改
├── hosts #主机清单,储存需要管理的远程主机的相关信息
└── roles #公共角色目录

配置主机清单

cd /etc/ansible
vim hosts
在这里插入图片描述

配置密钥对验证

ssh-keygen -t rsa
一路回车,密码也回车,这样姑且算是免密登录
这里的’123’是我的客户机的root密码
sshpass -p ‘123’ ssh-copy-id root@192.168.188.11
sshpass -p ‘123’ ssh-copy-id root@192.168.188.12
Ansible命令行模块
命令格式:ansible <组名> -m <模块> -a <参数列表>
查看已安装的模块
ansible-doc -l
按q退出

常用模块

commond模块

在目标主机上执行命令,不支持管道、重定向等shell的特性
查看commond模块的描述信息和操作动作
ansible-doc -s command
在这里插入图片描述

指定IP执行date命令
ansible 192.168.188.11 -m command -a ‘date’
在这里插入图片描述

指定组执行ls命令
ansible webservers -m command -a ‘ls /opt’
在这里插入图片描述

另一个组也可以试一下
在这里插入图片描述

所有组就用all
ansible all -m command -a ‘ls /opt’
在这里插入图片描述

如果不加-m指定模块,默认运行command模块
常用参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作
ansible all -m command -a
在这里插入图片描述

shell模块

在目标主机执行命令,相当于调用目标主机的shell进程,然后在该shell下打开一个子shell运行命令,支持管道等功能
查看shell模块相关信息和动作
在这里插入图片描述

格式上都一样,就是具体命令不一样,随便展示两个
ansible dbservers -m shell -a ‘echo 123456 | passwd --stdin dzd’
在这里插入图片描述

ansible dbservers -m shell -a ‘echo $(ifconfig ens33 | awk “NR==2 {print $2}”)’
在这里插入图片描述

cron模块

在目标主机上定义计划任务,这里有一个状态参数(state),present表示添加,默认就是这个状态,可以省略,absent表示移除,下面例子会有演示
常用参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称
示例:
ansible webservers -m cron -a ‘minute=“*/1” job=“/bin/echo helloword” name=“test cron”’
在这里插入图片描述

使用command模块查看
ansible webservers -a ‘crontab -l’
在这里插入图片描述

移除任务,假如计划没有名字,直接写name=None即可
ansible webservers -m cron -a ‘name=“test cron” state=absent’
在这里插入图片描述

user模块

用户管理的模块
ansible-doc -s user
常用参数:
name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录

示例:
创建用户tsh
ansible dbservers -m user -a ‘name=“tsh”’
在这里插入图片描述

检查一下
ansible dbservers -m command -a ‘tail /etc/passwd’
在这里插入图片描述

删除用户tsh
ansible dbservers -m user -a ‘name=“tsh” state=absent’
在这里插入图片描述

再查看已经没有了
ansible dbservers -m command -a ‘tail /etc/passwd’
在这里插入图片描述

group模块

用户组管理的模块
ansible-doc -s group
基本上和user模块差不多
示例
创建mysql组
ansible dbservers -m group -a ‘name=“mysql” gid=306 system=yes’
在这里插入图片描述

将dzd用户添加到mysql组中
ansible dbservers -m user -a ‘name=dzd uid=306 system=yes group=mysql’
在这里插入图片描述

检查一下
ansible dbservers -a ‘id dzd’
在这里插入图片描述

copy模块

用于复制指定主机文件到远程主机的
ansible-doc -s copy
常用参数:
dest:指出目标文件的位置,使用绝对路径,如果是源目录,则目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用

示例:
ansible dbservers -m copy -a ‘src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640’
在这里插入图片描述

查看
ansible dbservers -a ‘ls -l /opt/’
在这里插入图片描述

使用copy完成语句的写入
ansible dbservers -m copy -a ‘content=“i am tsh” dest=/opt/hello.txt’
查看
ansible dbservers -a ‘cat /opt/hello.txt’
在这里插入图片描述

file模块

设置文件属性
ansible-doc -s file
示例:
修改文件的属主属组权限等
ansible dbservers -m file -a ‘owner=dzd group=mysql mode=664 path=/opt/fstab.bak’
在这里插入图片描述

设置/opt/fstab.link为/opt/fstab.bak的链接文件
ansible dbservers -m file -a ‘path=/opt/fstab.link src=/opt/fstab.bak state=link’
在这里插入图片描述

查看
在这里插入图片描述

创建文件
ansible dbservers -m file -a “path=/opt/abc.txt state=touch”
删除文件
ansible dbservers -m file -a “path=/opt/abc.txt state=absent”
hostname模块
用于管理远程主机上的主机名
ansible-doc -s hostname
示例:
ansible dbservers -m hostname -a ‘name=mysql01’
在这里插入图片描述

去主机2看一下
在这里插入图片描述

ping模块

检测远程主机的连通性
ansible all -m ping

yum模块

在远程主机上安装与卸载软件包
ansible-doc -s yum
示例:
安装服务
ansible webservers -m yum -a ‘name=httpd’
去主机1检查一下
rpm -q httpd
在这里插入图片描述

卸载服务
ansible webservers -m yum -a ‘name=httpd state=absent’
再去检查一下
在这里插入图片描述

service/systemd模块

用于管理远程主机上的管理服务的运行状态
ansible-doc -s service
常用参数:
name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动

示例:
先查看web服务器上httpd的状态,如果没有就用yum模块安装
ansible webservers -a ‘systemctl status httpd’
在这里插入图片描述

我现在是关闭状态,那么直接开启
ansible webservers -m service -a ‘enabled=true name=httpd state=started’
在这里插入图片描述

再查看状态
在这里插入图片描述

script模块

/实现远程批量运行本地的 shell 脚本
ansible-doc -s script
示例:
先在ansible服务器上写个简单的脚本
vim test.sh
#!/bin/bash
echo “hello ansible from script” > /opt/script.txt
赋权
chmod +x test.sh
运行脚本
ansible webservers -m script -a ‘test.sh’
在这里插入图片描述

查看主机1上是否生成了script.txt
ansible webservers -a ‘cat /opt/script.txt’
在这里插入图片描述

setup模块

facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息
ansible-doc -s setup
示例:
获取webservers组主机的facts信息
ansible webservers -m setup
很长一段不截图了
使用filter可以筛选指定的facts信息
ansible webservers -m setup -a ‘filter=*ipv4’
在这里插入图片描述

遇到的问题

sshpass卡住

具体问题
[root@localhost ansible]# sshpass -p ‘123’ ssh-copy-id root@192.168.188.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”
[root@localhost ansible]#
正常来说应该会有很长一串,但是我遇到了这样的情况,然后用ssh命令或者ansible命令测试的时候发现并没有成功配置免密登录
问题分析:首先这里的问题并不是网上说的已存在公钥的问题,我试过并没有解决。经过网上翻阅资料,我发现是sshpass的问题,对于从未连接过的主机,使用sshpass连接的话需要输入yes
解决办法
第一种办法是对sshd服务进行优化,让它不需要在第一次连接时进行确认
vim /etc/ssh/ssh_config
在这里插入图片描述
在这里插入图片描述

然后重启服务
systemctl restart sshd
再尝试
在这里插入图片描述

第二种方法是比较简单,就是先用ssh连接一下(失败也行),因为sshpass只有从未连接过的主机需要进行确认
具体过程直接看图
在这里插入图片描述

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

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

相关文章

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…

Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数

一、CSV数据文件设置 1、简介 CSV数据文件配置&#xff08;CSV Data Set Config&#xff09;可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示&#xff1a; 其中&#xff1a; &#xff08;1&#xff09;文件编码 文件的编码格式&#xff0c;与所…

Element-UI 多个el-upload组件自定义上传,不用上传url,并且携带自定义传参(文件序号)

1. 需求&#xff1a; 有多个&#xff08;不确定具体数量&#xff09;的upload组件&#xff0c;每个都需要单独上传获取文件&#xff08;JS File类型&#xff09;&#xff0c;不需要action上传到指定url&#xff0c;自定义上传动作和http操作。而且因为不确定组件数量&#xff0…

【计算机网络】TCP握手与挥手:三步奏和四步曲

这里写目录标题 前言三次握手四次挥手三次握手和四次挥手的作用TCP三次握手的作用建立连接防止已失效的连接请求建立连接防止重复连接 TCP四次挥手的作用&#xff1a;安全关闭连接避免数据丢失避免半开连接 总结&#xff1a; 总结 前言 TCP&#xff08;传输控制协议&#xff09…

Mac M1 Parallels CentOS7.9 Deploy Typecho

一、创建名称空间 kubectl create ns prod二、创建PV & PVC vim local-pv1.yamlapiVersion: v1 kind: PersistentVolume metadata:name: local-pv-1 spec:capacity:storage: 1GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: loca…

【Python】模块

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

初识计算机图形学

初识计算机图形学 笔记来源&#xff1a;【老奇】阴差阳错 撼动世界的游戏引擎 1.MVP Transformation 详见本人博客&#xff1a; 1.Transformation 2.梳理从MVP变换到光栅化的过程 MVP变换将空间中3D物体投影到2D屏幕 2.Rasterization 详见本人博客&#xff1a; 1.Rasteri…

linux下vsc的自动切换输入法解决方案

前言 个人使用的是Linux开发加上vsc编辑器&#xff0c;这两个东西一加中国开发者大致上就消失不见了&#xff0c;眼馋idea那个Smartinput很久了&#xff0c;赶上放假了&#xff0c;有空搞搞&#xff0c;如果后期有心情会做的通用点 安装 商店搜索SmartInputLinux安装 使用…

用C语言实现简单的三子棋游戏

目录 1 -> 模块简介 2 -> test.c 3 -> game.c 4 -> game.h 1 -> 模块简介 test.c:测试游戏逻辑 game.c: 函数的实现 game.h:函数的声明 2 -> test.c #define _CRT_SECURE_NO_WARNINGS 1#include "game.h";void menu() {printf("****…

考试查分场景重保背后,我们如何进行可用性测试

作者&#xff1a;暮角 随着通过互联网音视频与知识建立连接的新学习方式在全国范围内迅速普及&#xff0c;在线教育/认证考试的用户规模呈井喷式增长。但教育容不得半点马虎与妥协&#xff0c;伴随用户规模不断增长&#xff0c;保证系统稳定性、有效避免千万考生考试时遭遇故障…

React 初次接触

背景 还是为了完善高大上的在线文档系统&#xff0c;虽然比着葫芦画瓢的修改了一些所谓的代码&#xff0c;慢慢的才发现&#xff0c;原来这就是传说中的React&#xff0c;所以有比较又要囫囵吞枣一下React。 基本原理 参照《React技术揭秘》 网上有电子版 &#xff0c;应该是…

Vue2:全局事件总线

一、场景描述 之前我们学习了&#xff0c;通过props实现父子组件之间的通信。通过自定义组件&#xff0c;实现了子给父传递数据。 那么&#xff0c;兄弟关系的组件&#xff0c;如何通信了&#xff1f;任意组件间如何通信了&#xff1f; 这个时候&#xff0c;就要学习全局事件总…

CentOS 7安装Java并配置环境

一、安装Java环境 1、检查系统是否安装Java [rootlocalhost ~]# java -version 2、更新系统软件包 [rootlocalhost ~]# yum update #遇到[y/n],选择y并回车&#xff0c;耐心等待下载完毕&#xff0c;之后系统会自动检验更新的软件包遇到 /var/run/yum.pid 已被锁定 /var/…

Python常用的高频内置函数之一:setattr()

Python常用的高频内置函数之一&#xff1a;setattr() Python作为一门功能强大的编程语言&#xff0c;提供了众多内置函数来简化开发过程。其中之一是setattr()函数&#xff0c;它允许程序员动态地设置对象的属性。本文将介绍setattr()函数的基本用法和示例&#xff0c;帮助读者…

原生微信小程AR序实现模型动画播放只播放一次,且停留在最后一秒

1.效果展示 0868d9b9f56517a9a07dfc180cddecb2 2.微信小程序AR是2023年初发布&#xff0c;还有很多问提&#xff08;比如glb模型不能直接播放最后一帧&#xff1b;AR识别不了金属、玻璃材质的模型等…有问题解决了的小伙伴记得告诉我一声&#xff09; 微信官方文档地址 3.代码…

用红黑树封装实现map与set

红黑树 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red 或 Black 。 通过对 任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍 &#xff…

CleanMyMac X .4.14.7如何清理 Mac 系统?

细心的用户发现苹果Mac电脑越用越慢&#xff0c;其实这种情况是正常的&#xff0c;mac电脑用久了会产生很多的缓存文件&#xff0c;如果不及时清理会影响运行速度。Mac系统在使用过程中都会产生大量系统垃圾&#xff0c;如不需要的系统语言安装包&#xff0c;视频网站缓存文件&…

嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

文章目录 一 、硬件介绍二 、实验&#xff1a;LED闪烁、LED流水灯、蜂鸣器提示2.1 需求1&#xff1a;面包板上的LED以1s为周期进行闪烁。亮0.5s,灭0.5s.....2.2 需求2: 8个LED实现流水灯2.3 需求3&#xff1a;蜂鸣器不断地发出滴滴、滴滴.....的提示音。蜂鸣器低电平触发。 三、…

【elementUI】el-select相关问题

官方使用DEMO <template><el-select v-model"value" placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.label":value"item.value"></el-option></…

测试用例评审流程

1:评审的过程 A:开始前做好如下准备 1、确定需要评审的原因 2、确定进行评审的时机 3、确定参与评审人员 4、明确评审的内容 5、确定评审结束标准 6、提前至少一天将需要评审的内容以邮件的形式发送给评审会议相关人员。并注明详审时间、地点及偿参与人员等。 7、 在邮件中提醒…