【服务器部署篇】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源文件信息;

bash 复制代码
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;

bash 复制代码
yum install ansible -y

安装完成后,查看ansible的版本信息;

bash 复制代码
ansible --version

之后 ,查看ansible配置文件目录

三、配置

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

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

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

bash 复制代码
vi /etc/ansible/host

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

bash 复制代码
ansible all --list-hosts

之后,使用ssh-keygen生成随机密钥对。(PS:ssh-keygen是linux下密钥管理工具。)

bash 复制代码
ssh-keygen -N "" -b 4096 -t rsa -C "tian" -f /root/.ssh/stanley.rsa

密钥生成后,查看私钥信息;

bash 复制代码
cat /root/.ssh/stanley.rsa

之后,查看公钥信息;

bash 复制代码
cat /root/.ssh/stanley.rsa.pub

之后,把公钥发送给远程服务器上;

bash 复制代码
ssh-copy-id -i /root/.ssh/stanley.rsa root@远程服务器IP

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

bash 复制代码
cat /root/.ssh/authorized_keys

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

bash 复制代码
ssh -i /root/.ssh/stanley.rsa root@远程服务器IP

最后,当远程服务器操作完成后,可以使用exit命令退出远程服务器,切换回当前服务器;

至此,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的模块。

相关推荐
韩楚风1 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学1 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO1 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu71 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我1 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、1 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程1 小时前
Linux中环境变量
linux
我是哈哈hh2 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈2 小时前
C++——模板进阶、继承
java·服务器·c++
挥剑决浮云 -2 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记