ansible-playbook 使用详解

第一百一十天 : ansible-playbook 使用详解 PlayBook:核心元素:Tasks:任务,由模块定义的操作的列表; Variables:变量 Templates:模板,即使用了模板语法的文本文件; Handlers:由特定条件触发的Tasks; Roles:角色; playbook的基础组件:Hosts:运行指定任务的目标主机; remote_user:在远程主机以哪个用户身份执行; sudo_user:非管理员需要拥有sudo 阅读详情

PlayBook:

核心元素:

Tasks:任务,由模块定义的操作的列表; 
Variables:变量 
Templates:模板,即使用了模板语法的文本文件; 
Handlers:由特定条件触发的Tasks; 
Roles:角色; 
playbook的基础组件:

Hosts:运行指定任务的目标主机; 
remote_user:在远程主机以哪个用户身份执行; 
sudo_user:非管理员需要拥有sudo权限; 
tasks:任务列表

模块,模块参数:

格式:

(1) action: module arguments 
(2) module: arguments 
核心元素:

Tasks:任务,由模块定义的操作的列表; 
Variables:变量 
Templates:模板,即使用了模板语法的文本文件; 
Handlers:由特定条件触发的Tasks; 
Roles:角色;

playbook的基础组件:

Hosts:运行指定任务的目标主机; 
remote_user:在远程主机以哪个用户身份执行; 
sudo_user:非管理员需要拥有sudo权限; 
tasks:任务列表

模块,模块参数: 
格式:

(1) action: module arguments 
(2) module: arguments

示例1:

- hosts: all
remote_user: root
tasks:
- name: install a group
group: name=mygrp system=true
- name: install a user
user: name=user1 group=mygrp system=true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
- hosts: websrvs
remote_user: root
tasks:
- name: install httpd package
yum: name=httpd
- name: start httpd service
service: name=httpd state=started
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行playbook,使用ansible-playbook命令 
(1) 检测语法 
ansible-playbook –syntax-check /path/to/playbook.yaml 
(2) 测试运行 
ansible-playbook -C /path/to/playbook.yaml 
–list-hosts 
–list-tasks 
–list-tags 
(3) 运行 
ansible-playbook /path/to/playbook.yaml 
-t TAGS, –tags=TAGS 
–skip-tags=SKIP_TAGS 
–start-at-task=START_AT

handlers:由特定条件触发的Tasks; 
调用及定义方式:

tasks:
- name: TASK_NAME
  module: arguments
  notify: HANDLER_NAME
handlers:
- name: HANDLER_NAME
  module: arguments
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

示例:

- hosts: websrvs
  remote_user: root
  tasks:
  - name: install httpd package
    yum: name=httpd state=latest
  - name: install conf file
    copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf
    notify: restart httpd service
  - name: start httpd service
    service: name=httpd state=started
handlers:
  - name: restart httpd service
  service: name=httpd state=restarted
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

tags:给指定的任务定义一个调用标识;

- name: NAME
  module: arguments
  tags: TAG_ID
  • 1
  • 2
  • 3

Variables: 
类型: 
内建: 
(1) facts 
自定义: 
(1) 命令行传递; 
-e VAR=VALUE 
(2) 在hosts Inventory中为每个主机定义专用变量值; 
(a) 向不同的主机传递不同的变量 ; 
IP/HOSTNAME variable_name=value 
(b) 向组内的所有主机传递相同的变量 ; 
[groupname:vars] 
variable_name=value 
(3) 在playbook中定义 
vars: 
– var_name: value 
– var_name: value

(4) Inventory还可以使用参数: 
用于定义ansible远程连接目标主机时使用的属性,而非传递给playbook的变量; 
ansible_ssh_host 
ansible_ssh_port 
ansible_ssh_user 
ansible_ssh_pass 
ansible_sudo_pass 
…

(5) 在角色调用时传递 
roles: 
– { role: ROLE_NAME, var: value, …}

变量调用: 
{{ var_name }}

Templates:模板 
文本文件,内部嵌套有模板语言脚本(使用模板语言编写)

Jinja2 is a template engine written in pure Python. It provides a Django inspired non-XML syntax but supports inline expressions and an optional sandboxed environment.

