ansible playbook的使用

Ansible之playbook详解和应用实例 Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。Ansible Playbook 本质上是一些框架,是一些预先编写的代码,开发人员可以用作临时模板或起始模板。Ansible Playbook 常被用于自动化 IT 基础架构(例如,操作系统和Kubernetes平台)、网络、安全系统,以及开发人员角色(例如 Git)。 阅读详情

一、playbook的使用

1.ansible的playbook与临时命令

​ 临时命令可以对一组目标主机进行一项简单的任务。要发挥ansible的真正力量,还需要了解如何使用playbook轻松的对一组目标主机执行多项复杂的任务

​ playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表

​ Play可以将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程,并且具有可预测的成功成果。在playbook中,可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方式,任务本身记录了部署应用或基础架构所需的步骤

2.临时命令改写为playbook

​ 之前所熟知的ansible临时命令都可以使用playbook来编写

​ 下面我们举一个例子,看看这条命令在playbook中如何编写

[root@ansible ~]# ansible all -m user -a 'name=tongxue uid=4999 state=present'

​ 这个命令用playbook应该这样写:

[root@ansible ~]# vim user.yml
[root@ansible ~]# cat user.yml
---
- name: create user
  hosts: all
  tasks:
    - name: create user tongxue uid 4999
      user: 
        name: tongxue
        uid: 4999
        state: present
[root@ansible ~]#

​ Playbook是以YAML格式编写的文本文件,通常以.yml结尾。Playbook使用空格字符缩进来表示其数据结构。YAML对用于缩进的空格数量没有严格的要求,但有两个基本的规则:

  • 处于层次结构中同一级别的数据元素(例如同一列表中的项目)必须具有相同的缩进量。

  • 如果项目属于其他项目的子项,其缩进量必须大于父项

    不过我们在编写playbook时,通常以2的倍数来进行缩进子项的缩进比它的父项的缩进要多两个,这样做更加的易读

​ playbook的开头一行由三个—(—)来进行分隔,这是文档开头的标记。其中的每个项目用一个—(-)来开头,所以playbook编写的格式如下:

---
- name1: name
  hosts: 1.1.1.1
  tasks: 
    - tasks1
    - tasks2
- name2
  hosts: 2.2.2.2
  tasks: 
    - tasks3
    - tasks4
- name3
  hosts: 3.3.3.3
  tasks: 
    - tasks5
    - tasks6

其中tasks是按顺序实际列出要在受管主机上运行的任务。列表中各项任务本身是一个键值对集合。

以上面创建用户的playbook为例,play中唯一任务有两个键:

  • name是记录任务用途的可选标签。最好命名所有的任务,从而帮助记录自动流程中的每一步用途。
  • user是要为这个任务运行的模块。其参数作为一组键值对传递,它们是模块的子项(name、uid和state)。

下面再来看一个含有多项任务的tasks属性案例:

---
- name: test
  hosts: all
  tasks:
    - name: create user tongxue uid 4999
      user:
        name: tongxue
        uid: 4999
        state: present
    - name: web server is enable
      service:
        name: httpd
        enabled: yes
        
    - name: ntp server is enable
      service:
        name: chronyd
        enabled: yes
        
    - name: vsftpd server is enable
      service:
        name: vsftpd
        enabled: yes

​ playbook中play和任务列出的顺序很重要,因为Ansible会按照相同的顺序运行它们

3.运行playbook

​ absible-playbook命令可用于运行playbook。该命令在控制节点上执行,要运行的playbook的名称则作为参数

[root@ansible ~]# ansible-playbook test.yml

以下示例中显示了一个简单的playbook的内容,后面是运行它的结果

[root@ansible ~]# cat test.yml 
---
- name: setup web server
  hosts: 192.168.10.201
  tasks:
    - name: install httpd
      yum: 
        name: httpd
        state: latest

    - name: service is enabled
      service:
        name: httpd
        state: started
        enabled: yes
[root@ansible ~]# ansible-playbook test.yml 

PLAY [setup web server] **********************************************************************************
TASK [Gathering Facts] ***********************************************************************************ok: [192.168.10.201]

TASK [install httpd] *************************************************************************************ok: [192.168.10.201]

TASK [service is enabled] ********************************************************************************changed: [192.168.10.201]

PLAY RECAP ***********************************************************************************************192.168.10.201             : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible ~]#

​ 请注意,在playbook运行时,屏幕中会显示每个play和任务的name键的值。(Gathering Facts任务是一项特别的任务,setup模块通常在play启动时自动运行这项任务。)对于含有多个play和任务的playbook,设置name属性后可以更加轻松地监控playbook执行的进展。

​ 通常而言,Ansible Playbook中的任务是幂等的,而且能够安全地多次运行playbook。如果目标受管主机已处于正确的状态,则不应进行任何更改。如果再次运行这个playbook,所有任务都会以状态OK传递,且不报告任何更改。

4.提高输出的详细程度

​ ansible-playbook命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v命令提供了额外的信息,总共有四个级别

配置Playbook执行的输出详细程序

选项描述
-v显示任务结果
-vv任务结果和任务配置都会显示
-vvv包含关于与受管主机连接的信息
-vvvv增加了连接插件相关的额外详细程序选项,包括受管主机上用于执行脚本的用户以及所执行的脚本
5.语法验证

​ 在执行playbook之前,最好要进行验证,确保其内容的语法正确无误。ansible-playbook命令提供了一个–syntax-check选项,可用于验证playbook的语法。

下面是一个playbook的成功验证:

[root@ansible ~]# ansible-playbook --syntax-check test.yml 

playbook: test.yml
[root@ansible ~]#

下面是一个playbook的验证失败:

[root@ansible ~]# ansible-playbook --syntax-check test.yml 
ERROR! conflicting action statements: service, enabled

The error appears to be in '/root/test.yml': line 10, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


    - name: service is enabled
      ^ here
[root@ansible ~]#
6.执行空运行

​ 可以使用-C来对playbook进行空运行。这会使Ansible报告在执行该playbook时将会发生什么更改,但不会对受管主机进行任何实际的更改

​ 注意加入该参数不会对受管主机进行任何的更改

[root@ansible ~]# ansible-playbook -C test.yml 

PLAY [setup web server] **********************************************************************************
TASK [Gathering Facts] ***********************************************************************************ok: [192.168.10.201]

TASK [install httpd] *************************************************************************************ok: [192.168.10.201]

TASK [service is enabled] ********************************************************************************ok: [192.168.10.201]

PLAY RECAP ***********************************************************************************************192.168.10.201             : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible ~]#
7.play中的远程用户和特权升级

​ Play可以将不同的远程用户或特权升级设置用于play,取代配置文件中指定的默认设置。这些在play本身中与hosts或tasks关键字相同的级别上设置。

7.1 用户属性

​ playbook中的任务通常通过与受管主机的网络连接来执行。与临时命令相同,用于任务执行的用户帐户取决于Ansible配置文件/etc/ansible/ansible.cfg中的不同关键字。运行任务的用户可以通过remote_user关键字来定义。不过,如果启用了特权升级,become_user等其他关键字也会发生作用。

如果用于任务执行的Ansible配置中定义的远程用户不合适,可以通过在play中使用remote_user关键字覆盖

	remote_user: remoteuser
7.2 特权升级属性

​ Ansible也提供额外的关键字,从而在playbook内定义特权升级参数。become布尔值关键字可用于启用或禁用特权升级,无论它在Ansible配置文件中的定义为何。它可取yes或true值来启用特权升级,或者取no或false值来禁用它。

	become: true

​ 如果启用了特权升级,则可以使用become_method关键字来定义特定play期间要使用的特权升级方法。

以下示例中指定sudo用于特权升级:

	become_method: sudo

​ 此外,启用了特权升级时,become_user关键字可定义特定play上下文内要用于特权升级的用户帐户。

	become_user: privileged_user

​ 以下示例演示了如何在play中使用这些:

- name: setup web server
  hosts: 192.168.10.201
  remote_user: tongxue		##使用的用户
  become: yes				##特权升级
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: latest

    - name: service is enabled
      service:
        name: httpd
        state: started
        enabled: yes
8.playbook的语法

注释

