Ansible-基础模块

news2024/11/18 21:42:22

目录

一 Ansible概述

1.Ansible是什么

2.为什么要学Ansible(特点)

二 Ansible的架构及运行机制

1.Ansible的架构

2.Ansible的运行机制

三 Ansible环境安装部署

1.控制节点安装ansible

2.Ansible目录结构

3.Ansible 命令行模块

(1) command 模块

 (2)shell模块

(3)cron 模块

 (4)user模块

 (5)group模块

(6)copy模块


一 Ansible概述

1.Ansible是什么

Ansible是一个基于Python开发的配置管理和应用部署工具,可以用于自动化部署、配置和管理计算机系统。它以简单性、可读性和灵活性为设计理念,使用SSH协议进行通信,并且不需要在被管理的计算机上安装任何额外的客户端软件。

2.为什么要学Ansible(特点)

  • 自动化部署和配置管理:Ansible使得软件部署和配置变得简单且可重复。通过编写Ansible脚本,可以定义和描述所需的系统配置,并自动应用到多台计算机上。这可以大大减少手动操作的时间和错误,并提高系统的一致性和可靠性。

  • 简单易学:相比其他自动化工具,Ansible的学习曲线相对较低。它采用基于文本的配置语言(YAML)和简单的任务模块,易于理解和编写。

  • 平台无关性:Ansible是基于SSH协议进行通信的,因此可以在各种不同的操作系统和云平台上运行。

  • 扩展性和灵活性:Ansible具有丰富的模块库和插件生态系统,可以满足各种不同场景下的自动化需求。

  • 社区支持和广泛应用:Ansible拥有庞大的开源社区支持,并且得到了广泛的应用。无论是小型项目还是大型企业环境,Ansible都被广泛使用于系统管理、应用部署、配置管理等方面。


二 Ansible的架构及运行机制

1.Ansible的架构

在Ansible中,数据的流向可以概括为以下几个部分:

  • 控制节点到被控制节点:控制节点是运行Ansible的主机,它通过SSH协议与被控制节点建立连接。控制节点将任务和命令发送到被控制节点,并接收执行结果。

  • 主机清单到控制节点:主机清单文件列出了被控制节点的连接信息,包括主机名或IP地址、SSH用户名和密码等。控制节点读取主机清单文件,获取被控制节点的信息,以便建立与被控制节点的连接。

  • Playbook到控制节点和被控制节点:Playbook是一个YAML文件,定义了自动化流程、任务和主机清单的组合。控制节点读取Playbook文件,解析其中的任务和主机清单信息,并将任务和命令发送到相应的被控制节点。

  • 模块和插件的数据传输:Ansible使用各种模块和插件来实现不同的任务。数据在控制节点和被控制节点之间通过SSH协议传输。例如,当执行文件复制任务时,控制节点将文件发送到被控制节点,或者从被控制节点获取文件。

总体上,数据从控制节点流向被控制节点,包括命令、任务、文件等。控制节点负责解析和发送数据,而被控制节点负责执行任务并返回执行结果。这种数据流向使得Ansible可以实现自动化管理和配置的目标主机。

2.Ansible的运行机制

Ansible的运行机制是基于控制节点和被控制节点之间的通信,控制节点是运行Ansible的主机,被控制节点是需要管理和配置的目标计算机,主机清单文件列出了所有被控制节点的连接信息,模块定义了要执行的任务,Playbook定义了整个自动化流程,Ansible通过SSH协议连接到被控制节点,并在每个节点上依次执行相应的任务。Ansible的运行机制简单高效,适用于大规模环境和复杂的自动化需求。


三 Ansible环境安装部署

控制节点192.168.27.30                                                ansible
被控制节点192.168.27.40
被控制节点192.168.27.50

1.控制节点安装ansible

(1)安装epel源、ansible

yum install -y epel-release
yum install -y ansible

(2)配置主机清单

cd /etc/ansible 

 vim hosts       

[webservers]        #配置组名
192.168.27.10       #组里包含的被控制的主机IP地址或主机名(主机名需要先修改/etc/hosts文件)

[dbservers]
192.168.27.20

(3)配置密钥对验证

ssh-keygen -t rsa		#一路回车,使用免密登录
sshpass -p '123456' ssh-copy-id root@192.168.27.10
sshpass -p '123456' ssh-copy-id root@192.168.27.20 

2.Ansible目录结构

