Ansible脚本— playbook剧本(基础篇)

文章目录

  • 一、playbook 概述
    • 1.1 Ansible脚本—playbook剧本
    • 1.2 playbook的核心组件
    • 1.3 playbook的组成结构
      • hosts和users差别
  • 二、playbook的语言: YAML
    • 2.1 YAML介绍
    • 2.2 基本语法规则
    • 2.3 YAML支持的数据结构
    • 2.4 环境部署
  • 三、playbook 剧本配置
    • 3.1 设置连通性脚本
    • 3.2 指定远程用户切换用户执行任务
    • 3.3 tasks列表和action
      • 回滚 用法示例:(模拟某个服务名写错)
      • 忽略错误,继续执行
    • 3.4 针对不同的节点用户分别进行执行对应不同的任务
  • 四、变量配置
    • 4.1 Handlers 简介
    • 4.2 引入变量(四种方法)
      • 4.2.1 在playlook中定义变量
      • 4.1.2 通过ansible命令传递
      • 4.1.3 固定变量 (系统变量)
      • 4.1.4 在hosts配置文件中定义
  • 五、条件判断
    • 5.1 单条件判断
    • 5.2 多条件判断
    • 5.3 组条件判断
  • 六、迭代


一、playbook 概述

1.1 Ansible脚本—playbook剧本

1、playbook由YMAL语言编写。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。

2、通过tasks调用ansible的模板将多个play组织在一个playbook中运行。

1.2 playbook的核心组件

剧本 playbook
场地 主机组:hosts
演员 授权执行的用户:remote_user
故事情节 执行的任务:tasks(调用的是各种ansible模块)

1.3 playbook的组成结构

playbooks本身由以下各部分组成

(1)Tasks∶任务,即调用模块完成的某操作;

(2)Variables∶变量;

(3)Templates; 模板;

(4)Handlers:处理器,当某条件满足时,触发执行的操作;

ansible通过不同的模块实现相应的管理,管理的方式通过定义的清单文件(hosts)所管理的主机包括认证的方式连接的端口等。

格式

ansible-playbook 【yaml文件名】

例如∶ ansible-playbook ping.yml

常用测试命令

ansible-play play.yaml --syntax-check                #检查语法
ansible-play play.yaml --list-task                   #检查task任务
ansible-play play.yaml --list-hosts                  #检查生效的主机
ansible-play play-yaml --start-at-task='ensure is runnning' #从某个任务开始执行

参数 (免密登录)∶
-k(-ask-pass)用来交互输入ssh密码
-K(-ask-become-pass) 用来交互输入sudo密码
-u 指定用户

hosts和users差别

hosts: webserver    指定主机组,可以是一个或多个组。
remote user: root   指定远程主机执行的用户名

二、playbook的语言: YAML

2.1 YAML介绍

YAML:是一种非标记语言。是用来写配置文件的语言,非常简洁和强大。
YAML语法和其他语言类似,也可以表达散列表、标量等数据结构。

结构通过空格来展示;序列里配置项通过 - 来代表; Map里键值用 : 来分隔;YAML的扩展名为 yaml

2.2 基本语法规则

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

2.3 YAML支持的数据结构

  1. 对象:键值对的集合,又称为映射(mapping) /哈希(hashes) /字典(dictionary)

    例如:
    name:Example Developer
    变量名:对象名 属性

  2. 数组: 一组按次序排列的值,又称为序列(sequence) / 列表(list)

    例如:
    -Apple
    -Orange

  3. 纯量: 单个的,不可再分的值

    例如:
    number: 12.30
    sure: true
    变量名:数值

你可能感兴趣的:(python,linux,ansible,playbook)