​ 注释也可以用于提高可读性。在YAML中,编号或井号字符(#)右侧的所有内容都是注释。如果注释的左侧有内容,请在该编号符号的前面加一个空格。

# this is a yaml
- name: setup web server # this is name

字符串

​ YAML中通常使用单引号或双引号来括起一段字符串

- name: install httpd
      yum:
        name: 'httpd'
        state: "latest"

​ 编写多行字符串有两种方式。可以使用管道符表示要保留字符串中的换行字符。

    - name: add conf
      lineinfile:
        path: /etc/httpd/conf/httpd.conf
        regexp: AddType application/x-gzip .gz .tgz
        line: |
          AddType application/x-httpd-php .php
          AddType application/x-httpd-php-source .phps

​ 要编写多行字符串,还可以使用大于号字符来表示换行字符转换成空格并且行内的引导空白将被删除。这种方法通常用于将很长的字符串在空格字符处断行,使它们跨占多行来提高可读性。

    - name: add conf
      lineinfile:
        path: /etc/httpd/conf/httpd.conf
        regexp: AddType application/x-gzip .gz .tgz
        line: >
          AddType 
          application/x-httpd-php 
          .php

以上就是playbook的使用

playbook(剧本)基本应用、playbook常见语法、playbook和ansible操作的编排 playbook(剧本)、ansible操作的编排;YMAL格式;playbook编排vsftpd;playbook编排多个hosts任务;编排nfs搭建与客户端挂载; 阅读详情

相关推荐

Ansible之Playbook中使用变量

Playbook中同样也支持变量 变量名:仅能由字母、数字和下划线组成,且只能以字母开头 变量定义: variable=value variable: value 范例: http_port=80 http_port: 80 变量调用方式: 通过{{ variable_name }} 调用变量,且变量名前后建议加空格,有时用"{{ variable_name }}"才生效 变量来源: ansible 的 setup facts 远程主机的所有变量都可直接调用 通过命令行指定变量,优先级最高 [roo

qq_38419276的博客 1486

Ansible之Playbook介绍和使用

1.Playbook介绍 Playbook与ad-hoc相比,是一种完全不同的运用ansible的方式,类似与saltstack的state状态文件。ad-hoc无法持久使用,playbook可以持久使用。 Playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。 上来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playboo...

因上努力,果上随缘。但行好事,莫问前程。 1万+

数字后端流程--place

Floorplan完成后芯片的大致框架已经出现,万里长征已经迈出特别重要的第一步了,前面的步骤我们已经完成了io port,macro的摆放,现在core外只剩下std cell(标准单元)了,Place这一步就是要把std cell放进core里。看到密密麻麻的std cell也不用紧张,因为放std cell不用像macro手动一个一个摆,工具就可以帮我们完成大部分工作。虽然这一步的工作只有一个,但也不是只要Place完就能进行下一步的,衡量Place质量是否满足标准会通过以下几点判断。

qq_68400574的博客 772

Playbook 介绍

playbook 介绍

weixin_44572215的博客 1495

elegant(ELEctron Generation ANd Tracking)入门指南(1)

elegant (ELEctron Generation ANd Tracking),美国先进光子源(APS)所用的圆环加速器的模拟程。

qq_41106132的博客 1847

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6803

playbook基础 、 playbook进阶 、 总结和答疑

基础知识 ansible的七种武器 第一种武器 -ansible命令,用于执行临时性的工作,必须掌握 第二种武器 -ansible-doc时ansible模块的文档说明,针对每个模块都有详细的说明及应用案例介绍,功能和Linux系统man命令类似,必须掌握 第三种武器 -ansible-console时ansible为用户提供的交互式工具,用户可以在ansible-console...

qq_36345864的博客 1484

人工智能训练师技能等级认定四级技能考核试卷-样题1

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总分100分,考试时间150分钟。试卷涵盖数据处理、模型训练准备及系统维护等核心技能:1)垃圾分类数据集规范与处理(30分),要求评估数据格式并编写Python处理代码;2)学生成绩数据集分析(20分),涉及数据预处理、可视化及相关性分析;3)数据标注审核(10分),重点审核标注准确性;4)智能数据服务系统维护与优化(40分),包括安全帽数据集的项目创建、数据处理及平台协作。考核强调Python编程、数据处理平台操作及AI工作流程的实践能力。