/etc/ansible/                    
├── ansible.cfg         
├── hosts              
└── roles/               

  • /etc/ansible/:默认的Ansible配置文件和相关文件存放目录。
  • ansible.cfg:Ansible的配置文件,用于配置一些全局参数,例如SSH连接参数、默认的远程用户等。这个文件一般无需手动修改,除非需要特别定制Ansible的行为。
  • hosts:Ansible的主机清单文件,用于存储需要管理的远程主机的相关信息,例如主机名、IP地址、SSH用户名和密码等。这个文件是必需的,因为Ansible需要知道要连接哪些主机,并在这些主机上执行任务。
  • roles/:Ansible的角色目录,用于存放可重用的Playbook代码和任务模板。一个角色可以包含多个任务和变量,可以被多个Playbook共享和复用。角色目录结构包括tasks、handlers、templates、files、vars、defaults、meta等子目录,用于组织和管理角色的不同部分。

3.Ansible 命令行模块

(1) command 模块

在远程主机执行命令,不支持管道,重定向等shell的特性。

ansible-doc -s command        #-s 列出指定模块的描述信息和操作动作

ansible webservers -m command -a 'date'	        #指定组执行 date       
ansible all -m command -a 'date'				#all 代表所有 hosts 主机
ansible all -a 'ls /'							#如省略 -m 模块,则默认运行 command 模块
ansible 192.168.27.40 -m command -a 'date'		#指定 ip 执行 date

命令格式:ansible <组名> -m <模块> -a <参数列表>

常用的参数:

  • chdir:在远程主机上运行命令前提前进入目录。
  • creates:判断指定文件是否存在,如果存在,不执行后面的操作。
  • removes:判断指定文件是否存在,如果存在,执行后面的操作。

 (2)shell模块

在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)。

ansible dbservers -m shell -a 'echo 123456| passwd --stdin work'

(3)cron 模块

在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。

ansible-doc -s cron				#按 q 退出

ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'name="test crontab" state=absent'			
#移除计划任务,假如该计划任务没有取名字,name=None即可

常用的参数:

  • minute/hour/day/month/weekday:分/时/日/月/周
  • job:任务计划要执行的命令
  • name:任务计划的名称

 (4)user模块

用户管理的模块

ansible-doc -s user

ansible dbservers -m user -a 'name="work01"'				#创建用户work01
ansible dbservers -m command -a 'tail /etc/passwd'
ansible dbservers -m user -a 'name="work01" state=absent'	#删除用户work01

常用的参数:

  • 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时,是否删除用户的家目录

 (5)group模块

用户组管理的模块

ansible-doc -s group

ansible dbservers -m group -a 'name=mysql gid=306 system=yes'	#创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=work01 uid=306 system=yes group=mysql'	
#将work01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id work01'    

(6)copy模块

用于复制指定主机文件到远程主机的。

ansible-doc -s copy

常用的参数:

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

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

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

相关文章

强化学习(二)多臂老虎机 “Multi-armed Bandits”——1

将强化学习与机器学习、深度学习区分开的最重要的特征为&#xff1a;它通过训练中信息来评估所采取的动作&#xff0c;而不是给出正确的动作进行指导&#xff0c;这极大地促进了寻找更优动作的需求。 1、多臂老虎机&#xff08;Multi-armed Bandits&#xff09;问题 赌场的老虎…

解析Transformer模型

原文地址&#xff1a;https://zhanghan.xyz/posts/17281/ 进入Transformer RNN很难处理冗长的文本序列&#xff0c;且很容易受到所谓梯度消失/爆炸的问题。RNN是按顺序处理单词的&#xff0c;所以很难并行化。 用一句话总结Transformer&#xff1a;当一个扩展性极佳的模型和一…

全链路压力测试:现代软件工程中的重要性

全链路压力测试不仅可以确保系统在高负载下的性能和稳定性&#xff0c;还能帮助企业进行有效的风险管理和性能优化。在快速发展的互联网时代&#xff0c;全链路压力测试已成为确保软件产品质量的关键步骤。 1、测试环境搭建 测试应在与生产环境尽可能相似的环境中进行&#xff…

RabbitMQ 部署与配置[CentOS7]

# RabbitMQ,Erlang 版本包对应 https://rabbitmq.com/which-erlang.html#eol-seriescd /usr/local/src# Erlang下载 # https://github.com/rabbitmq/erlang-rpm/releases https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.5/erlang-23.3.4.5-1.el7.x86_64.rp…

Spring 核心之 IOC 容器学习一

IOC 与 DI IOC(Inversion of Control)控制反转&#xff1a;所谓控制反转&#xff0c;就是把原先我们代码里面需要实现的对象创建、依赖的代码&#xff0c;反转给容器来帮忙实现。那么必然的我们需要创建一个容器&#xff0c;同时需要一种描述来让容器知道需要创建的对象与对象…

【探索C++容器:vector的使用和模拟实现】

【本节目标】 1.vector的介绍及使用 2.vector深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vertor文档介绍 1. vector是表示可变大小数组的序列容器。2. 就像数组一样&#xff0c;vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元…

时间触发以太网TTE交换机混合流量测试方法

