ansible基础教程(上)

一、介绍:

Ansible是一款用于软件配置、配置管理和软件部署的开源自动化和编排工具。相比于其它的工具,Ansible的安装更加简单、易于使用。通过SSH到客户端的方式进行连接,因此它不需要在客户端有特殊的代理,并且通过将模块推送到客户端,模块然后在客户端本地执行,并将输出推送回 Ansible 服务器。

由于它使用 SSH,因此可以非常轻松地使用 SSH 密钥连接到客户端,从而简化整个过程。客户端详细信息(如主机名或 IP 地址和 SSH 端口)存储在称为清单文件的文件中。创建清单文件并填充后,ansible 就可以使用它了。

二、优势:

Ansible相比于其他的自动化工具,具有以下优点:

  1. 开源免费,所有人都可以使用。

  2. 基于YAML语法编写剧本(相当于shell的自动化脚本),被称为playbook,YAML 语法简洁、易读,具有良好的层次结构。以下是一个简易部署Apache的playbook

    - name: Install and start Apache
      hosts: web_servers
      tasks:
        - name: Install Apache package
          yum:
            name: httpd
            state: present
        - name: Start Apache service
          service:
            name: httpd
            state: started

    这个 Playbook 首先定义了任务名称(name),然后指定了目标主机组(hosts),接着列出了具体的任务(tasks),包括安装软件包(yum模块)和启动服务(service模块)。

  3. Ansible 不需要在被管理的节点上安装额外的代理软件。它通过 SSH(Secure Shell)协议来连接和管理目标主机,这使得 Ansible 的部署更加简单和快速。与一些需要在每个节点上安装代理才能工作的自动化工具相比,Ansible 减少了额外的配置和维护工作。

  4. 丰富的内置模块:Ansible 提供了大量的内置模块,可以用于各种系统管理任务,如软件包管理、文件操作、用户管理、服务管理等。以软件包管理为例,对于基于 Debian 的系统有apt模块,对于基于 Red Hat 的系统有yum模块。这些模块可以轻松地安装、升级或删除软件包。

  5. 易于扩展模块:除了内置模块,Ansible 还允许用户通过自定义模块来扩展其功能。用户可以使用 Python 或其他编程语言编写自定义模块,以满足特定的自动化需求。

  6. 并行执行任务:Ansible 可以在多个目标主机上并行地执行任务,这大大提高了自动化操作的效率。它能够根据目标主机的数量和系统资源自动调整并行度,从而在短时间内完成大规模的部署或配置任务。

  7. 任务依赖管理:Playbooks 支持定义任务之间的依赖关系。这意味着可以指定某些任务必须在其他任务完成之后才能执行,确保自动化流程的顺序和逻辑正确性。

  8. 动态主机清单(Inventory):Ansible 的主机清单是一个灵活的配置文件,用于定义要管理的目标主机。主机清单可以是静态的(手动编辑主机列表和相关变量),也可以是动态的。动态主机清单可以通过脚本或其他方式从外部数据源(如云服务提供商的 API、配置管理数据库等)获取主机信息,使得 Ansible 能够轻松地适应不断变化的基础设施环境。

  9. 主机变量和组变量:在主机清单中,可以为每个主机或主机组定义变量。这些变量可以用于定制化任务执行,例如根据不同主机的操作系统版本或硬件配置来执行不同的操作。

三、安装:

在Centos中安装Ansible

# rpm包安装:
EPEL源 
yum install -y epel-release 
yum install -y ansible  

查看版本信息

ansible-doc --version

修改配置文件

/etc/ansible/hosts

可以在最后面添加如下

[test]         此处表示受控节点ip
192.168.119.134

[all]           此处表示所有节点的ip,前者为主控节点,后者为受控节点
192.168.119.182
192.168.119.134

可以使用ansible all --list-hosts命令查看所有的主机

ect/ansible/ansible.cfg

将该文件内的如下内容取消注释

去掉第一次连接ssh ask确认

开启记录日志

生成密钥,并将主控节点的密钥发送给受控节点

ssh-keygen

远程连接受控节点

ssh root@192.168.119.134

可以看到已经连接到受控节点,接下来设置免密登录

ssh-copy-id root@192.168.119.134

可以看到不需要输入密码,直接就可以连接受控节点

接下来进行主机连通性测试

ansible all -m ping

可以看到受控节点成功连通,但是主控节点却显示失败,原因是主控节点没有设置免密登录,接下来设置主控节点免密登录

将主控节点做免密登录之后再次测试连通性,这次全部都显示成功。

四、命令详解:

1.命令集:

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

2.anible-doc命令:

ansible-doc -l #获取全部模块的信息 
ansible-doc -s MOD_NAME #获取指定模块的使用帮助

例如查看mysql有哪些模块

ansible-doc -l |grep mysql

3.ansible命令详解:

-a MODULE_ARGS   #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
-k,--ask-pass #ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证
--ask-su-pass #ask for su password。su切换密码
-K,--ask-sudo-pass #ask for sudo password。提示密码使用sudo,sudo表示提权操作
--ask-vault-pass #ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS #后台运行超时时间
-C #模拟运行环境并进行预运行,可以进行查错测试
-c CONNECTION #连接类型使用
-f FORKS #并行任务数,默认为5
-i INVENTORY #指定主机清单的路径,默认为/etc/ansible/hosts
--list-hosts #查看有哪些主机组
-m MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
-o #压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S #用 su 命令
-R SU_USER #指定 su 的用户,默认为 root 用户
-s #用 sudo 命令
-U SUDO_USER #指定 sudo 到哪个用户,默认为 root 用户
-T TIMEOUT #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER #远程用户,默认为 root 用户
-v #查看详细信息,同时支持-vvv,-vvvv可查看更详细信息

五、模块:

1.定义

Ansible 模块是 Ansible 用于执行特定任务的独立脚本单元。这些模块是用 Python 等编程语言编写的(Ansible 核心是用 Python 实现的,大多数模块也是 Python 脚本),它们被 Ansible 引擎发送到目标主机上运行,以实现各种系统管理和自动化任务。

2.常用模块:

commond模块:

这个模块可以直接在远程主机上执行命令,并将结果返回本主机。

ansible test -m command -a 'touch 2.sh'

该条命令的意思是把test清单中的服务器执行touch命令创建文件,我们在test清单中的服务器查看是否创建成功

可以看到是创建成功的,这里的警告意思是让我们通过playbook的格式,不过这里为了测试,可以忽略。

下面来看看该模块下常用的几个命令:

chdir       # 在执行命令之前,先切换到该目录
executable # 切换shell来执行命令,需要使用命令的绝对路径
free_form   # 要执行的Linux指令,一般使用Ansible的-a参数代替。
creates  # 一个文件名,当这个文件存在,则该命令不执行,可以
用来做判断
removes # 一个文件名,这个文件不存在,则该命令不执行

以下对这些命令进行示例

ansible test -m command -a 'chdir=/root/ touch 3.sh'

该命令表示先切换目录到/root/,之后再执行touch命令,再test服务器上查看,可以看到创建成功

ansible test -m command -a 'creates=/root/3.sh touch 4.sh'

该命令的意思是如果3.sh文件存在,则不执行touch命令,起到一个判断作用,查看以下test服务器,可以看到确实没有创建4.sh

ansible test -m command -a 'removes=/root/3.sh touch 4.sh'

该命令与上条命令意义相反,表示3.sh文件存在则执行touch命令

再test上查看是否创建成功

可以看到创建成功。

更多模块将在下次进行学习上传。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

典型常见的知识蒸馏方法总结一

来源:https://github.com/HobbitLong/RepDistiller收录的方法 NeurIPS2015: Distilling the Knowledge in a Neural Network 知识蒸馏开山之作,从logits中蒸馏知识,KL散度损失 ICLR2015:FitNets: Hints for Thin Deep Nets A h…

挑战用React封装100个组件【010】

Hello,大家好,今天我挑战的组件是这样的! 今天这个组件是一个打卡成功,或者获得徽章后的组件。点击按钮后,会弹出礼花。项目中的勋章是我通过AI生成的,还是很厉害的哈!稍微抠图直接使用。最后面…

【Liunx篇】基础开发工具 - yum

文章目录 🌵一.Liunx下安装软件的方案🐾1.源代码安装🐾2.rpm包安装🐾3.包管理器进行安装 🌵二.软件包管理器-yum🌵三.yum的具体操作🐾1.查看软件包🐾2.安装软件包🐾3.卸载…

MongoDB的简单使用

MongoDB(文档数据库)的简单使用 MongoDB最好的学习资料就是他的官方文档:SQL 到 MongoDB 的映射图表 - MongoDB 手册 v8.0 1.MongoDB CRUD操作 1.1Insert操作 基本方法: db.collection.insertOne() 将单个文档(document)插入集合中 db.collectio…

【射频IC进阶实践教程】2.6 LNA版图设计及DRC/LVS验证

射频集成电路的版图设计非常关键,他对寄生参数非常敏感,需要使其最小化。还需要注意相互耦合的方式本次课程主要介绍射频IC的一些相关布局和连线方面的考虑。 一、版图设计 1. 版图的元件布局 首先打开对应的原理图 点击进行版图设计 由于已经有做好的…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签(Tag)时,通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南,帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

