今天我们开始学习ansible之playbook的简单运用

一、Playbook简介


playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,可以让远程主机达到预期状态,也可以说,playbook字面意思是剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。

二、Playbook核心元素(背会)


  • Hosts 执行的远程主机列表

  • Tasks 任务集

  • Varniables 内置变量或自定义变量在playbook中调用

  • Templates 模板,即使用模板语法的文件,后缀.j2,比如配置文件等

  • Handlers 和notify结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行

  • tags 标签,指定某条任务执行,用于选择运行playbook中的部分代码

三、Playbook语法


playbook使用yaml语法格式,后缀可以是yaml,也可以是yml

  • 一般情况下,一个playbook需要使用"---"开始。
  • 在单一一个playbook文件中,可以连续三个连子号(---)区分多个play。还有选择性的连续三个点号(...)用来表示play的结尾,也可省略。

  • 次行开始正常写playbook的内容,一般都会写上描述该playbook的功能

  • 使用#号注释代码

  • 缩进必须统一,不能空格和tab混用

  • 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行实现的

  • YAML文件内容和Linux系统大小写判断方式保持一致,是区分大小写的,k/v的值均需大小写敏感

  • k/v的值可同行写也可以换行写。同行使用<span style="background-color:red;">: </span>分隔

  • v可以是个字符串,也可以是一个列表[]

四、Playbook的运行方式


bash 复制代码
ansible-playbook filename.yml [options]
 
# ssh 连接的用户名
-u REMOTE_USER, --user=REMOTE_USER
 
# ssh登录认证密码
-k, --ask-pass    
 
# sudo 到root用户,相当于Linux系统下的sudo命令
-s, --sudo       
    
# sudo 到对应的用户
-U SUDO_USER, --sudo-user=SUDO_USER   
 
# 用户的密码(---sudo时使用)
-K, --ask-sudo-pass     
 
# ssh 连接超时,默认 10 秒
-T TIMEOUT, --timeout=TIMEOUT
 
# 指定该参数后,执行 playbook 文件不会真正去执行,而是模拟执行一遍,然后输出本次执行会对远程主机造成的修改
-C, --check      
 
# 设置额外的变量如: key=value 形式 或者 YAML or JSON,以空格分隔变量,或用多个-e
-e EXTRA_VARS, --extra-vars=EXTRA_VARS    
 
# 进程并发处理,默认 5
-f FORKS, --forks=FORKS    
 
# 指定 hosts 文件路径,默认 default=/etc/ansible/hosts
-i INVENTORY, --inventory-file=INVENTORY   
 
# 指定一个 pattern,对- hosts:匹配到的主机再过滤一次
-l SUBSET, --limit=SUBSET    
 
# 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook
--list-hosts  
 
# 列出该 playbook 中会被执行的 task
--list-tasks   
 
# 私钥路径
--private-key=PRIVATE_KEY_FILE   
 
# 同一时间只执行一个 task,每个 task 执行前都会提示确认一遍
--step    
 
# 只检测 playbook 文件语法是否有问题,不会执行该 playbook
--syntax-check  
 
# 当 play 和 task 的 tag 为该参数指定的值时才执行,多个 tag 以逗号分隔
-t TAGS, --tags=TAGS   
 
# 当 play 和 task 的 tag 不匹配该参数指定的值时,才执行
--skip-tags=SKIP_TAGS   
 
# 输出更详细的执行过程信息,-vvv可得到所有执行过程信息。
-v, --verbose 

五、Playbooks中tasks语法使用


1、file

操作文件,比如创建文件或目录、删除文件或目录、修改文件权限等

常用参数:

  • path: 指定要操作的文件或目录

  • state: 参数非常灵活,可以包含的值及含义如下

    • directory - 与path结合说明我们要操作的是一个目录
    • touch - 与path结合说明我们要操作的是一个文件

    • link - 创建软连接

    • hard - 创建硬链接

    • absent - 删除目标

  • src: 当state设置为link或hard创建链接时,用于说明链接哪个文件,指定链接源

  • force: 值为yes表示强制创建

  • owner: 指定被操作文件的属主

  • group: 指定被操作文件的属组

  • mode: 指定被操作文件的权限

相关推荐
Full Stack Developme8 小时前
Linux 多种压缩格式,优缺点和适用场景
linux·运维·服务器
旖旎夜光8 小时前
Linux(4)(下)
linux·学习
敲敲了个代码11 小时前
从硬编码到 Schema 推断:前端表单开发的工程化转型
前端·javascript·vue.js·学习·面试·职场和发展·前端框架
yBmZlQzJ12 小时前
财运到内网穿透域名解析技术机制与中立评估
运维·经验分享·docker·容器·1024程序员节
Shanxun Liao12 小时前
Cenots 7.9 配置多台 SSH 互信登陆免密码
linux·运维·ssh
j_xxx404_12 小时前
Linux:第一个程序--进度条|区分回车与换行|行缓冲区|进度条代码两个版本|代码测试与优化
linux·运维·服务器
一点晖光12 小时前
jenkins优化记录
运维·jenkins
looking_for__13 小时前
【Linux】Ext系列文件系统
linux
我命由我1234513 小时前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法
最贪吃的虎14 小时前
Git: rebase vs merge
java·运维·git·后端·mysql