playbook 变量

文章目录

  • playbook 变量
    • 1. 变量介绍
    • 2. 定义变量
      • 2.1 可以在Ansible项目中的多个位置定义变量。为三个范围级别:
    • 2.2 定义
    • 3. 主机变量和组变量
    • 4. 从命令行覆盖变量
    • 5. 数组
    • 6. 使用已注册变量捕获命令输出

1. 变量介绍

Ansible支持利用变量来存储值,并在Ansible项目的所有文件中重复使用这些值。这可以简化项目的创建和维护,并减少错误的数量。

通过变量,可以轻松地在Ansible项目中管理给定环境的动态值。例如,变量可能包含下面这些值:

  • 要创建的用户
  • 要安装的软件包
  • 要重新启动的服务
  • 要删除的文件
  • 要从互联网检索的存档

2. 定义变量

  • 变量的名称必须以字母开头,并且只能包含字母、数字和下划线

2.1 可以在Ansible项目中的多个位置定义变量。为三个范围级别:

  • 全局范围:从命令行或Ansible配置设置的变量
  • Play范围:在play和相关结构中设置的变量
  • 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量

2.2 定义

[root@129a httpd]# ls
ansible.cfg  group_vars  install.yml  vars
files        host_vars   inventory    web
[root@129a httpd]# cd vars/
[root@129a vars]# ls
httpd
[root@129a vars]# cat httpd
web: httpd
[root@129a vars]# vim httpd
[root@129a vars]# cat httpd
web: httpd
user: apache
[root@129a vars]# vars:user: joetasks:# This line will read: Creates the user joe- name: Creates the user {{ user }}user:# This line will create the user named joename: "{{ user }}"

3. 主机变量和组变量

  • 直接应用于主机的清单变量分为两在类:

    • 主机变量,应用于特定主机
    • 组管理,应用于一个主机组或一组主机组中的所有主机
  • 主机变量优先于组变量,但playbook中定义的变量的优先级比这两者更高。

[root@129a httpd]# ls
ansible.cfg  group_vars  install.yml  vars
files        host_vars   inventory    web
[root@129a httpd]# vim inventory
[root@129a httpd]# cat inventory
[webservers]
130h
132a
133b[webservers:vars]
ansible_user=root
ansible_password=run123456
[root@129a httpd]# [root@129a httpd]# vim group_vars/webservers
[root@129a httpd]# cat group_vars/webservers
ansible_user: root
ansible_password: run123456
[root@129a httpd]# vim host_vars/130h
[root@129a httpd]# cat host_vars/130h
ansible_user: root
ansible_password: run123456
[root@129a httpd]#

4. 从命令行覆盖变量

  • 清单变量可被playbook中设置的变量覆盖,这两种变量又可通过在命令行中传递参数到ansible或ansible-playbook命令来覆盖。在命令行上设置的变量称为额外变量。
  • 当需要覆盖一次性运行的playbook的变量的已定义值时,额外变量非常有用
ansible-playbook main.yml -e "package=apache2"
ansible-playbook all -e "ansible_password=run123456" -m ping

5. 数组

  • 除了将同一元素相关的配置数据(软件包列表、服务列表和用户列表等)分配到多个变量外,也可以使用数组。这种做法的一个好处在于,数组是可以浏览的
users:bjones:first_name: Boblast_name: joneshome_dir: /users/bjonesacook:first_name: Annelast_name: Cookhome_dir: /users/acook[root@129a httpd]# vim vars/httpd
[root@129a httpd]# cat vars/httpd
lamp:pkg:web: httpddatabase: mariadbapplication: php
[root@129a httpd]#
用这样引用
{{ lamp.pkg.web }}
或
{{ lamp["pkg"]["web"] }} 最好使用这个
  • 如果键名与python方法或属性的名称(如discard、copy和add)相同,点表示法可能会造成问题。使用中括号表示法有助于避免冲突和错误。

  • 但要声明的是,上面介绍的两种语法都有效,但为了方便故障排除,建议在任何给定Ansible项目的所有文件中一致地采用一种语法,不要混用。