超融合承载 PostgreSQL 数据库和 AI 系统的性能评测|金融行业实践

随着人工智能技术的日渐成熟,不少金融用户也开发了自己的 AI 应用系统,协助实际业务中诸如文字识别、图像转换、信息录入等工作,提升业务效率。不过,AI 应用系统普遍依赖 GPU 提供强大算力,对底层存储的性能也有较高的…

数据结构代码归纳

线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); } …

华为的USG6000为什么不能ping通

前言: 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章,感觉写作业更有意思,可以了解新的知识 内容: 首先看毒文章是这样说的,华为的防火墙是…

“量子跃迁与数据织网:深入探索K最近邻算法在高维空间中的优化路径、神经网络融合技术及未来机器学习生态系统的构建“

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

VTK编程指南<三>:基于VTK入门程序解析来理解VTK基础知识

1、VTK入门程序 下面是一个完整的Vtk入门程序&#xff0c;我们基于这个程序来对VTK的基本知识进行一个初步了解。 #include <iostream>#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built with vtkRenderingOpenGL2 VTK_MODULE_INI…

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车&#xff0c;搭载N62B48B发动机&#xff0c;累计行驶里程约为26万km。车主反映&#xff0c;发动机偶尔无法起动&#xff0c;故障频率较低&#xff0c;十几天出现1 次&#xff0c;且故障出现时起动机不工作。 故障诊断  接车后试车&#xff0c;…

Kafka单机及集群部署及基础命令

目录 一、 Kafka介绍1、kafka定义2、传统消息队列应用场景3、kafka特点和优势4、kafka角色介绍5、分区和副本的优势6、kafka 写入消息的流程 二、Kafka单机部署1、基础环境2、iptables -L -n配置3、下载并解压kafka部署包至/usr/local/目录4、修改server.properties5、修改/etc…

python中的列表、元组、字典的介绍与使用

目录 一、区别介绍 1.使用场景以及区别图 2.详细介绍 列表 元组 字典 二、例子操作 (一)列表list 1.定义和初始化 2.访问元素&#xff08;下标&#xff09; 3.修改元素&#xff08;下标&#xff09; 4.添加元素&#xff08;append、下标insert&#xff09; 5.删除…

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时&#xff0c;会发现网络连接受限&#xff0c;或无法正常访问互联网。这种情况不仅影响了工作效率&#xff0c;还可能错过重要的信息。那么&#xff0c;究竟是什么原因导致了电脑WiFi连接受限呢&#xff1f;又该如何解决这一问题呢&#xff1f;小A今天就来教…

【技巧】Mac上如何显示键盘和鼠标操作

在制作视频教程时&#xff0c;将键盘和鼠标的操作在屏幕上显示出来&#xff0c;会帮助观众更容易地理解。 推荐Mac上两款开源的小软件。 1. KeyCastr 这款工具从2009年至今一直在更新中。 https://github.com/keycastr/keycastr 安装的话&#xff0c;可以从Github上下载最…

c++ map对其值排序

无法直接排序,转换成vector<std::pair<string,int>> #include <iostream> #include <map> #include <vector> #include <algorithm>// 用于排序的比较函数 bool compareByValue(const std::pair<std::string, int>& a, const …

调度器、闲逛进程

调度器、闲逛进程 一、调度器/调度程序二、闲逛进程 一、调度器/调度程序 ②、③由调度程序引起&#xff0c;调度程序决定&#xff1a; 让谁运行&#xff1f;-- 调度算法 运行多长时间&#xff1f;-- 时间片大小 调度时机 – 什么事件会触发“调度程序”&#xff1f; ∙ \bull…

第七节(1)、T型加减速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍步进电机T型加减速的控制方法&#xff0c;分2个小节&#xff0c;本小节主要内容为该控制方法的推导与计算&#xff0c;第二节对T型加减速进行了简化计算 一.加速阶段计算 1.1 计算时间与步数关系 根据位移公式可得&#xff1a; a n g l e 0 n ∗ s…

利用 360 安全卫士极速版关闭电脑开机自启动软件教程

在使用电脑的过程中&#xff0c;过多的开机自启动软件会严重拖慢电脑的开机速度&#xff0c;影响我们的使用体验。本教程中简鹿办公将详细介绍如何使用 360 安全卫士极速版关闭电脑开机自启动软件&#xff0c;让您的电脑开机更加迅速流畅。 一、打开 360 安全卫士极速版 在电…