语法: 
字面量: 
字符串:使用单引号或双引号; 
数字:整数、浮点数; 
列表:[item1, item2, …] 
元组:(item1, item2, …) 
字典:{key1:value1, key2:value2, …} 
布尔型:true/false

算术运算: 
+, -, , /, //, %, *

比较操作: 
==, !=, >, <, >=, <=

逻辑运算:and, or, not

执行模板文件中的脚本,并生成结果数据流,需要使用template模块;

template: 
-a ”“ 
src= 
dest= 
mode= 
onwer= 
group=

注意:此模板不能在命令行使用,而只能用于playbook;

示例:

- hosts: ngxsrvs
  remote_user: root
  tasks:
  - name: install nginx package
    yum: name=nginx state=latest
  - name: install conf file
    template: src=/root/nginx.conf.j2 dest=/etc/nginx/nginx.conf
    tags: ngxconf
    notify: reload nginx service
  - name: start nginx service
    service: name=nginx state=started enabled=true
handlers:
  - name: reload nginx service
    shell: /usr/sbin/nginx -s reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

条件测试: 
when语句:在tasks中使用,Jinja2的语法格式;

- hosts: all
  remote_user: root
  tasks:
  - name: install nginx package
    yum: name=nginx state=latest
  - name: start nginx service on CentOS6
    shell: service nginx start
    when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "6"
  - name: start nginx service
    shell: systemctl start nginx.service
    when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

循环:迭代,需要重复执行的任务; 
对迭代项的引用,固定变量名为”item”,使用with_item属性给定要迭代的元素; 
元素:列表 
字符串 
字典

基于字符串列表给出元素示例:


- hosts: websrvs
  remote_user: root
  tasks:
  - name: install packages
    yum: name={{ item }} state=latest
    with_items:
     - httpd
      - php
      - php-mysql
      - php-mbstring
      - php-gd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

基于字典列表给元素示例:

- hosts: all
  remote_user: root
  tasks:
  - name: create groups
    group: name={{ item }} state=present
    with_items:
   - groupx1
    - groupx2
    - groupx3
    - name: create users
    user: name={{ item.name }} group={{ item.group }} state=present
    with_items:
    - {name: 'userx1', group: 'groupx1'}
    - {name: 'userx2', group: 'groupx2'}
    - {name: 'userx3', group: 'groupx3'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

角色:roles 
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等; 
role_name/ 
files/:存储由copy或script等模块调用的文件; 
tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用; 
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用; 
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用; 
templates/:存储由template模块调用的模板文本; 
meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用; 
default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

在playbook中调用角色的方法:

- hosts: HOSTS
  remote_user: USERNAME
  roles:
 - ROLE1
  - ROLE2
  - { role: ROLE3, VARIABLE: VALUE, ...}
  - { role: ROLE4, when: CONDITION }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

博客作业:以上所有内容; 
实战作业: 
(1) 主/备模型的keepalived+nginx; 
(2) httpd+php+php-mysql; 
(3) mysql-server或mariadb-server; 
拥有testdb库,并允许testuser对其拥有所有权限;

Ansible的Playbook详解及示例 一、Playbook 简介 Playbooks与Ad-Hoc相比,是一种完全不同的运用Ansible的方式,而且是非常之强大的;也是系统ansible命令的集合,其利用yaml语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行。 简单来说,Playbooks 是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合于复杂应用... 阅读详情

相关推荐

Ansible Playbook 变量与 register 详解

ansible 定义变量方式与[多层]变量引用,以及 register 详解

踏歌行的专栏 5457

ansible 修改文件变量_网工运维自动化——Ansible增强Telnet模块功能

注意:读者需要python3和ansible playbook基础Ansible可以说在自动化运维领域,算是十分方便的利器了。其无代理(被运维主机不需要安装插件)、依靠SSH完成所有运维操作。而且Ansible拥有丰富的模块、插件,基本上已经覆盖了所有的运维功能需求。Ansible使用python开发的,而且源代码开源,如果懂python进行二次开发也十分方便。基于Ansible通过SSH实现运维...

weixin_39929715的博客 414

ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)

