Ansible基础3——playbook

news2024/11/16 15:27:41

文章目录

  • 一、基本了解
  • 二、编写playbook
    • 2.1 单剧本
    • 2.2 多剧本
    • 2.3 特权升级
    • 2.4 语法优化
  • 三、模块查找

一、基本了解

为什么要写playbook?

  • 前面我们可以使用临时命令对受控机进行操作,但当有重复性的工作时就不能这么玩了,因为你要一遍遍的去执行命令,这时playbook就可以有效解决这个问题,它轻松重复的对一组目标主机执行多项复杂的任务。

playbook是是什么?

  • playbook是一个文本文件,包含由一个或多个按特定顺序运行的play组成的列表,所以我们在编写playbook时需要理清思路,先执行什么,再执行什么。

注意事项:

  1. Playbook使用空格字符缩进来表示其数据结构。
    • 同一级别的数据元素缩进量必须相同。
    • 若项目属于其他项目的子项,其缩进量(空格数)必须大于父项。
    • 使用空格键进行缩进,不支持tab键,一般2个空格表示一个级别。
  2. Playbook开头一行由三个破折号组成,代表开始。在文档结尾可能会使用三个圆点表示结束,实践中进场忽略结尾符号。
  3. 两个标记之间,会以一个play列表的形式来定义playbook。YAML列表中的项目以一个破折号加空格开头。
  4. 在执行playbook时,会有一个特殊的任务自动执行——Gathering Facts任务,它是通过setup模块启动的,通常在play启动时自动运行这项任务,用于获取受控机的信息。
    在这里插入图片描述

提高输出的详细程度:

  • ansible-playbook命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v命令提供了额外的信息,总共有四个级别。
    • -v :显示任务结果。
    • -vv :任务结果和任务配置都会显示。
    • -vvv :包含关于与受管主机连接的信息。
    • -vvvv :增加了连接插件相关的额外详细程序选项,包括受管主机上用于执行脚本的用户以及所执行的脚本。

二、编写playbook

编写思路:

  1. 确定目标。比如我想在受控机上安装一个服务,是需要先系统初始化配置yum源,再开始安装,然后修改一些配置参数,最后启动。
  2. 确定要使用什么模块。执行不通的动作需要用不同的模块来完成。
  3. 验证playbook语法。
  4. 空执行,用于测试playbook输出的结果是否是我们想要的,但实际不会在受控机上执行。

2.1 单剧本

  • 示例:在192.168.130.161受控机上启动防火墙。

1.确定清单文件。
在这里插入图片描述

2.确定能与受控机通信。
在这里插入图片描述
3.创建一个ploybook目录,用于专门存放ploybook文件,编写playbook,名为qingjun.yml。

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

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

[root@localhost playbook]# ansible-playbook --syntax-check qingjun.yml 

在这里插入图片描述
5.执行空运行,测试结果是否是我们想要的,但不实际在受控机上执行。
在这里插入图片描述

6.执行ploybook,查看结果。
在这里插入图片描述

2.2 多剧本

  • 示例:关闭所有受控机的防火墙,在192.168.130.162上安装zsh服务。

1.配置清单文件。
在这里插入图片描述

2.编写剧本。

[root@localhost playbook]# cat baimu.yml 
---
- name: 系统初始化
  hosts: all
  tasks:
    - name: 关闭防火墙
      service:
        name: firewalld
        state: stopped
- name: 安装服务
  hosts: 192.168.130.162
  tasks:
    - name: 安装zsh服务
      yum:
        name: zsh
        state: present

3.检查语法。
在这里插入图片描述
4.空执行测试。
在这里插入图片描述
5.正式执行,查看结果。
在这里插入图片描述
在这里插入图片描述

2.3 特权升级

  • 官网连接
参数释义
remote_user使用受控机上的哪个用户执行任务,默认为root用户。
becometrue和false,是否开启特权升级。
become_method切换受控机用户的方式。
become_user切换到受控机上的哪个用户。
–ask-become-pass切换用户时,是否需要输入密码。