在本世纪初&#xff0c;TTE最早是由维也纳科技大学Hermann Kopetz 赫尔曼科佩茨教授等人提出来的&#xff0c;在国际上比较知名的TTE开发机构主要是以奥地利的TTTech公司为主&#xff0c;尔曼科佩茨教授是该公司的创始人之一&#xff0c;这家公司是将教授的理论进行了产业化应用…

iOS原生应用屏幕适配完整流程

1. 已iPhone 11 布局为设计布局,其他机型已这个来适配 2.变量与控件对应关系 txtViewer: txtAccount txtpwd seg btnOk 3.适配方法实现: //iOS屏幕适配 -(vo

深度求索开源国内首个 MoE 大模型 | DeepSeekMoE:在专家混合语言模型中实现终极专家专业化

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在大语言模型时代&#xff0c;混合专家模型&#xff08;MoE&#xff09;是一种很有前途的架构&#xff0c;用于在扩展模型参数时管理计算成本。然而&a…

【文本到上下文 #5】:RNN、LSTM 和 GRU

一、说明 欢迎来到“完整的 NLP 指南&#xff1a;文本到上下文 #5”&#xff0c;这是我们对自然语言处理 &#xff08;NLP&#xff09; 和深度学习的持续探索。从NLP的基础知识到机器学习应用程序&#xff0c;我们现在深入研究了神经网络的复杂世界及其处理语言的深刻能力。 在…

java springcloud中发布webservice 接口

java springcloud中发布webservice 接口 一、在pom文件中添加依赖&#xff1a; <!--webservice--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version></dependen…

Hardware-Aware-Transformers开源项目笔记

文章目录 Hardware-Aware-Transformers开源项目笔记开源项目背景知识nas进化算法进化算法代码示例 开源项目Evolutionary Search1 生成延迟的数据集2 训练延迟预测器3 使延时约束运行搜索算法4. 训练搜索得到的subTransformer5. 根据重训练后的submodel 得到BLEU精度值 代码结构…

干货满满!MES系统的功能及实施

万界星空科技MES系统的主要功能&#xff1a; &#xff08;1&#xff09;生产资源分配与监控&#xff1b; &#xff08;2&#xff09;作业计划和排产&#xff1b; &#xff08;3&#xff09;工艺规格标准管理&#xff1b; &#xff08;4&#xff09;数据采集&#xff1b; &…

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 蓝凌EIS智慧协同平台frm_form_upload.aspx接…

建筑能耗管理系统的解决方案研究

为什么要做能耗监测&#xff1f; 节约能源、降低成本 可帮助企业准确掌握能源的使用情况&#xff0c;找出能源浪费的地方&#xff0c;进而采取针对性措施减少能源的消耗。从而企业可降低能源成本&#xff0c;提高盈利能力。 提高能源利用效率 可帮助企业掌握那些设备消耗了…

助力工业园区作业违规行为检测预警,基于YOLOv5【n/s/m/l/x】全系列参数模型开发构建工业园区场景下作业人员违规行为检测识别系统

在很多工业园区生产作业场景下保障合规合法进行作业生产操作&#xff0c;对于保护工人生命安全降低安全隐患有着非常重要的作用&#xff0c;但是往往在实际的作业生产中&#xff0c;因为一个安全观念的淡薄或者是粗心大意&#xff0c;对于纪律约束等意思薄弱&#xff0c;导致在…

Python编辑开发---pycharm pro 2023 中文

PyCharm Pro 2023是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在提高Python开发人员的生产力。它提供了智能代码编辑、实时代码分析和调试工具&#xff0c;支持版本控制和数据库工具&#xff0c;以及可扩展的插件系统。PyCharm Pro 2023可在多…

vue2嵌入高德地图选择地址后显示地址和经纬度

以高德地图为里&#xff0c;申请key&#xff0c;选择js api服务&#xff0c;获取key和密钥. vue2项目代码引入相关依赖&#xff1a; npm i amap/amap-jsapi-loader -S 封装成组件: <template><div><el-row :gutter"15" class""><…

Python项目——久坐提醒定时器(PySide6)编写

1、介绍 使用Python编写一个久坐提醒软件。功能&#xff1a; 设置工作时间。设置休息时间。选择休息时是否播放音乐。休息时&#xff0c;软件置顶&#xff0c;且不能关闭。 2、工具 语言&#xff1a;python3.11UI设计工具&#xff1a;Qt designer编译器&#xff1a;PyCharm包…

C#使用DateTime的Now静态属性动态获得系统当前日期和时间

目录 一实例 1.源码 2.生成效果 ​编辑 二、相关知识点 1. Thread类 &#xff08;1&#xff09;Thread.Sleep() &#xff08;2&#xff09;Thread(ThreadStart) &#xff08;3&#xff09;IsBackground &#xff08;4&#xff09;Invoke( &#xff09; 2. Create…