【服务器部署篇】Linux下Ansible安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。

本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快、更好的入门JAVA后端开发工作。

文章目录

    • 一、前言
    • 二、安装
    • 三、配置
    • 四、总结

一、前言

本文介绍在Linux环境下如何使用yum方式安装ansible。

  • ansible是什么?

    ansible 是一个基于python 开发的自动化运维工具, 其功能实现基于ssh远程连接服务。它可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能。

    官网地址:https://www.ansible.com/

  • ansible能做什么?

    ansible可以帮助运维人员完成一些批量任务,或者完成一些需要经常重复的工作。
    比如:同时在100台服务器上安装Nginx服务,并在安装后启动服务。
    比如:将某个文件一次性拷贝到100台服务器上。
    比如:每当有新服务器加入工作环境时,运维人员都要为新服务器部署某个服务,也就是说运维人员需要经常重复的完成相同的工作。

  • ansible有哪些特点?

    ansible不需要单独安装客户端,仅需要在主控制端安装即可。
    ansible不需要启动任何服务,仅需安装对应工具即可。
    ansible依赖大量的python模块来实现批量管理。
    ansible配置文件/etc/ansible/ansible.cfg。

Ansible的架构图如下:
在这里插入图片描述

二、安装

首先,配置epel源文件信息;

vim /etc/yum.repos.d/epel7.repo
[Packages]
name=Packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
gpgcheck=0

在这里插入图片描述
之后,开始使用yum方式安装ansible;

yum install ansible -y

在这里插入图片描述
安装完成后,查看ansible的版本信息;

ansible --version

在这里插入图片描述
之后 ,查看ansible配置文件目录
在这里插入图片描述

三、配置

ansible默认基于ssh登陆,在对远程主机操作之前,需要对主机进行认证。认证方式有密码认证和公私钥密钥认证两种方式。出于安全性的考虑,这里推荐使用公私钥密钥认证方式。

下面介绍如何配置密钥认证。

首先,需要指定要控制的远程主机IP。

vi /etc/ansible/host

在这里插入图片描述

之后,查看已指定的远程主机;

ansible all --list-hosts

在这里插入图片描述
之后,使用ssh-keygen生成随机密钥对。(PS:ssh-keygen是linux下密钥管理工具。)

ssh-keygen -N "" -b 4096 -t rsa -C "tian" -f /root/.ssh/stanley.rsa

在这里插入图片描述
密钥生成后,查看私钥信息;

cat /root/.ssh/stanley.rsa

在这里插入图片描述
之后,查看公钥信息;

cat /root/.ssh/stanley.rsa.pub

在这里插入图片描述
之后,把公钥发送给远程服务器上;

ssh-copy-id -i /root/.ssh/stanley.rsa root@远程服务器IP

在这里插入图片描述

之后,切换到你要控制的远程服务器上,查看公钥信息是否发送过来了。

cat /root/.ssh/authorized_keys

在这里插入图片描述

之后,再切换回当前服务器,通过ansible访问登录远程服务器;

ssh -i /root/.ssh/stanley.rsa root@远程服务器IP

在这里插入图片描述

最后,当远程服务器操作完成后,可以使用exit命令退出远程服务器,切换回当前服务器;
在这里插入图片描述
另外,为了可以使用ansible命令,免密访问远程服务器,还需要在hosts文件中配置私钥的路径信息。
编辑hosts文件,添加如下信息:
远程服务器IP 对应的私钥存放路径
示例:172.22.187.40 ansible_ssh_private_key_file=“~/.ssh/stanley.rsa”

vi /etc/ansible/hosts

在这里插入图片描述
配置完成后,可以执行一个ansible命令,查看远程服务器上公钥信息,测试一下是否配置成功;
示例:ansible 远程服务器IP -m command -a ‘cat /root/.ssh/authorized_keys’
在这里插入图片描述

至此,Ansible安装和配置完成。

四、总结

