ansible实训-Day3(playbook的原理、结构及其基本使用)

news2025/1/11 17:45:54

一、前言

     该篇是对ansible实训第三天内容的归纳总结,主要包括playbook组件的原理、结构及其基本使用方式。

二、Playbook 原理

        Playbook是Ansible的核心组件之一,它是用于定义任务和配置的自动化脚本。

        Ansible Playbook使用YAML语法编写,可以描述在受管主机上执行的一系列任务和配置。Playbook定义了一个或多个剧本(play),每个剧本定义了一组任务,这些任务将在目标主机上执行。剧本中的任务按照定义的顺序依次执行。

        每个任务包含一个或多个模块,模块是Ansible的可重用功能单元,用于执行各种操作,例如文件操作、软件安装、服务管理等。每个模块接收参数,根据这些参数执行操作,并返回结果。可以根据需要在剧本中使用不同的任务和模块。

三、Playbook结构

        Playbook的结构一般包括以下内容:

        - `name`: Playbook的名称或描述
        - `hosts`: 定义要管理的主机或主机组
        - `vars`: 定义变量,用于在任务中传递参数和配置选项
        - `tasks`: 包含一个或多个任务的任务列表
        - `handlers`: 定义处理程序,用于在任务执行过程中处理特定的事件
        - `roles`: 定义可重用的角色,包含一组相关的任务和配置

        使用Ansible Playbook可以实现自动化的配置管理、软件部署、系统管理等任务。它具有简单易用、可读性强、可扩展性好等特点,并且与多种操作系统和云平台兼容。

        为了运行Playbook,可以使用`ansible-playbook`命令,并指定Playbook文件的路径。Ansible将解析Playbook文件,并在指定的主机上执行定义的任务和配置。

        Ansible Playbook是实现基础架构即代码(Infrastructure as Code)的有力工具,可以提高自动化管理的效率和可靠性。

四、实施Playbook步骤

Step1: 编写Ansible Playbook

        使用YAML格式编写,并按照剧本中指定的顺序列出任务列表和主机清单。

Step2:配置Ansible的主机清单

        在清单中指定要管理的受管主机,以及剧本中定义的主机组。

Step3:验证Ansible配置

        执行`ansible --version`确保Ansible版本已正确安装并显示预期的版本号。

Step4:在控制机上运行Playbook

        执行`ansible-playbook playbook.yml`运行Ansible剧本。`playbook.yml`是要运行的剧本文件的名称。

        然后,Ansible将读取剧本和主机清单,并在受管主机上运行指定的任务。在运行期间,Ansible将会输出有关操作的详细信息,包括成功和失败的任务、变量值和错误消息。

        需要注意的是,Ansible的行为取决于它与受管主机之间的连接方式。如果连接不安全,则可能会泄露敏感信息,并对受管主机和网络造成潜在的安全风险。因此,在实施Ansible Playbook时,请确保安全连接并采用最佳实践。

五、Playbook实操

        这里分别展示使用copy以及user模块进行playbook操作的流程。

(一)使用copy模块进行文件的复制操作

Step1:编写YAML格式的Ansible Playbook文件

        该命令格式如下:

```
- name: 复制文件
  hosts: all
  tasks:
    - name: 复制/ etc/ansible/ansible.cfg
      copy:
        src: /etc/ansible/ansible.cfg
        dest: /tmp/ansible.cfg
        owner: upwen
        group: upwen
        mode: '0444'
```

在上述Playbook中,包含了以下几个部分:

参数名参数作用
namePlaybook的名称或描述
hosts要管理的主机或主机组名称
tasks包含一个或多个任务的任务列表

        在这个Playbook中,包含有一个任务,用于将源文件`/etc/ansible/ansible.cfg`复制到目标文件`/tmp/ansible.cfg`。这个任务有以下几个部分:

参数名参数作用
name任务的名称或描述
copy表示使用`copy`模块来复制文件
src指定要复制的源文件,在这里是`/etc/ansible/ansible.cfg`
dest指定要复制到的目标路径,在这里是`/tmp/ansible.cfg`
owner指定文件所有者
group指定文件所属组
mode指定文件的权限

        当Ansible运行时,它将遍历指定的主机清单(`hosts`),针对每个主机执行每个任务。在该任务完成后,Ansible会输出结果,包括成功的任务和失败的任务。