导读:   软件介绍   1、 CCPROXY 6.61 注册机(纯绿/傻瓜/真正去除线程限制)   ***前言,这次的升级官方改动不大,据说只是为了不被某些软件当病毒***   附件包中解压即免安装版,CcREGTOOLFF.exe为注册机。   本人继续向大家隆重推出《CCPROXY6.61哎呀……破解版》   还是那个提示:   在此之前,本人还是那句老话想提示大家,CCPROXY是

i53nd的专栏 1万+

Ansible 重点内容篇 《Playbook》

Playbook可谓是Ansible的重头戏了,接下来我将会给大家演示几个简单的例子让大家快速上手,熟悉Playbook

weixin_47252600的博客 1261

从数据到特征:基于CAT12的MRI图像预处理实战指南

本文详细介绍了使用CAT12工具进行MRI图像预处理的完整实战流程。从数据获取、环境搭建到核心的AC-PC校正、组织分割、空间标准化与调制,逐步解析如何将原始脑影像数据转化为可用于机器学习的标准化特征图。重点阐述了预处理作为脑影像分析‘生命线’的重要性,并提供了避坑指南与自动化脚本建议,帮助研究者构建高质量的阿尔茨海默症分类模型输入特征。

weixin_29065959的博客 311

APK静态分析(取证角度)——理论部分

APP是指应用程序(Application),是指能够在手机、平板电脑、电脑等移动设备上运行的软件。APP可以帮助用户进行各种功能操作,如社交媒体、游戏、购物、学习、工作等。用户可以通过应用商店或者在线下载安装APP,然后在设备上使用它们。APP的种类非常丰富,能够满足用户不同的需求和兴趣。

currify的博客 3211

python3 ansible2.9安装完美解决依赖包问题详细

python3编译安装 tar xf Python-3.6.9.tar.gz cd Python-3.6.9 ./configure make && make install python3 -V mv /usr/bin/python ansible安装方法 pip

Mr_Sunny的博客 6947

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

Ansible详解

Usage: ansible &lt;host-pattern&gt; [options] Options: -m MODULE\_NAME, --module-name=MODULE\_NAME 要执行的模块,默认为 command -a MODULE_ARGS, --args=MODULE_ARGS 模块的参数 -u REMOTE_USER,...

顺其自然 595

基于YOLOv26的智能农业无人机巡检系统

本文提出了一种基于YOLOv26的智能农业无人机巡检系统。系统采用模块化设计,包含数据采集、预处理、目标检测、图像拼接、分析决策和部署控制六大核心模块。无人机搭载多光谱相机、RGB相机和热红外相机进行农田数据采集,通过YOLOv26实现作物病虫害、杂草及灌溉设备的检测。系统采用PyTorch、OpenCV等技术栈,支持无人机自动路径规划和多传感器数据采集,并包含数据增强和预处理功能。该系统可有效提升农业巡检效率,为精准农业提供智能化解决方案。

一键难忘的博客 810

Open3d (C++) RANSAC拟合圆柱(详细过程版)

实现了一种基于RANSAC算法的圆柱拟合方法。

点云侠的博客 241

Ansible-Playbook详解

目录一、Playbook 简介二、Playbook 图解三、YAML 介绍四、Playbook 核心元素五、Playbook 书写5.1 使用变量方法5.2 条件测试5.3 迭代5.4 Templates 模块5.5 tags 模块六、roles6.1 简介6.2 roles 目录 一、Playbook 简介 playbook是由一个或多个"play"组成的列表 play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。 Task实际是调用ansible的一个modu

Shadow__Flow的博客 1万+

1-Spring Security OAuth2专栏介绍

我自己 我是码农小胖哥,一名后端软件工程师,有多年的后端开发经验,同时也是一名热衷于技术分享、拥抱开源的技术博主。我的技术栈主要是Java、Python、Kotlin,欢迎各位同行进行交流和分享。 个人技术公众号:码农小胖哥 个人博客:https://felord.cn Gitee: https://gitee.com/felord 你可以通过以上方式和我交流、解决学习中的疑难杂症。 2021年开源Spring Security 干货系列教程,2022年又开源Spring Security进阶版,帮

码农小胖哥 7939

Ansible playbook详解

