Linux Ansible安装以及环境搭建

news2024/11/24 5:43:20

Ansible介绍

Ansible是一种基于Python的自动化配置工具,通过OpenSSH的方式管理被管理节点,实现批量系统配置、批量程序部署、批量运行命令等功能。

当管理节点需要管理被管理节点时,只需要在管理节点安装ansible,无需在被管理节点安装客户端程序;

Ansible架构

Host Inventory             资产清单;定义了被管理主机

Playbooks                    剧本;可以将多个任务定义到剧本中,由ansible自动执行

Core Modules              核心模块;ansible自带的模块(例如yum模块、user模块等)

Custon Modules          扩展模块;对核心模块的补充,完成核心模块无法完成的任务

Plugins                        插件;ansible借助插件完成记录日志、邮件等功能

Connection Plugins      连接插件;负责管理节点和被管理节点实现通信

Ansible节点类型

管理节点

 管理节点通过ssh的方式和被管理节点建立通信

 1、管理被管理节点(在资产清单内定义的就是被管理节点)

 2、定义任务(可以通过add-hoc临时命令、playbook剧本、role角色等方式定义任务)

 2、下发任务(将管理节点上定义的任务下发到被管理节点)

被管理节点

 需要开启ssh服务,能够被 管理节点 访问到

 1、执行管理节点下发的任务

 2、提供应用访问

Anisble配置文件

Ansible的全局配置文件为/etc/ansible/ansible.cfg

普通用户的Ansible的配置文件为~/etc/ansible/ansible.cfg(优先级高)

Ansible任务执行情况

Ansible任务的执行结果通过json格式显示

Success代表执行的结果是正确的,但并不单表此任务是有效的,具体通过颜色来判断任务的执行的情况

黄色:被管理主机已经成功执行了下发的任务,并且伴随着状态的改变

绿色:被管理主机已经成功执行了下发的任务,但是没有状态改变

表示遵循Ansible的幂等性(表示执行一次或者多次不会产生副作用),例如:任务要求安装apache服务,如果被管理节点已经安装的apache服务,则此被管理节点执行此任务的结果就是绿色的;任务能够执行,但是没有去执行,即任务无效

红色:执行失败

Ansible相关命令

ansible  		        Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
    ansible --version              查看ansible版本
    ansible -m                     指定调用的模块名称
    ansible -v 	    显示任务结果
                    -vv  显示任务结果、任务配置
					-vvv 显示被管理主机连接信息
					-vvvv 增加连接插件相关的额外详细程度选项(包含受管主机上用于执行脚本的用户和所执行的插件)

    ansible -a                     调用模块的某些参数
    ansilbe -c                     测试命令执行结果,不实际执行
    ansible -u                     指定执行命令的客户端
    ansilbe -i                     指定访问的主机列表文件

ansible-doc                 Ansible 模块功能查看工具
    ansible-doc -l                  列出ansible所有模块
    ansible-doc -s 模块名           查看模块的参数信息

ansible-galaxy  		      下载/上传优秀代码或Roles模块 的官网平台,基于网络的
ansible-playbook  	      Ansible 定制自动化的任务集编排工具
ansible-inventory --list     查看默认资产清单的内容
ansible-pull  		     Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)
ansible-vault  		     Ansible 文件加密工具
ansible-console  	         Ansible基于Linux Consoble界面可与用户交互的命令执行工具

Ansible环境搭建

配置管理节点到被管理节点的ssh免密

在管理节点上生成私钥,然后发放给被管理节点,实现ssh免密

在管理节点配置
ssh-keygen  生成私钥
ssh-copy-id root@被管理节点

如果出现ssh-copy-id: command not found报错,则说明缺乏openssh-clientsansible包,通过yum安装此包就可以

安装Ansible

一般基于普通用户进行ansible管理,所以以下重点介绍普通用户的ansibke环境搭建

安装ansible不需要在客户端去安装,只需要在管理节点安装

基于root用户安装ansible

yum info ansible             基于root用户查看ansible是否安装
yum install -y ansible       基于root用户安装ansible

基于普通用户安装ansible(普通用户要有sudo权限)

sudo yum info ansible         基于普通用户查看ansible是否安装
sudo yum install -y ansible   基于普通安装ansible

ansible --version            查看ansible的版本

创建Ansible相关文件

基于普通用户创建一套Ansible架构(即文件的所有者为普通用户)

1、创建基于用户的主配置文件ansible.cfg(定义ansible相关配置)

 进入到普通用户下

 cd ~

 mkdir ansible

 cd ansible

  cp /etc/ansible/ansible.cfg .   将配置文件复制到家目录下

2、创建资产清单文件inventory(存放被管理节点,有静态的和动态的)

动态的资产清单需要结合CMDB实现,目前创建基于静态的