Step2:配置Ansible的主机清单 

        配置ansible的主机清单如下:

Step3:验证ansible版本

        该步骤目的为确定ansible已正常安装,如果确定ansible已经正常安装则可以省略。 

Step4:执行该playbook剧本

        使用ansbile-playbook copy.yml 命令执行该剧本,执行完成后效果如图:

 (二)使用playbook的user模块进行用户的创建操作

 Step1:编写YAML格式的Ansible Playbook文件

        该命令格式如下:

```yaml
- name: 创建用户
  hosts: node1
  tasks:
    - name: 创建lisi用户
      user:
        name: lisi
        uid: '1600'
        comment: 学生lisi
        shell: /sbin/nologin
        state: present
```

在上述Playbook中,包含了以下几个部分:

参数名参数作用
namePlaybook的名称或描述
hosts要管理的主机或主机组名称
tasks包含一个或多个任务的任务列表

        在这个Playbook中,包含有一个任务,用于在主机上创建用户`lisi`。这个任务有以下几个部分:

参数名参数作用
name任务的名称或描述
user表示使用`user`模块来管理用户
name指定要创建的用户名,这里是`lisi`
uid指定用户的UID
comment指定用户的备注
shell指定用户的登录shell
state指定用户的状态,这里是`present`表示用户存在

        当Ansible运行时,在每个主机上执行每个任务,创建用户`lisi`。在任务完成后,Ansible会输出结果,包括成功的任务和失败的任务。

        请注意,确保在运行此Playbook时,你具有足够的权限来创建用户。另外,根据需要可以修改其他用户属性,例如密码、主目录等。详细了解Ansible的`user`模块,请参考Ansible官方文档。

 Step2:配置Ansible的主机清单 

        配置ansible的主机清单如下:

Step3:验证ansible版本

        该步骤目的为确定ansible已正常安装,如果确定ansible已经正常安装则可以省略。 

Step4:执行该playbook剧本

        使用ansbile-playbook user.yml 命令执行该剧本,执行完成后效果如图:

 

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

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

相关文章

Linux 学习记录42(C++篇)