以上介绍了如何在Linux环境使用yum方式安装和配置ansible。另外,关于ansible的使用,也简单介绍一下。

  • ansible的命令如何使用?

    语法格式:
    ansible <pattern_goes_here> -m <module_name> -a
    也就是:
    ansible 匹配模式 -m 模块 -a ‘需要执行的内容’
    示例:ansible 10.152.30.71 -m command -a ‘docker pull harbor.aliyum.cn/ruoyi/ruoyi-system’,
    即在远程服务器10.152.30.71上,执行shell命令“docker pull harbor.aliyum.cn/ruoyi/ruoyi-system”;

    命令详解:
    匹配模式:即哪些机器生效 (可以是某一台, 或某一组, 或all) , 默认模块为command , 执行常规的shell命令.

    -m name, --module-name=name: 指定执行使用的模块。
    -u username, --user=username: 指定远程主机以username运行命令。
    -s, --sudo: 相当于linux系统下的sudo命令。
    -usudo_username, --sudo-user=sudo_username: 使用sudo, 相当于linux系统下的sudo命令。
    -C, --check: 只检查不实际执行。
    -e, 即extra_vars: 引用外部参数。
    -i, 即inventory: 指定仓库列表, 默认/etc/ansible/hosts。
    –list-host: 列出执行主机列。

  • ansible常用的模块有哪些?

    command模块和shell模块: 用于在各被管理节点运行指定的命令。其中,shell和command的区别,shell模块可以特殊字符,而command是不支持。
    ping 模块: 检查指定节点机器是否还能连通,用法很简单,不涉及参数,主机如果在线,则回复pong 。
    raw 模块: 执行原始的命令,而不是通过模块子系统。
    yum 模块: RedHat和CentOS的软件包安装和管理工具。
    apt 模块: Ubuntu/Debian的软件包安装和管理工具。
    pip 模块 : 用于管理Python库依赖项,为了使用pip模块,必须提供参数name或者requirements。
    synchronize 模块: 使用rsync同步文件,将主控方目录推送到指定节点的目录下。
    template 模块: 基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。
    copy 模块: 在远程主机执行复制操作文件。
    user 模块 与 group 模块: user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令。
    service 模块: 用于管理远程主机的服务。
    get_url 模块: 该模块主要用于从http、ftp、https服务器上下载文件(类似于wget)。
    fetch 模块: 它用于从远程机器获取文件,并将其本地存储在由主机名组织的文件树中。
    file 模块: 主要用于远程主机上的文件操作。
    lineinfile 模块: 远程主机上的文件编辑模块
    unarchive模块: 用于解压文件。
    hostname模块: 修改远程主机名的模块。
    script模块: 在远程主机上执行主控端的脚本,相当于scp+shell组合。
    stat模块: 获取远程文件的状态信息,包括atime,ctime,mtime,md5,uid,gid等信息。
    cron模块: 远程主机crontab配置。
    mount模块: 挂载文件系统。
    find模块: 帮助在被管理主机中查找符合条件的文件,就像 find 命令一样。
    selinux模块:远程管理受控节点的selinux的模块。

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

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

相关文章

vue3【详解】vue3 比 vue2 升级了哪些重要的功能?

改用 createApp 初始化实例 vue2 使用 new Vue() 初始化实例 vue3 使用 Vue.createApp() 初始化实例 新增 emits 选项 vue3 选项式API中新增了emits 选项&#xff0c;用于显示声明组件中的自定义事件&#xff0c;自定义事件的名称&#xff0c;需用 on 开头。 export default {…

如何在vue3+vite中优雅的使用iconify图标

前言 从Vue2迁移到Vue3&#xff0c;在使用上有着很大的差别。本文的话主要是针对图标的使用差别上进行分析&#xff0c;同时给出基于iconify图标库中unplugin-icons的用法。这里特殊说明一下&#xff1a;其实element-plus中用到的图标也是基于iconify图标库的&#xff0c;在我们…

LT9611UXC双端口 MIPI DSI/CSI 转 HDMI2.0,带音频

1. 说明 LT9611UXC 是一款高性能 MIPI DSI/CSI 至 HDMI2.0 转换器。MIPI DSI/CSI 输入具有可配置的单端口或双端口&#xff0c;具有 1 个高速时钟通道和 1~4 个高速数据通道&#xff0c;工作速率最高为 2Gbps/通道&#xff0c;可支持高达 16Gbps 的总带宽。 LT9611UXC 支持突发…

13 c++版本的五子棋

前言 呵呵 这大概是 大学里面的 c 五子棋了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 然后 貌似 放在 win10 上面执行 还有一些问题, 渲染的, 应该很好调整 五子棋 #include<Windows.h> #include<io…

STM32、GD32驱动SHT30温湿度传感器源码分享

一、SHT30介绍 1、简介 SHT30是一种数字湿度和温度传感器&#xff0c;由Sensirion公司生产。它是基于物理蒸发原理的湿度传感器&#xff0c;具有高精度和长期稳定性。SHT30采用I2C数字接口&#xff0c;可以直接与微控制器或其他设备连接。该传感器具有低功耗和快速响应的特点…

树莓派4-通过IIC实现图片循环播放

一、环境 1、树莓派4&#xff1b; 2、串口连接电脑&#xff1b; 3、树莓派由杜邦线连接0.96寸OLED1306协议 4、树莓派能够联网&#xff0c;便于安装环境。离线情况也可以安装&#xff0c;相对麻烦&#xff1b; 二、目标 1、树莓派可以开启IIC并识别已连接的IIC&#xff1b; …

Web3解密:理解去中心化应用的核心原理

引言 在当前数字化时代&#xff0c;去中心化技术和应用正在逐渐引起人们的关注和兴趣。Web3技术作为去中心化应用&#xff08;DApps&#xff09;的基础&#xff0c;为我们提供了一个全新的互联网体验。但是&#xff0c;对于许多人来说&#xff0c;这个复杂的概念仍然充满了神秘…