weixin_42221934的博客 440

ansible-playbook的使用

Ansible Playbook 是 Ansible 实现自动化任务编排的核心文件,采用YAML格式编写,用于定义一系列任务、变量、条件和执行逻辑,实现对被管理节点的批量配置、部署或操作相比临时命令(Ad-hoc),Playbook 更适合复杂场景(如多步骤任务、依赖关系控制、动态配置),且支持版本化管理(可存入 Git 等仓库)

2501_92004703的博客 952

硅光芯片边耦合器综述(一)

摘要:硅光子学在过去几十年间吸引了越来越多的关注,由于其具有诸多优点,如极低的成本、硅的高折射率带来的高集成密度,以及与现有半导体制造工艺的兼容性,被认为是未来日常应用中的一项充满前景的关键技术。在硅光子集成电路中,光互连是一个重要的问题,而在数据中心和光传输系统等应用场景中,光纤到芯片的光互连至关重要。光纤到芯片的光学耦合主要分为两大类:面外耦合(off-plane coupling)和面内耦合(in-plane coupling)。光栅耦合器属于前者,而边耦合器则属于面内耦合。本文主要关注硅光子集成电路

jhbfsoagoodgio的博客 5040

IMU卡尔曼滤波方法详细介绍

本文介绍了基于IMU和卡尔曼滤波的状态估计方法。系统采用9维状态向量(位置、速度、加速度计零偏),通过牛顿运动学建立状态方程,并利用外部位置观测进行校正。详细推导了状态转移矩阵和控制输入矩阵的形式,阐述了预测和更新的计算步骤。同时说明了过程噪声Q和观测噪声R的设置原则,其中Q反映模型不确定性,R取决于传感器精度。该方法可有效融合IMU测量与外部观测数据,实现位置、速度和偏置的联合估计。

haing2019的博客 757

Ansible 中 playbook 的使用

Ansible playbook 部署 LAMP 准备四台服务器 主机名 IP地址 yibie-ansible 192.168.57.20 yibie-apache 192.168.57.30 yibie-php 192.168.57.40 yibie-mysql 192.168.57.50

一别的博客 1094

codevs 1620 轮船问题 DP 解题报告

某国家被一条河划分为南北两部分,在南岸和北岸总共有N对城市,每一城市在对岸都有唯一的友好城市,任何两个城市都没有相同的友好城市。

Hawo11的博客 817

Ansible 使用playbook文件运行

ansible playbooks 是使用ansible简单的配置管理部署系统的基础,使用YAML语法格式的配置文件。每一个playbook中包含一系列的任务。使用ansible playbook可以更方便的管理、维护多态主机。 1、yaml语法 yaml是”YAML Ain't a Markup Language”的缩写,即不是一种标记性语言,它是一种直观的能够被电脑识别的数据序列...

vanvan_的博客 1万+

手把手教你学SIMULINK模块库文件专栏--Scope 模块详解

模块是 Simulink 中的一个信号接收模块,用于实时显示信号波形。该模块可以捕捉并可视化仿真过程中信号的变化,帮助用户直观地分析系统的动态行为。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要实时显示信号波形的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响波形显示。

MHD0815的博客 312

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Ansible Playbook Debugger 使用教程

Ansible Playbook Debugger 使用教程 项目介绍 Ansible Playbook Debugger 是一个开源项目,旨在帮助用户更有效地调试 Ansible Playbook。通过该工具,用户可以在 Playbook 执行过程中进行交互式调试,从而快速定位和解决问题。该项目由 ks888 开发并维护,适用于需要频繁调试 Ansible Playbook 的开发者和运维人员。...

gitblog_00656的博客 1061

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ansible组件之剧本(playbook )的使用

plabook是一个由一个或多个“play”组成的列表; play的主要功能在于将实现归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module.将多个paly组织在一个playbook中,即可以让它们联同起来按事先编排的机制一触多发; playbook采用YAML语言编写。 YAML语法简介 在单一...