Linux 学习记录42(C篇) 本文目录 Linux 学习记录42(C篇)一、class 类1. 类中的this指针(1. this指针的格式(2. 使用this指针 2. 类中特殊的成员函数(1. 构造函数>1 格式/定义>2 调用构造函数的时机>3 构造函数的初始化列表 (2. 析构函数>1 功能/格式>2 析构函数…

Redis的数据复制到另一台Redis

Redis的数据复制到另一台Redis 最近用到一个问题,需要把Redis的数据复制到另一台Redis,现在总结下解决问题的方法 解决方法一: redis-dump导出 [root ~]# redis-dump -u :password172.20.0.1:6379 > 172.20.0.1.jsonredis-load导入 [ro…

快速打造属于你的接口自动化测试框架

目录 1 接口测试 2 框架选型​​​​​​​ 3 环境搭建 4 需求 5 整体实现架构 6 RF用例实现​​​​​​​ 7 集成到CICD流程 总结: 1 接口测试 接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程…

Redis 高可用 RDB AOF

---------------------- Redis 高可用 ---------------------------------------- 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境…

基于Java人力资源管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

webassembly简单Demo——hello world

参考官网 Emscripten Tutorial 一、创建C/C文件 hello.c #include <stdio.h>int main() {printf("hello, world!\n");return 0; } 二、编译成html 命令行切到hello.c目录下&#xff0c;执行如下命令(注意需要em的环境变量&#xff0c;参考&#xff1a;emsr…

5G AI MEC智能制造数字化工业互联网大数据平台建设方案PPT

导读&#xff1a;原文《102页新一代数字化转型信息化总体规划方案PPT》共102页PPT&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&…

ARM-进入和退出异常中断的过程(六)

文章目录 ARM 处理器对异常中断的响应过程从异常中断处理程序中返回 ARM 处理器对异常中断的响应过程 ARM 指令为三级流水线&#xff1a;取地&#xff0c;译码和执行 进入中断的时候 LR PC -4 当出现异常时&#xff0c;ARM 内核自动执行以下操作 将 cpsr 寄存器的值保存到…

走近JDK 17,探索最新Java特性,拥抱未来编程!

大家好&#xff0c;我是小米&#xff0c;一个热爱技术分享的程序员。今天&#xff0c;我将为大家介绍一下JDK 17的新特性。JDK 17是Java开发工具包的一个重要版本&#xff0c;其中包含了许多令人激动的新功能和改进。在这篇文章中&#xff0c;我将详细介绍JDK 17中的各项特性&a…

Mathtype7Mac苹果ios简体中文版

对于很多人来说&#xff0c;每次编辑文字的时候遇到公式简直就是噩梦。像那些复杂的数学、物理还有化学公式&#xff0c;太难编辑出来了。 那么我们该怎么解决这些难题呢&#xff1f;其实很简单&#xff0c;用公式编辑器就行了。 公式编辑器&#xff0c;是一种工具软件&#…

前端开发爬虫首选puppeteer

很多前端同学可能对于爬虫不是很感冒&#xff0c;觉得爬虫需要用偏后端的语言&#xff0c;诸如 python 、php 等。当然这是在 nodejs 前了&#xff0c;nodejs 的出现&#xff0c;使得 Javascript 也可以用来写爬虫了。但这是大数据时代&#xff0c;数据的需求是不分前端还是后端…

基于Java会议管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

DSP f32 q15 q31 数据格式

+ V hezkz17进数字音频系统研究开发交流答疑 f32 q15 q31 分别代表什么数据格式? 2023/6/29 17:38:47 "f32"、"q15"和"q31"是不同的数据格式表示法: f32:它代表32位浮点数。在这种表示法中,32位被用来表示带有小数点的实数。其中,1位用于…

MySQL阿里巴巴规约

MySQL阿里巴巴规约 1.MySQL阿里巴巴规约【转载】 1.MySQL阿里巴巴规约【转载】

一步一步学OAK之十一:实现在RGB相机上进行对象跟踪

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4:定义和加载模型相关的路径和标签Setup 5: 创建pipelineSetup 6: 创建节点Setup 7: 设置属性设置相机属性设置神经网络节点属性设置物体跟踪对象属性 Setup 8: 建立链接Setup 9: 连接设备并启动管道Setup …

剑指 Offer 33: 二叉搜索树的后序遍历序列

这道题运用的后序遍历一个很重要的性质&#xff1a;最后一个值是根节点&#xff0c;并且二叉搜索树的性质使得右子树的数全都大于左子树。 这里有三个重要的地方&#xff0c; 第一个是当Start值大于等于End&#xff08;即为只有一个节点时&#xff0c;此时已经满足条件&#xf…

Revit中用自适应创建简单的瓦片族和切换构件的材质?

一、Revit中使用自适应创建瓦片族 在我们的日常生活中&#xff0c;屋顶的瓦片是我们经常都能够见到的&#xff0c;瓦片能够挡风遮雨也能够使建筑物带来古香古色的气息&#xff0c;那我们今天来学习如何使用自适应创建简单的瓦片族。 1.首先&#xff1a;我们打开自适应公制常规模…

usb转rs232全隔离设计参考

参考 CN-0373 特此记录 anlog 2023年6月29日

css基础(四)

目录 一、CSS 定位 1.1 为什么需要定位 1.2 定位组成 1.3 静态定位static&#xff08;了解&#xff09; 1.4 相对定位relative&#xff08;重要&#xff09; 1.5 绝对定位absolute&#xff08;重要&#xff09; 1.6 子绝父相的由来 1.7 固定定位fixed&#xff08;重要&#xff…

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 异常解决

目录 问题 原因 解决 今天在开发一个DB同步工具的时候&#xff0c;因为采用的是原生的jdbcDriver链接数据库的&#xff0c;代码如下“ Class.forName(this.jdbcDriver); ”&#xff0c;我这边的配置是“ "jdbcDriver":"com.mysql.cj.jdbc.Driver" ”&am…