Ansible从入门到精通【四】

news2024/11/29 18:36:34

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!
我的主页:早九晚十二
专栏名称:Ansible从入门到精通 立志成为ansible大佬

请添加图片描述

★ansible-playbook应用

    • play-book的介绍
    • play-book 的执行顺序
    • YAML的介绍
    • 语法简介(YAML)
      • 语法介绍
      • 元素介绍
    • playbook的核心元素
      • Hosts
      • remote_user
      • tasks
    • 执行问题忽略
    • playbook的常用选项
      • 运行playbook的方式
      • 常见选项

play-book的介绍

play-book是由一个或者多个play组成的列表。play的主要功能是将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上讲,所谓task无非是调用ansible的一个moudle。将多个play组织在一个playbook里,即可以让它们连同起来按照事先编排的机制同唱一台大戏。
playbook采用的是YAML语言编写,后缀可以使yml也可以yaml

play-book 的执行顺序

在这里插入图片描述

YAML的介绍

YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XMLC语言、
PythonPerl以及电子邮件格式RFC2822等。Clark Evans2001年在首次发表了这种语言,另
外Ingy dot NetOren Ben-Kiki也是这语言的共同设计者YAML Ain't Markup Language,即
YAML不是XML。不过,在开发的这种语言时,YAML的意思其实是 :
"Yet Another Markup Language"( 仍是一种标记语言 )
特性
YAML的可读性好
YAML和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML有一个一致的信息模型
YAML易于实现
YAML可以基于流来处理
YAML表达能力强,扩展性好

YAML官方网站:http://www.yaml.org
在这里插入图片描述

语法简介(YAML)

以以下剧本为例

---
 - hosts: all
  remote_user: root
  gather_facts: false
  become: yes
 
  tasks:
    - name: copy test
      copy:
        src: "{{item.src}}"
        dest: "{{item.dest}}"
        owner: root
        group: root
        mode: 0755
      with_items:
        - {src: "/root/ansible/hostname.sh",dest: "/tmp"}
...

语法介绍

  • 在单一档案中,可以用三个连字号(—)区分多个档案,另外还有选择性的联系三个点号(…)结尾
  • 次行开始正常写playbook的内容,一般建议写明该playbook的功能
  • 使用#做注释
  • 缩进必须是统一的,不能tab和空格混用
  • 缩进的级别也必须一致,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进和换行实现的
  • YAML文件内容和Linux系统大小写判断方式一致:即区分大小写,k/v的值均需大小写敏感
  • k/v的值也可同行也可换行,同行用:分隔
  • v可以是字符串,也可以是另一个列表
  • 一个完整的代码块功能最小需要包括name和task
  • 一个name只能包含一个task
  • YAML文件扩展名通常为yml或者yaml

元素介绍

  • List:列表,其所有元素均使用“-”打头,如 - name: copy test - hosts: all
  • Dictionary:字典,通常由多个key与value组成,如: src: "{{item.src}}" dest: "{{item.dest}}"

注意,yaml的语法和其他高阶语言类似,可以简单的表达清单,散列表,标量等数据结构。其结构通过空格来展示,序列里的项用“-”代表,map里的键值用“:”分隔。

playbook的核心元素

元素介绍
Hosts执行任务的远程主机列表
Tasks任务集
Varniables内置变量或者自定义变量,在playbook中调用
Templates模板,可替换模板文件中的变量并实现一些简单的逻辑
Handlers和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
tags标签,指定某条任务执行,由于选择运行playbook的部分代码。ansible具有幂等性,因此会跳过没有变化的部分,即使如此,有些代码未测试其确实没有发生变化的时间依然会非常的长。此时,如果确认没有发生变化,就可以用tags跳过。执行方法:ansible-playbook -t tagsname test.yml

Hosts

playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。hosts用于指定要执行指定任务的主机,必须先定义在主机清单中。
可能是如下形式:

test.example.com
test1.exxample.com:test2.example.com
192.168.1.1
192.168.*.*
test:test1 两个组并集
test:&test1 两个组交集
test:!test1 在test,但是不在test1
示例:- hosts: test:test1

remote_user

可用于host和task中,也可以通过指定其通过sudo的方式在远程主机上执行任务,可用于play全局或者某任务。此外,甚至也可以在sudo时使用sudo_user指定sudo时切换的用户。

- hosts: all
  remote_user: root
  sudo: yes  #默认sudo为root
  sudo_user: haha  #sudo为haha