1.编写剧本。

[root@localhost playbook]# cat baimu.yml 
---
- name: 系统初始化
  hosts: all
  remote_user: qingjun     ##使用受控机上的qingjun用户执行任务。
  become: true             ##开启特权升级。
  become_user: root        ##升级成哪个用户。
  become_method: su        ##使用su方式切换成root用户。
  tasks:
    - name: 查看文件内容
      lineinfile:             ##查看文件里是否有某行内容。
        name: /etc/hosts
        line: 'qingjun hahahah'
        state: present

2.测试语法。
在这里插入图片描述
在这里插入图片描述
3.正式执行。
在这里插入图片描述

2.4 语法优化

1.若有字符串型内容,需要用单引号或双引号。
在这里插入图片描述
2.若有多行字符串时,可以使用管道符。
在这里插入图片描述
3.列表方式和内联方式表示。
在这里插入图片描述
在这里插入图片描述

三、模块查找

1.官网查找,模块连接
在这里插入图片描述
2.命令查找指定模块,可以查看到playbook编写格式及所有参数。
在这里插入图片描述
3.命令查找所有模块。
在这里插入图片描述

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

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

相关文章

攻防世界-easy_RSA

题目如下:在一次RSA密钥对生成中,假设p473398607161,q4511491,e17 求解出d 1. RSA算法介绍 RSA算法是一种非对称加密算法,由三位计算机科学家Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出并命名。 它采用一…

Vue 基础组件二次封装的高级技巧及方法,能更优雅的进行二次封装组件(props 属性和 event 事件的透传、子组件插槽暴露、第三方组件方法继承)

前言 本人持续开源了Vue2基于ElementUi&AntdUi再次封装的Tui基础组件和Vue3基于Element-plus再次封装的TuiPlus基础组件,在组件封装的过程中提取了 props 属性和 event 事件的透传、子组件插槽暴露等,借此总结一下!!大佬略过!…

把VS Code打造成后端开发的宇宙IDE,也挺爽

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注! 作者:维生素P|慕课网优质作者 工欲善其事必先利其器,提高程序员的开发效率必须要有一个好的开发工具。而一旦提到开发工具&#xff…

深度解析Linux读写锁逻辑

一、Linux为何会引入读写锁? 除了mutex,在linux内核中,还有一个经常用到的睡眠锁就是rw semaphore(后文简称为rwsem),它到底和mutex有什么不同呢?为何会有rw semaphore?无他&#x…

[Mysql_DB]自动写入系统时间——注意低版本数据库操作

创建商品表包含字段create_time和update_time,并设置默认值为当前时间 实例 使用 CREATE TABLE 语句来创建一个商品表,并为其添加 create_time 和 update_time 字段,同时将这两个字段的默认值设置为当前时间。以下是一个示例: CREATE TABLE …

最新版本 Stable Diffusion 开源 AI 绘画工具之文本转换(Embedding)以及脚本(Script)高级使用篇

✨ 目录 🎈 文本转换 / Textual Inversion🎈 自定义Embedding / Textual Inversion🎈 脚本 / Script🎈 脚本 / Prompt matrix🎈 脚本 / X/Y/Z plot 🎈 文本转换 / Textual Inversion 这个功能其实就是将你…

SuperMap Hi-Fi 3D SDK for Unity制作游戏引擎材质

kele 一、使用背景 在交通,电力,规划等行业中,有的对象常常具有很强的质感,比如金属质感的 钢轨,电力塔;陶瓷材质的绝缘子;玻璃材质的建筑幕墙等,但常规方式的表现效果 往往差强人意…

AUTOSAR APP临摹1~Quick Start 模块

