playbook 变量
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 变量相关推荐
- Ansible Playbook 变量与 register 详解
ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件 ansi-manager CentOS7.5 17 ...
- playbook变量
1.变量命名 只能包含数字,下划线,字母 只能用下划线或字母开头 2.变量级别 全局:从命令行或配置文件中设定的 play:在play和相关结构中设定的 主机:由清单,事实收集或注册的任务 变量优先级 ...
- 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:内 ...
- SUDO提权-Ansible配置-变量-Playbook应用案例
返回 文章目录 1 案例1:配置sudo权限 1.1 问题 1.2 方案 步骤一:配置sudo提权 2 案例2:修改Ansible配置 2.1 问题 步骤一:配置普通用户远程管理其他主机 1)修改主配 ...
- Ansible中的playbook详解
首先简单说明一下playbook,playbook是什么呢? 根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断 ...
- 1. ansible-playbook 变量定义与引用
简单的playbook playbook 是ansible的核心组件,使用的是YAML语法. 下面请看简单的playbook代码 [root@LeoDevops playb]# cat nginx.y ...
- Ansible之Playbook使用
一.Playbook是什么 playbook-剧本(也称编排) 介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单 ...
- Ansible Playbook剧本
编写Ansible Playbook剧本,使用Playbook完成自动化操作 熟悉Playbook语法格式 编写Playbook管理系统账户 编写Playbook管理逻辑卷 编写Playbook管理软 ...
- ansible之playbook角色
ansible之playbook&角色 playbook-剧本 简介 playbook组件用法 playbook变量 playbook语句 roles-角色 简介 用法 实战 playbook ...
最新文章
- build_transformer_model如果不返回keras的bert模型返回的是什么?
- 4 次版本迭代,我们将项目性能提升了 360 倍!
- python包安装_Python及图像处理相关包安装
- vue-cli 项目配置路径别名
- codeql php,使用codeql 挖掘 ofcms
- WordPress页面、文章、分类等的条件判断的标签集合
- 2017.9.11 聪明的燕姿 失败总结
- Java 第五章 类的设计与包
- 锋利的jQuery-3--用js给多选的checkbox或者select赋值
- Leetcode130.被围绕的区域
- Linux好用命令之dig命令
- [PTA]7-116 计算圆周率(c语言)(学习记录)
- 安鸾CMS系列之74CMS
- 【一牛鸣】大盘将持续震荡9.13
- 怎么样用阿里云RDS数据库
- 《C语言入门经典》Ivor Horton第十章练习题3
- 一个P,V操作的习题
- 强制双休!腾讯调整加班机制,21 点前必须离开工位
- 读书笔记 - -《Python网络编程》重点
- Java给PNG透明图片加水印,亲测可用
热门文章
- java vk减号_[原]在全局鼠标钩子中模拟鼠标右键单击
- 从源码全面解析 dubbo 服务端服务调用的来龙去脉
- Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)
- Flutter之 GridView
- 阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能
- C#实现软件注册码算法
- DCIM 智能化数据中心如何管理
- 信息系统项目管理师论文-项目范围管理
- 超详细的MySQL下载与安装教程(免安装版)
- MLX90640+STM32F103实现USB版红外测温