cd ~/ansible
touch inventory  创建文件名为inventory的文件(文件名自定义,后续在ansible配置文件需要指定)

3、创建未来用于角色的roles目录(存放角色,简化任务的创建)

cd ~/ansible
mkdir roles         创建roles目录(目录名自定义,后续在ansible配置文件需要指定)

配置ansible.cfg文件

关键配置(一般会做修改)

inventory =/home/student/ansible/inventory 指定资产清单的路径(就是之前创建的inventory文件的路径)
ask_pass = Fasle                          是否提示输入ssh密码(当使用公钥认证时,可以时false)
roles_path=/home/student/ansible/roles    指定角色目录的路径(就是之前创建的roles目录的路径)
remote_user = devops                      playbook默认远程用户,管理节点使用此管理节点上的此用户去管理被管理节点,向其下发任务,被管理节点也是用的此用户去执行任务(即管理节点和被管理节点都需要有此用户,并且需要sudo权限)


[privilege_escalation]
become=True              连接到被管理节点后是否自动在被管理主机上切换用户
become_method=sudo       切换用户的方式为sudo(也可以是su)
become_user=root         在被管理节点上切换到哪个用户(默认为root)
become_ask_pass=False    是否提示输入密码(默认是False)

以上配置表示连接到被管理节点的身份是devops(前提是被管理节点本地有devops用户,并且已经做了sudo的配置;如果没有就需要创建用户,并对此用户做sudo配置 )

非关键配置(一般不修改)

library    = /usr/share/my_modules/             ansible默认模块的位置
module_utils = /usr/share/my_module_utils/      ansible默认模块的位置
forks          = 5                              主机通信的默认并行进程数
poll_interval  = 15                             异步执行任务时,每15s查一次任务状态
sudo_user     = root                   提权到root用户(被管理节点登录到管理节点时使用的身份)
remote_port    = 22                    远程端口号
host_key_checking = False              配置主机是否进行ssh密钥对的检测
timeout = 10                           配置ssh连接超时时间

在被管理节点验证是否有devops用户,并且此用户是否有sudo权限

id devops
cd /etc/sudoers.d/  查看此目录下sudo的配置(也可以直接通过visudo命令查看)

配置资产清单文件

Ansible允许有多个资产清单文件,优先级如下

 当前路径下 > 家目录下 > etc目录下

基于IP/域名/主机名的形式

cd ~/ansible
vim inventory  编辑资产清单文件
    172.16.1.1
    172.16.1.2

基于组的形式

通过设置组的形式来配置资产清单(自定义分类,可以按照功能分、位置分等)

并且还支持组可以再包含组(组嵌套)

组形式:用中括号来指定组,组下再添加主机名、FQDN、IP地址等

例如:

cd ~/ansible
vim inventory  编辑资产清单文件
 [ftpserver]
 node1

 [webserver]           webserver组包含主机名为node3主机
 node3

 [servers:children]   servers组包含webserver组和ftpserver组
 webserver
 ftpserver

验证测试资产清单

ansible命令测试

ansible servers -m ping             对属于servers组内的主机进行ping
ansible all -m ping                 对默认资产清单内的所有主机进行ping
ansible all -i 资产清单路径 ping     对特定的资产清单内的所有主机进行ping

注意:使用ansible的ping模块进行ping被管理的主机时,必须是资产清单已经存在的,并且名称要一致

ansible-inventory命令测试

ansible-inventory -i 资产清单文件位置 --list       查看指定资产清单文件的内容

ansible-inventory --list                         查看默认资产清单文件的内容

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

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

相关文章

23种设计模式-代理模式

代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 介绍 意图:为其他对象提供…

【KingSCADA】什么是精灵图以及如何创建精灵图

大家好,我是雷工! 本篇学习精灵图的制作,以下为学习内容及相关笔记。 一、什么是精灵图 精灵图是一种在外观上类似组合图,但内部嵌入了比较丰富的动画链接与逻辑控制,工程开发人员只要将其从精灵图库中调出来放置在开…

[Netty] Mpsc Queue (十七)

JCTools 是适用于 JVM 并发开发的工具,主要提供了一些 JDK 确实的并发数据结构,例如非阻塞 Map、非阻塞 Queue 等。其中非阻塞队列可以分为四种类型,可以根据不同的场景选择使用。 Spsc 单生产者单消费者Mpsc 多生产者单消费者Spmc 单生产者…

大模型(LLM)训练微调综述学习

总览 介绍大模型训练的微调方法,包括prompt tuning、prefix tuning、LoRA、p-tuning和AdaLoRA等。介绍使用deepspeed和LoRA进行大模型训练的相关代码。给出petals的介绍,它可以将模型划分为多个块,每个用户的机器负责其中一块,分…