小树苗 1032

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Ansible playbook的使用

Ansible playbook的使用 1.playbook的介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。 2.playbook基础组件 Hosts:运行执行任务(task)的

YangLuxxx123 1169

蓝易云 - Ansible如何写playbook及playbook中使用变量

Ansible Playbook是用于定义Ansible任务的一种格式,它是一个YAML文件,可以用于执行一系列的配置管理和自动化任务。Ansible的变量机制为自动化部署提供了强大的支持,使得你可以根据不同的情况定制不同的任务,提高了自动化的效率和灵活性。在Playbook中,可以定义两种类型的变量:Playbook级别的变量和主机级别的变量。创建一个新的YAML文件,并在其中定义你的Ansible Playbook。字段中定义要执行的任务,使用不同的模块执行不同的操作。在Playbook的顶部,使用。

高性价比服务器就选:蓝易云 563

Ansible中Playbook的使用

使用Ansible中的Playbook

m0_49265034的博客 366

ansible-playbook 的使用

前言 我在前一篇博客描述 ansible的安装和使用,可以远程对我们主机进行很多操作。ansible-playbook 其实属于ansible 一部分。用ansible-playbook 命令与 用ansible命令有不同之处,且非常适合于复杂应用的部署。在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤. 如果需要参考部署ansible的安装和使用 安装好ansible ,playbooks 也可以使用了。 实践 一、ansible-playbook

fajing_feiyue的博客 9400

Ansible Playbook 基本使用

Playbook 是 Ansible 进行配置管理的组件,虽然 Ansible 的 AD-Hoc 命令功能很强大,可以完成一些基本的配置管理工作,但是 AD-Hoc 命令无法支撑复杂环境的配置管理工作。在我们实际使用 Ansible 的工作中,大部分时间都是在编写 Playbook。简单地说,playbook 是一个非常简单的配置管理和多机部署系统的基础,它非常适合部署复杂的应用程序。playbook 剧本是由一个或多个"play"组成的列表。

Yin_Shen_Zhi_Yon的博客 676

使用Ansible中的playbook

####Playbook#### ###1.Playbook的功能### playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 ###2.YAML### #简介# 是一种表达资料序列的格式,类似XML Yet Another Markup Language 2001年首次发表 www.yaml.org #特点# 可读性好 和脚本语言交互性号 易于实现 适用程序执行流梳理方式 可扩展性强 #语法简介# 在文件中用[—]开始 在文件中用[…]结尾 次行一般书写文件内容 缩

weixin_51129538的博客 181

ansible-playbook简单使用

背景: 在实际工作中,进行服务配置时,总是会对多台服务进行相同的配置,随着服务的增多,逐台手动配置的弊端越来越明显,例如:耗时、容易出错等,为什么会出现这种问题呢?因为人工配置时,不可避免的会出现上述情况。如何解决呢?我们急需更高效、安全的方法进行配置变更,这时想到了自动化运维工具-ansible,它具有配置简单、控制其他主机等功能。 为什么是它: ansible是什么: 基于python开发、实现了批量系统配置、批量程序部署、批量运行命令等功能的自动化运维工具。 ansibl...

guo_120693的博客 3671

Ansible Playbook 使用变量

如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name="{{ user }}" # 使用变量 写一个创建用户的例子: [root@localhost ~]$ cat create_user.yml ...

weixin_30929295的博客 99

ansible中playbook的使用

一、playbook playbook是使用YAML语言进行编写类似于shell脚本,是用于ansible的配置、部署、管理的剧本,剧本的拓展名通常为.yml。 playbook的基础使用 命令 功能 -u 用于ssh所连接的用户名 -k ssh登录认证的密码 -s sudo获取root用户权限 -U sudo到对应用户 -K sudo用户密码 -T ssh连接超时,默认是10秒 -C 在加上该命令后,进行playbook执行任务时不会真正执行,而是进行模拟执行,判断剧本是否有语法错误 -i 指定hosts

qq_42958401的博客 239
上一篇: 使用ansible进行lamp的分离部署
下一篇: ansible用playbook进行lamp分离部署
在你书包里拉屎
博客等级 码龄5年 149粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值