Ansible playbook 1. 简介 理解 Playbooks 是 Ansible的配置、部署、编排语言,他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合 Playbooks 与 ad-hoc相比,是一种完全不同的运用ansible的方式,是非常之强大的。 简单来说,playbooks是一种简单的配置管理系统与多机器部署系统的基础,与现有的其他系统有不同之处,且非常适合于复杂应用的部署。 playbook是ansible用于配置,部署,和管理被控节点的剧本。

Promise_410的博客 7565

借助AI搞定国社科“研究内容”部分!用Gemini 3 Pro轻松撰写6大模块,让基金本子效率质量更上一层楼

所谓研究整体框架,是对课题研究逻辑结构与技术路径的系统阐述,其核心在于通过研究目标分解、研究内容模块化与研究方法整合,构建一个层次清晰、逻辑严密、科学可行的研究体系。撰写要求:1)分要点、分层次列出主要研究内容,保持各部分之间的逻辑性、层次性与系统性;研究可行性可理解为开展本课题在理论基础、研究方法、研究条件、人员结构、平台支撑及外部协作等方面的可实施程度,可从内部条件与外部条件两个维度进行系统论证。研究背景为:我正在申报xxx年xxx(项目名称),课题名称为:xxx,拟采用的主要研究方法包括:xxx等;

智能AI让学术科研更容易 968

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Ansible playbook 详解

一、playbook流程介绍 playbook是由一个或者多个“play”组成的列表 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让他们联同起来按照事先编排的机制同唱一台大戏。 palybook采用YAML预言编写 二、yaml介绍 YAML是一个可读性高用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、

黑色小米粥 1266

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ansible playbook详解

YAML:YAML Ain't Markup Language,即YAML不是标记语言。不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。

m0_67497257的博客 2485

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Ansible的 Playbook 模式详解

本文介绍了Ansible Playbook的核心概念和使用方法。Playbook相比ad-hoc命令更强大灵活,类似于Shell脚本可编排多个任务,采用YAML格式易于维护。主要内容包括:1) Playbook的优势如功能全面、可控性强;2) Playbook组成结构,包含play和task;3) 实际案例演示如何安装httpd服务;4) 常用命令参数如语法检查、标签管理;5) 权限控制相关语法;6) 通知与触发机制(notify/handlers)的使用;7) 变量的定义方式,支持命令行、Playbook

Anthony_231 1257

ansible自动运维工具之ansible-playbook详解

本博文衔接上篇:Ansible自动化运维的安装及常用模块解释 一、Playbook简介 playbook配置文件使用YAML语法,具有简洁明了、结构清晰等特点。playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表。上面介绍的ansible命令虽然可以完成各种任务,但是当配置一些复杂任务时,逐条输入就显得效率非常低下了。更有效的方案是在playbo...

cheng198956的专栏 932

Ansible Playbook 编写与模块详解

Ansible 的Playbook是自动化运维的核心工具,它用 YAML 文件描述在远程主机上执行的一系列任务。本文详细介绍 Playbook 的结构及其各模块的概念、用途和写法,适合初学者和有经验的运维人员查阅。- name: 安装 Apache- name: 启动 ApacheTasks是执行单元Variables提供灵活性Templates动态生成配置文件Handlers响应变更,统一处理Tags定向执行特定任务when/loop控制条件和循环Roles模块化管理大型 Playbook。

kirito0000的博客 1434

Ansible Playbook剧本深入详解

Playbook配置文件使用YAML语法,具有简介明了,结构清晰等特点。Playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表,前面介绍的ansible命令虽然可以完成各种任务,但是当配置一系列任务时,逐条输入命令就显得效率非常低下,更有效的方式在playbook配置中配置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运维,YAML文件的扩展名通常为.yaml或.yml。

共产主义接班人 683

Ansible之Playbook详解、案例

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

mnasd的博客 703

Ansible自动化运维(三)Playbook 模式详解

Playbook不同于使用单个模块操作远程服务器,Playbook的功能更加强大。如果说单个模块执行类似于Linux系统中的命令,那么Playbook就类似于shell脚本,将多个模块组合起来实现一组的操作。

liu_chen_yang的博客 1万+

Ansible 之 Playbook详解

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

寻绾的博客 1984
上一篇: 干货|采用Istio实现灰度发布(金丝雀发布)
下一篇: Ansible 详细用法说明(一)
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值