【服务器部署篇】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的模块。

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux