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.mzph.cn/news/228944.shtml

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

相关文章

网络编程-认识套接字socket

文章目录 套接字概念端口号网络字节序 套接字类型流套接字数据报套接字 socket常见APIsocket函数bind函数listen函数accept函数connect函数sockaddr结构 套接字概念 socket套接字是进程之间一种通信机制,通过套接字可以在不同进程之间进行数据交流。在TCP/UDP中&…

如何开发一个prompt?prompt的使用有哪些原则?

提示词使用原则 如何开发一个跟自己预期结果接近的提示词?有哪些基本原则? 提示词迭代开发 写提示词时,第一次尝试是值得的,反复完善提示,获得越来越接近你想要的结果 原文来源于B站吴恩达提示工程教学公开课。…

ActionCLIP:A New Paradigm for Video Action Recognition

文章目录 ActionCLIP: A New Paradigm for Video Action Recognition动机创新点相关工作方法多模态框架新范式预训练提示微调 实验实验细节消融实验关键代码 总结相关参考 ActionCLIP: A New Paradigm for Video Action Recognition 论文:https://arxiv.org/abs/21…

服务端主动给客户端发消息?实战教学:使用Nestjs实现服务端推送SSE

前言 服务端消息推送SSE是常用的服务器消息通信手段,适用于服务器主动给客户端发送消息的场景,例如私信通知,扫描登录等都可以使用SSE实现。SSE的底层原理是客户端与服务端建立 HTTP 长链接。 Nestjs 框架内置了对SSE的支持,本文…

ES6 面试题 | 15.精选 ES6 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

C++:函数重载

1.函数重载概念 函数重载就是用同一个函数名定义的不同函数,当函数名和不同的参数搭配时函数的功能和含义不同。 2.实现函数重载的条件 同一个作用域,参数个数不同或者参数类型不同或者参数顺序不同(满足一个即可) void func(){} void func(int x){} v…

2024美赛全方位备赛教学/翻译/写作模版/翻译/软件/资料

本文字数20000,文章较长,建议先看目录,点击目录条目可以快速跳转。2024美赛大学生数学建模竞赛即将开始,不知道大家是否已经准备好相关资料如写作模板、常见算法的编程代码等等?评论区处有这些资料的下载方式。 文章结…

计算机网络:数据链路层(广域网、PPP协议、HDLC协议)

今天又学会了一个知识,加油! 目录 一、广域网 二、PPP协议 1、PPP协议应满足的要求 2、PPP协议无需满足的要求 3、PPP协议的三个组成部分 4、PPP协议的状态图 5、PPP协议的帧格式 三、HDLC协议 1、HDLC的站(主站、从站、复合站&…

计算机网络:网络层(无分类编址CIDR、计算题讲解)

带你快速通关期末 文章目录 前言一、无分类编址CIDR简介二、构成超网三、最长前缀匹配总结 前言 我们在前面知道了分类地址,但是分类地址又有很多缺陷: B类地址很快将分配完毕!路由表中的项目急剧增长! 一、无分类编址CIDR简介 无分类域间路由选择CI…

【后端学前端】第四天 css动画 垂直轮播效果(css变量、位移缩放动画、动画延迟)

1、学习信息 视频地址&#xff1a;css动画 垂直轮播效果&#xff08;css变量、位移缩放动画、动画延迟&#xff09;_哔哩哔哩_bilibili 2、源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title…

深入理解——快速排序

目录 &#x1f4a1;基本思想 &#x1f4a1;基本框架 &#x1f4a1;分割方法 ⭐Hoare版本 ⭐挖坑法 ⭐前后指针法 &#x1f4a1;优化方法 ⭐三数取中法 ⭐小区间内使用插入排序 &#x1f4a1;非递归实现快速排序 &#x1f4a1;性能分析 &#x1f4a1;基本思想 任取待排…

【redis,nosql】redis键值数据库

什么是redis数据库 Redis is an open source, in-memory data structure store used as a database, cache, message broker, and streaming engine. 存储模式 字符串&#xff08;String&#xff09; Redis strings store sequences of bytes, including text, serialize…

力扣刷题-二叉树-二叉树左叶子之和

404 左叶子之和 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24 思路 迭代法 迭代法理解…

【谭浩强C语言:前八章编程题(多解)】

文章目录 第一章1. 求两个整数之和(p7) 第二章2. 求三个数中的较大值&#xff08;用函数&#xff09;(p14、p107)3.求123...n(求n的阶乘&#xff0c;用for循环与while循环)(P17)1.循环求n的阶乘2.递归求n的阶乘(n< 10) 4.有M个学生&#xff0c;输出成绩在80分以上的学生的学…

外包干了3个月,技术退步明显。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

LangChain学习三:链-实战

文章目录 上一节内容&#xff1a;LangChain学习二&#xff1a;提示-实战&#xff08;下半部分&#xff09;学习目标&#xff1a;明白链是什么&#xff1f;有哪些&#xff1f;怎么用&#xff1f;学习内容一&#xff1a;介绍学习内容二&#xff1a;有那些学习内容三&#xff1a;实…

C++初阶-queue的使用与模拟实现

queue的使用与模拟实现 一、queue的介绍和使用二、queue的使用三、queue的模拟实现3.1 成员变量3.2 成员函数3.2.1 push入队列3.2.2 pop出队列3.2.3 返回队头数据3.2.4 返回队尾数据3.2.5 返回队列的大小3.2.6 判断队列是否为空 四、完整代码4.1 queue.h4.2 test.h 五、deque的…

Linux:TCP 序列号简介

文章目录 1. 前言2. 什么是 TCP 序列号&#xff1f;3. TCP 序号 的 初始值设置 和 后续变化过程3.1 三次握手 连接建立 期间 客户端 和 服务端 序号 的 变化过程3.1.1 客户端 socket 初始序号 的 建立3.1.2 服务端 socket 初始序号 的 建立3.1.3 客户端 socket 接收 服务端 SAC…

vue使用el-tag完成添加标签操作

需求&#xff1a;做一个添加标签的功能&#xff0c;点击添加后输入内容后回车可以添加&#xff0c;并且标签可以删除 1.效果 2.主要代码讲解 鼠标按下后触发handleLabel函数&#xff0c;根据回车的keycode判断用户是不是按下的回车键&#xff0c;回车键键值为13&#xff0c;用…

【一种用opencv实现高斯曲线拟合的方法】

背景&#xff1a; 项目中需要实现数据的高斯拟合&#xff0c;进而提取数据中标准差&#xff0c;手头只有opencv库&#xff0c;经过资料查找验证&#xff0c;总结该方法。 基础知识&#xff1a; 1、opencv中solve可以实现对矩阵参数的求解&#xff1b; 2、线的拟合就是对多项…