Ansible playbook详解

playbook是ansible用于配置,部署,和被管理被控节点的剧本

playbook常用的YMAL格式:(文件名称以  .yml结尾)

1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。   

2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。   

3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。   

4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。   

5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。

playbook由三个部分组成:

host部分:使用host指示使用哪个主机或主机组来运行下面的tasks

remote_user:指定远程主机中的哪个用户来登录远端系统,在远端系统执行tasks的用户

tasks:指定远端主机将要执行的一系列动作,tasks的核心为ansible的模块

 playbook的核心元素:

hosts:主机组;

tasks:任务列表

variables:变量,设置方式有四种

Templates:包含了模板语法的文本文件

Handlers:由特点条件触发的任务

[root@server ansible]# vim nginx.yml
---
- hosts: webremote_user: roottasks:- name: install nginxyum: name=nginx state=present- name: copy nginx.confcopy: src=/tmp/nginx.conf dest=/etc/nginx/nginx.conf backup=yesnotify: reload    #当nginx.conf发生改变时,通知给相应的handlerstags: reloadnginx   #打标签- name: start nginx serviceservice: name=nginx state=startedtags: startnginx   #打标签handlers:  #注意,前面没有-,是两个空格- name: reloadservice: name=nginx state=restarted  #为了在进程中能看出来

 运行前的三部曲

检查错误:ansible-playbook  nginx.yml  --syntax-check

列出所有任务:ansible-playbook  nginx.yml  --list-task

列出在那些机器执行:ansible-playbook  nginx.yml  --list-hosts

运行:ansible-playbook  nginx.yml

 variables部分(vars为调用定义变量)

1.facts:可直接调用

setup模块就是通过facts组件来实现的,用setup模块获取,直接放入剧本中调用即可

2.用户自定义变量

vars :

    - var1: cc1

    - var2: cc2 

   1.如果未在剧本中定义变量可以使用 ansible-playbook nginx.yml  -e  rpmname=keepalived

    2.修改剧本定义

 模板 templates

模板支持:

字符串:使用单引号或双引号;
  数字:整数,浮点数;
  列表:[item1, item2, ...]
  元组:(item1, item2, ...)
  字典:{key1:value1, key2:value2, ...}
  布尔型:true/false
  算术运算:
    +, -, *, /, //, %, **
  比较操作:
    ==, !=, >, >=, <, <=
  逻辑运算:
    and, or, not

修改剧本:  修改剧本来定义变量 

此处的rpmname代表的调用的文件名称为rpmname,下面的nginxport为此文件中的变量模块。copy模块也需要修改为template模块。

 字典

- name: install some packages
  yum: name={{ item }} state=present
  with_items:
    - nginx
    - memcached
    - php-fpm

传入多个参数
- name: add some groups
  group: name={{ item }} state=present
  with_items:
    - group11
    - group12
    - group13
- name: add some users
  user: name={{ item.name }} group={{ item.group }} state=present
  with_items:
    - { name: 'user11', group: 'group11' }
    - { name: 'user12', group: 'group12' }
    - { name: 'user13', group: 'group13' }

相当于一个一个传参给定义的相应接收的位置

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

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

相关文章

原型制作神器ProtoPie的使用Unity与网页跨端交互

什么是ProtoPie&#xff1f; ProtoPie是一款面向设计师的软件原型设计工具&#xff0c;例如制作App界面交互展示&#xff0c;制作好的原型可以一键发布到Web服务器&#xff0c;就可以浏览器访问。由于其内置了大量常用交互类型&#xff0c;以及"程序化"模块&#xf…

hash算法

一、Hash散列算法介绍 1.引言 每个人在这个社会上生存&#xff0c;都会有一个属于自己的标记&#xff0c;用于区分不同的个体。通常使用名字就可以了。但是一个名字也并不能完全表示一个人&#xff0c;因为重名的人很多。所以我们可以使用一个身份证号或者指纹来表示独一无二…

力扣每日一道系列 --- LeetCode 160. 相交链表

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 LeetCode 160. 相交链表 思路&#xff1a; 首先计算两个链表的长度&#xff0c;然后判断两个链…

Open X-Embodiment 超大规模开源真实机器人数据集分享

近期&#xff0c;Google旗下的前沿人工智能企业DeepMind汇集了来自 22 种不同机器人类型的数据&#xff0c;创建了 Open X-Embodiment 数据集并开源了出来。该数据集让他们研发的RT-2 机器人在制造和编程方式上有了重大飞跃。 有分析称&#xff0c;在上述数据集上训练的 RT-2-…

gpt-4-turbo、gpt-4v、dall-e-3 api实测!

上周GPT大更新&#xff0c;不仅开放了GPT-4-Turbo、GPT-4-Vision等模型api&#xff0c;还发布了GPTs&#xff0c;使得用户能够根据需要定义自己的GPT应用&#xff0c;OpenAI在这波AI革命上又一次震撼世人。 笔者也在上周拿到了几个新模型的api资格&#xff0c;一直盼着可以测试…

专业的SRM系统全流程管理服务

一、什么是SRM系统 SRM系统&#xff0c;即供应商关系管理&#xff0c;是供应链管理中的重要组成部分&#xff0c;帮助企业与供应商建立、维护和改善业务关系&#xff0c;以实现双方共赢。本文将从供应商寻源到合同签订、订单履行、到付款及供应商评价等环节&#xff0c;阐述SR…

【MybatisPlus】条件构造器、自定义SQL、Service接口

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MybatisPlus 一、条件构造器1.1 基于QueryW…

Python如何使用Matplotlib模块的pie()函数绘制饼形图?

Python如何使用Matplotlib模块的pie函数绘制饼形图&#xff1f; 1 模块安装2 实现思路3 pie()函数说明4 实现过程4.1 导入包4.2 定义一个类4.3 读取数据并处理4.4 定义饼图绘制方法 5 完整源码 1 模块安装 先安装matplotlib&#xff1a; pip install matplotlib安装numpy模块…

算不上最全,但都是必备——MySQL这些不会不行啊

MySQL篇 update 没加索引会锁全表&#xff1f; 说个前提&#xff0c;接下来说的案例都是基于 InnoDB 存储引擎&#xff0c;且事务的隔离级别是可重复读。 假设有两个事务的执行顺序如下&#xff1a; 可以看到&#xff0c;事务 A 的 update 语句中 where 是等值查询&#xff…

简洁高效的微信小程序分页器封装实践

前言 在现今的移动应用开发中&#xff0c;微信小程序已经成为了一个备受欢迎的平台。然而&#xff0c;随着应用的复杂性增加&#xff0c;数据的管理和加载成为了一个问题。本文将探讨微信小程序中的一个关键概念&#xff1a;封装分页器&#xff0c;它是提升小程序性能和用户体验…

NOIR脑机接口机器人——让脑机接口通过少样本学习实现做家务的能力

一、概述 大脑与机器人接口&#xff08;BRI&#xff09;是人类艺术、科学和工程的集大成之作&#xff0c;其影响已经贯穿于无数科幻作品和创意艺术之中&#xff0c;如《黑客帝国》和《西部世界》等。然而&#xff0c;要真正实现BRI并创造出能够与人类完美协同运作的机器人系统…

傅里叶分析(1)

​本文介绍了傅里叶分析及其在CFD的应用。由于篇幅原因&#xff0c;将其拆分为系列化文章&#xff1a; 连续信号的傅里叶分析离散信号的傅里叶分析傅里叶分析在CFD的一些应用在Fluent进行傅里叶分析的操作 1 概述 傅里叶分析是信号分析中常用方法之一。傅里叶分析可将信号在时…