Ansible-playbook编译.yml脚本

1、playbook是什么?

在Ansible中,Playbook是用于配置、部署和管理被控节点的剧本。它由一个或多个play(角色)组成,每个play可以包含多个task(台词,动作)。使用Ansible的Playbook,可以通过描述和执行一系列的操作步骤,让受控主机达到预期的状态。

2、为什么要编写playbook?

写Playbook的目的主要有以下几点:

  1. 自动化和可重复性:Playbook可以确保在多个环境中实现一致性和可重复性。一旦编写完成,可以在任何需要的地方运行,从而消除了手动配置和部署的繁琐性。
  2. 提高效率:通过自动化常见任务,Playbook可以显著减少完成这些任务所需的时间和精力。这允许团队将更多资源投入到创新和增值活动中。
  3. 减少错误:自动化的配置和部署过程可以消除人为错误,从而提高了系统的稳定性和可靠性。
  4. 文档化:Playbook可以作为系统配置和部署过程的文档。这有助于新团队成员了解系统,并允许团队在出现问题时快速回溯和诊断。
  5. 可扩展性和灵活性:Playbook可以轻松适应不断变化的需求和环境。只需对Playbook进行必要的修改,即可在多个环境中重复使用。
  6. 一致性:通过使用Playbook,可以确保在多个环境或主机上实现一致的配置和部署。这有助于维护系统的一致性和稳定性。
  7. 易于审计和跟踪:由于Playbook是文本文件,因此可以轻松进行版本控制,从而允许团队跟踪对系统所做的更改。这有助于满足合规性和审计要求。

3、如何编写playbook?

编写Ansible Playbook需要遵循一定的结构和语法规则。以下是一些编写Ansible Playbook的基本步骤和注意事项:

  1. 确定目标:在开始编写Playbook之前,需要明确你想要达到的目标。例如,你可能想要部署一个应用程序、配置网络设置、管理软件包等。
  2. 创建Playbook文件:在Ansible目录中创建一个以.yml为扩展名的Playbook文件。例如,你可以创建一个名为deploy.yml的文件。
  3. 定义inventory:在Playbook文件中,你需要定义一个或多个inventory(主机清单)。Inventory可以包含受控主机的列表、主机组、变量等。

---  
- hosts: webservers  
  become: yes  
  tasks:  
    - name: install nginx  
      apt: name=nginx state=present
 

在这个示例中,hosts字段指定了一个名为webservers的主机组,become字段用于执行需要管理员权限的任务。

4.定义task(任务):在Playbook中,每个任务都是一个要执行的指令或动作。你可以定义多个任务来达到你的目标。

- name: install nginx

apt: name=nginx state=present

在这个示例中,任务是安装Nginx软件包。

5.执行Playbook:使用Ansible命令行工具或脚本执行Playbook。例如,你可以运行以下命令来执行名为deploy.yml的Playbook:

ansible-playbook deploy.yml

6.调试和优化:在执行Playbook后,检查输出和日志以确认任务是否成功执行。根据需要调试和优化Playbook以确保其正确性和效率。

4、单据本编写

1.查看ansible是否安装,如下图是已安装示例图,如果还没有可以参考我上一篇文章《Ansible介绍与安装》

2.管理的我的主机IP地址 vi /etc/ansible/hosts

[m1]
192.168.31.135
[all:vars]
ansible_user=root
ansible_password=123456

3.确定ansible能与受控机通信

4.创建一个ploybook目录,用于专门存放ploybook文件,编写playbook,名为waha.yml。

[root@localhost  /]# cd /etc/ansible

[root@localhost ansible]# mkdir playbook
[root@localhost ansible]# cd playbook/
[root@localhost playbook]# vim waha.yml
[root@localhost playbook]# cat waha.yml 
---
- name: 系统初始化         ##任务名称,自定义。
  hosts: 192.168.31.135      ##对哪个受控机进行操作。
  tasks:                      ## 任务。
    - name: 关闭防火墙      ##任务里可以有很多个小任务,比如这里就只有一个任务,关闭防火墙,名称自定义。
      service:             ##关闭防火墙要用哪个模块。
        name: firewalld          ##service模块参数,作用对象。
        state: stopped            ##service模块参数,操作动作。

5.语法验证。验证没问题之后才能往后面操作。

 ansible-playbook --syntax-check waha.yml 

    

6.执行空运行,测试结果是否是我们想要的,但不实际在受控机上执行。

7.执行ploybook,查看结果。

8.之前192.168.31.135的防火墙状态

9.现在192.168.31.135的防火墙状态

5、多剧本编写

 1.管理的主机IP地址 vi /etc/ansible/hosts

[m1]
192.168.31.135

[m2]

192.168.31.140

[all:vars]
ansible_user=root
ansible_password=123456