6. 使用已注册变量捕获命令输出

  • 可以使用register语句捕获命令输出。输出保存在一个临时变量中,然后在playbook中可用于调试用途或者达成其他目的,例如基于命令输出的特定配置。
[root@129a httpd]# vim test.yml
[root@129a httpd]# cat test.yml
---
- hosts: alltasks:- name: testcommand: "ls /root/"register: result- debug: var=result
[root@129a httpd]# 

playbook 变量相关推荐

  1. Ansible Playbook 变量与 register 详解

    ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件 ansi-manager CentOS7.5 17 ...

  2. playbook变量

    1.变量命名 只能包含数字,下划线,字母 只能用下划线或字母开头 2.变量级别 全局:从命令行或配置文件中设定的 play:在play和相关结构中设定的 主机:由清单,事实收集或注册的任务 变量优先级 ...

  3. Linux运维-day44-综合架构-playbook剧本的变量、条件语句及循环语句

    环境准备: m01管理服务器(外网:10.0.0.61:内网:172.16.1.61) backup(外网:10.0.0.41:内网:172.16.1.41) nfs01(外网:10.0.0.31:内 ...

  4. SUDO提权-Ansible配置-变量-Playbook应用案例

    返回 文章目录 1 案例1:配置sudo权限 1.1 问题 1.2 方案 步骤一:配置sudo提权 2 案例2:修改Ansible配置 2.1 问题 步骤一:配置普通用户远程管理其他主机 1)修改主配 ...

  5. Ansible中的playbook详解

    首先简单说明一下playbook,playbook是什么呢? 根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断 ...

  6. 1. ansible-playbook 变量定义与引用

    简单的playbook playbook 是ansible的核心组件,使用的是YAML语法. 下面请看简单的playbook代码 [root@LeoDevops playb]# cat nginx.y ...

  7. Ansible之Playbook使用

    一.Playbook是什么 playbook-剧本(也称编排) 介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单 ...

  8. Ansible Playbook剧本

    编写Ansible Playbook剧本,使用Playbook完成自动化操作 熟悉Playbook语法格式 编写Playbook管理系统账户 编写Playbook管理逻辑卷 编写Playbook管理软 ...

  9. ansible之playbook角色

    ansible之playbook&角色 playbook-剧本 简介 playbook组件用法 playbook变量 playbook语句 roles-角色 简介 用法 实战 playbook ...

最新文章

  1. build_transformer_model如果不返回keras的bert模型返回的是什么?
  2. 4 次版本迭代,我们将项目性能提升了 360 倍!
  3. python包安装_Python及图像处理相关包安装
  4. vue-cli 项目配置路径别名
  5. codeql php,使用codeql 挖掘 ofcms
  6. WordPress页面、文章、分类等的条件判断的标签集合
  7. 2017.9.11 聪明的燕姿 失败总结
  8. Java 第五章 类的设计与包
  9. 锋利的jQuery-3--用js给多选的checkbox或者select赋值
  10. Leetcode130.被围绕的区域
  11. Linux好用命令之dig命令
  12. [PTA]7-116 计算圆周率(c语言)(学习记录)
  13. 安鸾CMS系列之74CMS
  14. 【一牛鸣】大盘将持续震荡9.13
  15. 怎么样用阿里云RDS数据库
  16. 《C语言入门经典》Ivor Horton第十章练习题3
  17. 一个P,V操作的习题
  18. 强制双休!腾讯调整加班机制,21 点前必须离开工位
  19. 读书笔记 - -《Python网络编程》重点
  20. Java给PNG透明图片加水印,亲测可用

热门文章

  1. java vk减号_[原]在全局鼠标钩子中模拟鼠标右键单击
  2. 从源码全面解析 dubbo 服务端服务调用的来龙去脉
  3. Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)
  4. Flutter之 GridView
  5. 阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能
  6. C#实现软件注册码算法
  7. DCIM 智能化数据中心如何管理
  8. 信息系统项目管理师论文-项目范围管理
  9. 超详细的MySQL下载与安装教程(免安装版)
  10. MLX90640+STM32F103实现USB版红外测温