tasks

任务列表,格式包含以下两种

action:module arguments
module:arguments  #建议使用

某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers。也可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用。

执行问题忽略

如果playbook中命令或者脚本的退出码不为0,可以使用如下方式替代

tasks:
  - name: run this command and ignore the result
    shell: /usr/bin/somecommand||/bin/true

或者使用ignore_errors

tasks:
  - name: run this command and ignore the result
    shell: /usr/bin/somecommand
    ignore_errors: True

playbook的常用选项

运行playbook的方式

ansible-playbook <filename.yml> ... [options]

常见选项

选项含义
–check只检测可能会发生的改变,但不真正执行操作
–list-hosts列出运行任务的主机
–limit主机列表,只针对主机列表中的主机执行
-v显示过程,-vv,-vvv更详细
–check只检测可能会发生的改变,但不真正执行操作
[root@master ansible]# ansible-playbook copy.yml --list-hosts

playbook: copy.yml

  play #1 (all): all	TAGS: []
    pattern: [u'all']
    hosts (1):
      192.168.1.1
[root@master ansible]# ansible-playbook copy.yml --list-tasks

playbook: copy.yml

  play #1 (all): all	TAGS: []
    tasks:
      copy test	TAGS: []

playbook中可以指定相对路径,相对路径的默认目录在/root/.ansible中

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

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

相关文章

lmsys.org最新的LLM排行榜

lmsys.org Large Model Systems Organization (LMSYS Org) 是一个开放的研究组织&#xff0c;由加州大学伯克利分校的学生和教师与加州大学圣地亚哥分校和卡内基梅隆大学合作创立。 他们的目标是通过共同开发开放数据集、模型、系统和评估工具&#xff0c;让每个人都能访问大…

App 应用测试方法以及测试思路

分析三种主流的移动 App 类型&#xff0c;并给出和普通web测试不同的地方&#xff0c;给出测试的思路&#xff0c;并给出部分场景组合。 移动端测试还是 PC 端测试&#xff0c;业务测试其实都属于 GUI 测试的范畴&#xff0c;所以基本的测试思路&#xff0c;比如基于页面对象封…

清凉一夏小风扇-Vue3版

这里写目录标题 前言 一、效果二、代码分享 前言 本片文章主要是做一个小练习&#xff0c;通过Vue来制作一个风扇练习css动画。 上一篇文章主要是讲解了React实现的部分 React实现部分看这里–> 一、效果 二、代码分享 1、主体框架 “sass”: “^1.62.1”, “vue”: “^3…

dvwa靶场通关(四)

第4关&#xff1a;File Inclusion&#xff08;文件包含&#xff09; 1.什么是文件包含&#xff1f; 程序开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff0c;直接调用此文件&#xff0c;无需再次编写&#xff0c;这种调用文件的过程一般…

1. Flask简介

Web应用程序作用 Web&#xff08;World Wide Web&#xff09;诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 client&#xff08;客户端&#xff09;可以是任何联网的设备&#xff0c;能向服务端发送请求。一次请求一个响应&#xff0c;有多少请求就有多少个响应。…

【计算机视觉 | 目标检测】术语理解6:ViT 变种( ViT-H、ViT-L ViT-B)、bbox(边界框)、边界框的绘制(含源代码)

文章目录 一、ViT & ViT变种1.1 ViT的介绍1.2 ViT 的变种 二、bbox&#xff08;边界框&#xff09;三、边界框的绘制 一、ViT & ViT变种 1.1 ViT的介绍 ViT&#xff0c;全称为Vision Transformer&#xff0c;是一种基于Transformer架构的视觉处理模型。传统的计算机视…

用cmd实现清理系统垃圾

目录 前言一、cmd是什么&#xff1f;二、食用步骤1.第一版本2.第二版本 总结 前言 在使用计算机的过程中&#xff0c;我们经常会产生很多系统垃圾文件&#xff0c;如果不及时清理可能会影响计算机的性能。本文将介绍如何借助cmd帮助我们清理系统垃圾&#xff0c;提高计算机的运…

vue3-实战-01-管理后台项目初始化和项目配置

目录 1-项目初始化 1.1-环境准备 1.2-项目初始化 2-项目配置 2.1-eslint配置 2.2-配置prettier 2.3-配置stylelint 2.4-配置husky 2.5-配置commitlint 2.6-强制使用pnpm包管理器工具 1-项目初始化 从0开始搭建一个vue3版本的后台管理系统。一个项目要有统一的规范&…