3.确定ansible能与受控机通信

4.创建一个ploybook目录,用于专门存放ploybook文件,编写playbook,名为happy.yml。

[root@localhost  /]# cd /etc/ansible

[root@localhost ansible]# mkdir playbook
[root@localhost ansible]# cd playbook/
[root@localhost playbook]# vim happy.yml
[root@localhost playbook]# cat happy.yml 
---
- name: 系统初始化         ##任务名称,自定义。
  hosts: [192.168.31.135 192.168.31.140]      ##对哪个受控机进行操作。
  tasks:                      ## 任务。
    - name: 关闭防火墙      ##任务里可以有很多个小任务,比如这里就只有一个任务,关闭防火墙,名称自定义。
      service:             ##关闭防火墙要用哪个模块。
        name: firewalld          ##service模块参数,作用对象。
        state: stopped            ##service模块参数,操作动作。

5.语法验证。验证没问题之后才能往后面操作。

 ansible-playbook --syntax-check happy.yml 

    

6.执行空运行,测试结果是否是我们想要的,但不实际在受控机上执行。

7.执行ploybook,查看结果。

8.之前192.168.31.135和192.168.31.140的防火墙状态

9.现在192.168.31.135和192.168.31.140的防火墙状态

如果在查看两台主机防火墙的主机的防火墙的状态时,如果防火墙都关闭了,恭喜你最基础的Ansible-playbook编译.yml脚本已经掌握!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻量封装WebGPU渲染系统示例<52>- Json数据描述材质、纹理等3D渲染场景信息

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/DataDrivenScene3.ts 当前示例运行效果: ​​​​​​​ Json数据: {"renderer": {"mtplEnabled": true,"camera": {"eye&quo…

再怎么“顽固”的应用程序,也很难经得住以下的卸载方法

卸载程序是我们经常尝试的事情。这可能是因为我们不再需要程序,该程序可能会导致问题等。有时,如果你试图卸载某个程序,你会收到一个错误,但卸载没有发生。在这种情况下,你可以选择强制卸载。在本教程中,我将向你展示如何在Windows 10/11计算机上强制卸载程序。 ​控制面…

人工智能中的对比学习:算法原理与应用探索

导言 对比学习作为人工智能领域中的一种重要学习范式,在模型训练和应用中展现出独特的优势。然而,随着应用范围的扩大,对比学习也面临一些挑战。本文将深入探讨对比学习的算法原理、应用场景以及其在人工智能中的前景,并提出一些可…

浏览器的事件循环机制(Event loop)

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? …

芝麻杂草目标检测数据集VOC+YOLO格式近1300张

芝麻,芝麻科芝麻属的一年生草本植物,茎中空或具白色髓部;叶子为卵形;花朵单生或少数同生于腋下,呈白色;芝麻蒴果基部钝圆,顶部有尖,中间有棱;芝麻的种子通常呈扁平椭圆形…

k8s实操

问题一 开通了vpc 但是仍然无法ping 通 需要安全组放行icmp 问题二 实际安装过程中每个节点需要提前安装 conntrack socat 更新apt apt-get update安装需要的 apt install -y conntrack && apt install -y socat一定要先删除失败的 出现这个问题有可能是没有删除…

软件设计师——数据结构(二)

📑前言 本文主要是【数据结构】——软件设计师——数据结构的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

[AutoSar]基础部分 RTE 介绍

目录 关键词平台说明一、什么是RTE二、RTE的主要功能 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C,C编译器HighTec (GCC) 一、什么是RTE RTE(Run-Time Environment&…

delphi的unigui web开发中使用font awesome 字体

一、不必下载,unigui已内置该字体及调用 其实,unigui 1.90中就含有font awesome字体的模块,我们不必再从其官网下载。 当然要下载,从以下位置下载官方套件: Download Font Awesome Free or Pro | Font Awesome 选择F…

拖拽属性 draggable

H5 新增的属性 draggable,它能够给与一切的 html 元素拖动的效果。 拖拽元素 属性为 draggable"true" 的元素,可拖动,且拖动时鼠标变为禁用图标 ps: 直接写 draggable 可能无效 ondragstart 开始拖拽时触发(按下鼠标…

一个简单的光线追踪渲染器

前言 本文参照自raytracing in one weekend教程,地址为:https://raytracing.github.io/books/RayTracingInOneWeekend.html 什么是光线追踪? 光线追踪模拟现实中的成像原理,通过模拟一条条直线在场景内反射折射,最终…

Java已死!

许多开发者仍然认为 Java 与当今时代息息相关,看完本文,你会发现 Java 的影响力已经大幅减弱。实际上,Java 是一种濒临灭绝的编程语言。尽管 Java 一直是世界上使用最广泛、最受欢迎的编程语言之一,但它很快就会面临消亡的危险。 …