PS学习记录-PPI与DPI

先说两者的重点: dpi是印刷图像时候用的,ppi是设计图像时候用的dpi:【点/英寸】 是印刷计量单位,是每英寸上所印刷的【墨点数】,打印图片一般300dpi左右,代表打印的解析度。ppi:【像素/英寸】是…

快速精通Git

一、 版本控制工具 1.1. 什么是版本控制系统? 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且…

温度调制式差示扫描量热法(MTDSC)中的正弦波温度控制技术

摘要:在调制温度式差式扫描量热仪(MTDSC)中,关键技术之一是正弦波加热温度的实现,此技术是制约目前国内无法生产MTDSC量热仪的重要障碍,这主要是因为现有的PID温控技术根本无法实现不同幅值和频率正弦波这样…

uie-base使用记录(paddlenlp)

参考文章:https://aistudio.baidu.com/aistudio/modelsdetail?modelId22 参考文章:https://paddlenlp.readthedocs.io/zh/latest/FAQ.html 参考文章:https://developer.aliyun.com/article/1066857 参考文章:https://github.com/…

【计算机基本原理-数据结构】八大数据结构分类

【计算机基本原理-数据结构】八大数据结构分类 1)数组2)链表3)队列4)栈5)树6)图7)堆8)散列表(哈希表) 数据结构是计算机存储、组织数据的方式。一种好的数据结构可以带来更高的运行或…

Java基础(十三)系统相关类

1. 系统相关类 1.1 java.lang.System类 System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象。其内部的成员变量和成员方法都是static的,所以也可…

Netty(一)深入Hotspot源码与Linux内核理解NIO与Epoll

深入Hotspot源码与Linux内核理解NIO与Epoll 前言介绍Netty 的介绍Netty 的应用场景理解阻塞和同步关键字初始BIO、NIO、AIOBIO(Blocking IO)缺点:应用场景: NIO(Non Blocking IO)应用场景:NIO非阻塞代码示例存在的问题 NIO 有三大核心组件&am…

Mybatis学习基础篇(一)——使用Maven快速搭建一个mybatis项目,并实现简单的增删改查

题外话: 在了解mybatis框架之前,我先说明一句,目前主流的框架技术层出不穷,每个人都有自己喜欢的技术框架,自己喜欢用就行。技术并没有高低之分,喜欢用就用,虽然目前大部分人都喜欢向新技术看齐…

flex布局下两端对齐,不满左对齐

文章目录 解决方案一 (利用父级的 :after 占位)解决方案二(利用:last-child和:nth-child()占位)解决方案三(补位添加节点法,这种方案适用于多种排列方式) 问题情境: 在flex布局下,多行排列,如何让flex布局最后一行没有排满时&…

如何构建适合自己的DevOps软件测试改进方案

根据2022年的DevOps全球调查报告显示,主流软件企业采用或部分采用DevOps且已获得良好成效的占比已达70%,DevOps俨然成为当下软件开发研究的重要方向。 测试作为软件开发的必要过程,是提升软件可靠性、保证软件质量的关键环节。然而&#xff…

上海亚商投顾:沪指失守3300点 传媒、游戏板块逆市大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日继续调整,沪指午后跌超1%,失守3300点整数关口,创业板指一度跌逾2%…

基于PWM技术的三相光伏逆变器研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 在上一讲开发环境搭建中,我们讲解了如何搭建Ubuntu系统环境和ROS2开发运行环境。 1.Ubuntu系统安装 2.ROS2系统环境安装 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 查看帮助&am…

[网络原理] 详解Cookie与Session

做好准备,迎接所有的成功吧 文章目录 1. Cookie的概念2. Session的概念3. Cookie与Session的关联与区别3.1 关联3.2 区别 4. Cookie与Session中的核心方法 1. Cookie的概念 Cookie是用户首次登陆网站成功之后,对应页面的服务器会返回给用户一个身份标识,被保存在用户主机的硬盘…

无人机视频与GIS融合三维实景怎么实现?

无人机视频与GIS融合三维实景怎么实现?无人机三维GIS作为一项新兴的测绘重要手段,具有续航时间长、成本低、机动灵活等优点,为城市的规划建设带来极大便利。 那么此项技术有什么样的特点呢?下面智汇云舟就带大家一起来了解一下。 三维是将采集以及经运…

leetcode 1416. Restore The Array(恢复数组)

一台打印机没有把空格打印出来,以至于不知道打印出的 s 中到底有哪些数字。 现在知道数字的取值范围在1 ~ k, 数字开头不能是0. 返回可能的数字个数。取模1097. 思路: DP 假设dp[ i ]为 i ~ n位的s 所能组成的数字组合数。 从右到左遍历,…