MongoDB基础操作

文章目录 一、什么是MongoDB二、MongoDB 与关系型数据库对比三、数据类型四、部署MongoDB1、下载二进制包2、下载安装包并解压3、创建用于存放数据和日志的目录&#xff0c;并修改权限4、启动MongoDB4.1前台启动4.2后台启动4.3、配置文件启动服务4.4、配置systemd服务4.5、syst…

RabbitMQ发布确认和消息回退(6)

概念 发布确认原理 生产者将信道设置成 confirm 模式&#xff0c;一旦信道进入 confirm 模式&#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)&#xff0c;一旦消息被投递到所有匹配的队列之后&#xff0c;broker就会发送一个确认给生产者(包含消…

qt实现方框调整

效果 在四周调整 代码 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QWidget>class MainWindow : public QWidget {Q_OBJECT public:explicit MainWindow(QWidget *parent 0);~MainWindow();void paintEvent(QPaintEvent *event);void updateRect();void re…

Restful API 具体设计规范(概述)

协议 https 域名 https://www.baidu.com/api 版本 https://www.baidu.com/v1 路径 https://www.baidu.com/v1/blogs 方法 数据过滤 状态码返回结果 返回的数据格式 尽量使用 JSON&#xff0c;避免使用 XML。 总结&#xff1a; 看 url 就知道要什么看 http method 就知道干…

Linux进阶篇:CentOS7搭建NFS文件共享服务

CentOS7搭建NFS文件共享服务 一、NFS介绍 NFS(Network File System)意为网络文件系统&#xff0c;它最大的功能就是可以通过网络&#xff0c;让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地&#xff0c;就像操作本地磁盘一样&…

Docker——数据管理和网络通信

目录 一、Docker的数据管理 1.数据卷 2.数据卷容器 3.容器互联 二、Docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile 创建 3.1联合文件系统&#xff08;UnionFS&#xff09; 3.2镜像加载原理 3.3为什么Docker里的Centos大小才200M 4.Dcok…

9【PS作图】像素画Tips

放大缩小 “窗口”-排列-为…画布新建窗口&#xff0c;就可以新建一个窗口&#xff0c;实时看作图效果 如果要保持放大或缩小的像素画仍然保持硬边缘&#xff0c;需要设置两个东西 将 编辑 > 首选项 > 常规 中的 插值方式 改为 “邻近&#xff08;靠近硬边缘&#xff09…

HTML网页自动播放背景音乐和全屏背景图代码

HTML网页自动播放背景音乐的代码 背景音乐代码及分析代码的应用背景图代码及分析下期更新预报 背景音乐代码及分析 能使网站上自动循环的背景音乐代码如下&#xff1a; <audio src"music.mid" autostart"true" loop"true" hidden"true…

【小梦C嘎嘎——启航篇】C++四大类型转换

&#x1f60e; 前言&#x1f64c;C四大类型转换什么是类型转换C语言中的类型转换为什么C要嫌弃C语言的类型转换&#xff1f;自行搞一套呢&#xff1f;C强制类型转换1、static_cast2、reinterpret_cast3、const_cast4、dynamic_cast为什么要支持向下转呢&#xff1f; RTTI 总结撒…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式&#xff08;Routing&#xff09;是 RabbitMQ 中的一种消息传递模式&#xff0c;也称为直连模式。它允许生产者将消息发送到一个交换机&#xff0c;并指定一个或多个路由键&#xff08;routing key&#xff09;&#xff0c;交换机根据路由键将消息路由到与之匹配的…

实验7:路由冗余协议HSRP配置管理(课内实验以及解答)

实验目的及要求&#xff1a; 理解首跳冗余协议&#xff08;FHRP&#xff09;的工作原理&#xff0c;掌握热备份路由器协议 (HSRP)&#xff08;思科私有协议&#xff09;原理和配置。能够实现网络终端设备虚拟网关的配置和网络故障的灵活切换&#xff0c;完成相应网络的联通性测…

多模态大语言模型综述

去年以来&#xff0c;我们见证了以 GPT-4V 为代表的多模态大语言模型(Multimodal Large Language Model&#xff0c;MLLM)的飞速发展。为此我们对综述进行了重大升级&#xff0c;帮助大家全面了解该领域的发展现状以及潜在的发展方向。 MLLM 发展脉络图 MLLM 脱胎于近年来广受…

【Redis 开发】缓存雪崩和缓存击穿

缓存问题 缓存雪崩解决方案 缓存击穿互斥锁逻辑时间基于互斥锁解决缓存击穿问题基于逻辑过期方式解决缓存击穿问题 缓存雪崩 缓存雪崩是指在同一时间段&#xff0c;大量的缓存key同时失效或者Redis服务器宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力 解决…