fastjson 1.2.24 反序列化导致任意命令执行漏洞复现

前言 fastjson是阿里巴巴的开源JSON解析库&#xff0c;它可以解析JSON格式的字符串&#xff0c;的作用就是把java对象转换为json形式&#xff0c;也可 以用来将json转换为java对象。 fastjson在解析json的过程中&#xff0c;支持使用autoType来实例化某一个具体的类&#xff…

【计算机网络】1.3 ——计算机网络的定义和分类

计算机网络的定义和分类 计算机网络定义 最简单的定义是 一些互相连接的、自治的计算机的集合 互连&#xff0c;指计算机之间可以通过有线或无线的方式进行数据通信自治&#xff0c;是指独立的计算机&#xff0c;它有自己的硬件和软件&#xff0c;可以单独运行使用集合&#…

面试专题:java 多线程(1)----synchronized关键字相关问答

在java 多线程 面试中最多问题1.悲观锁和乐观锁&#xff1b;2.synchronized和lock的区别&#xff1b;3.可重入锁和非可重入锁的区别&#xff1b;4.多线程是解决什么问题的&#xff1b;5.线程池解决什么问题的&#xff1b;6.线程池原理&#xff1b;7.线程池使用注意事项&#xf…

安卓中集成高德地图

安卓中集成高德地图 1.高德地图的优缺点 高德开放平台 | 高德地图API 高德地图优点&#xff1a; 1、领先的地图渲染技术&#xff1a;性能提升10倍&#xff0c;所占空间降低80&#xff05;&#xff0c;比传统地图软件节省流量超过90&#xff05; 2、专业在线导航功能&#x…

JVM之类的初始化与类加载机制

类的初始化 clinit 初始化阶段就是执行类构造器方法clinit的过程。此方法不需定义&#xff0c;是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。构造器方法中指令按语句在源文件中出现的顺序执行。clinit不同于类的构造器。(关联&#xff1a;…

C++-stack题型->最小栈,栈的压入与弹出,逆波兰表达式

目录 最小栈 栈的压入与弹出 逆波兰表达式 最小栈 155. 最小栈 - 力扣&#xff08;Leetcode&#xff09; 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void …

App 测试流程及资料合集

/1 / 测试理论知识:跟其他 web 等测试一样; /2 / 整体测试流程:同 web 类似 具体差异化见下方内容 /3 / App 独特测试点: 客户端兼容性测试:系统版本、不同深度定制的 rom、屏幕分辨率、中断测试、 安装、卸载、升级、对其他程序的干扰等 需要的一些工具: appnium / lr / …

测试工程师转型开发?还是继续磨练测试技能?

测试五年&#xff0c;没有积累编程脚本能力和自动化经验&#xff0c;找工作时都要求语言能力&#xff0c;自动化框架。 感觉开发同事积累的经历容易找工作。 下一步&#xff0c;想办法转开发岗还是继续测试&#xff1f;&#xff1f;&#xff1f; 正常情况下&#xff0c;有了四年…

pdf怎么在线阅读?一键查阅并不难

PDF格式的文件已经成为现代生活中不可或缺的一部分&#xff0c;无论是学术论文、电子书、工作文件还是表格&#xff0c;都有可能以PDF格式出现。然而&#xff0c;为了读取这些文件&#xff0c;我们需要安装PDF阅读器&#xff0c;这在某些情况下可能会带来不便。因此&#xff0c…

如何修复缺失的mfplat.dll文件,多种修复mfplat.dl分享

当你在使用电脑时&#xff0c;突然遇到了缺失了mfplat.dll的错误提示&#xff0c;你可能会感到非常烦恼。不要担心&#xff0c;这是一个常见的问题。在本文中&#xff0c;我们将指导你如何修复缺失的mfplat.dll文件。 一.什么是mfplat.dll MFPLAT.DLL是Microsoft Windows操作系…

广和通发布5G RedCap模组FG132-NA,助力5G商用规模化

5月30日&#xff0c;全球领先的无线通信模组和解决方案提供商广和通发布5G RedCap模组FG132-NA&#xff0c;加速5G技术在更多物联网场景广泛应用。 FG132-NA符合3GPP Release17演进标准&#xff0c;为物联网终端带来卓越5G体验的同时&#xff0c;全面优化产品尺寸、功耗以及成本…

spring boot与spring cloud版本兼容问题解决(附版本兼容表)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…