已实现逻辑 demo5 页面跳转 mainwindow.ui相当于simulink界面点击Quick Start进入welcome.ui界面在welcome.ui中大概包含7个页面页面之间通过next、back按钮翻页第0页没有back、最后一页点击next退出welcome.ui,回到mainwindow.ui 条件显示 C/C选项页面中&#xff…

7 步提升私有化部署的极狐GitLab 实例安全等级

目录 指导准则 分层安全,纵深防御 保密 ≠ 安全 减少攻击面 7 步保障私有化部署实例安全 第一步:开启多因素认证 第二步:加强额外的注册检查 第三步:限制群组和项目可见性 第四步:强化 SSH 设置 第五步&…

labelimg闪退解决方法(之前使用过labelimg,但新一次使用,打开文件夹无反应,再次打开闪退的问题)

问题描述: 之前使用过labelimg进行好多次的标注,但新一次运行使用,发现打开目录无反应,再次打开闪退的问题,重启电脑并且从新运行labelimg仍然无效。 解决方法: 关闭labelimg,然后删除文件C…

RK平台使用i2c-tools调试

简介 i2ctool是嵌入式开发过程中调试i2c设备常用的工具包,其中比较常用的有:i2cdetect、i2cdump、i2cset、i2cget。 RK平台的SDK大部分默认都会带这个工具,如果没有编译进去或者找不到的情况下可以自己从网上下载编译进去:https:…

数据结构与算法08:二分查找和哈希算法

目录 【二分查找】 二分查找的特殊情况 【哈希算法】 应用一:安全加密 应用二:唯一标识 应用三:数据校验 应用四:散列函数 应用五:负载均衡 应用六:数据分片 应用七:分布式存储&…

vscode:快捷输入代码片段

背景 每次调试代码输入 console.log() 的时候都会想,有没有什么指令我按下了就能生成这行代码,甚至更多我想自定义的代码,然后就去搜了搜果然有,vscode 提供了自定义代码片段的功能。 步骤 打开 vscode,点击 Prefer…

idea连接HiveServer2

一、 启动hive 启动hive的元数据服务 [aahadoop102 hive]$ bin/hive --service metastore根据你hive的配置方式启动hiveserver2 [aahadoop102 hive]$ bin/hive --service hiveserver2二、配置idea连接Hive服务 打开idea,在项目界面中的右边栏找到Database&#…

学术小白如何写好论文引言

文章目录 1.引言写作逻辑1.1 第一段:从现实出发1.2 第二段:文献综述1.3 第三段:引入研究理论和中介变量1.4 第四段:介绍调节变量的概念1.5 第五段:总结 Hello,宝子们,接下来,我们将持续不断更新一系列围绕论文写作的tips建议&…

vue3学习笔记(附加铺垫知识)

Vue3 1.铺垫知识 1.1ES6 默认导出与默认导入: 按需导出与按需导入: 直接导入并执行模块中的代码: 1.2Promise 回调地狱: 基本概念: 使用promise封装自己的读文件方法: 第一步: 第二步&a…

IP地址和MAC地址

1、MAC地址 MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备…

二进制安装K8S

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)https://developer.aliyun.com/mirror/所有节点yum源更换为 ,按照aliyun给的容器里面的kubenetes源和docker源,当然最好把之前的centos源也换成aliyun的 所有节点安装docker yum install -…

git 环境配置 + gitee拉取代码

好嘛 配环境的时候 老是忘记这个命令行 干脆自己写一个记录一下 也不用搜了 1.先从git官网下载git 安装 2.然后从gitee拉取代码的时候提示 这是因为换了新电脑没有加入新的公钥啦 哎 所以老是记不住命令行 first : git config --global user.name “Your Name” …

windows下上架iOS应用到appstore

windows下上架iOS应用到appstore 背景步骤申请苹果开发者账号创建唯一标示符App IDs申请发布证书申请发布描述文件创建App并填写信息选择证书编译打包上传IPA到App Store提交审核 尾巴 背景 现在由于跨平台技术的兴起,不使用原生技术就能开发出Android和iOS应用。A…