1.定义变量规范

  先说说怎样定义变量,变量名应该由字母、数字、下划线组成,变量名需要以字母开头,ansible内置的关键字不能作为变量名。

2.定义变量,使用关键字:vars

  定义变量用vars,调用变量用{{ 变量名 }}

---
- hosts: 192.168.10.2
remote_user: root
vars:
testvar1: testfile
tasks:
- name: test for var
file:
path: /test/{{testvar2}}
state: touch

  定义多个变量,如下操作:

    vars:
testvar1: testfile1
testvar2: testfile2

  或者使用YAML的块序列语法定义,等效,如下操作:

     vars:
- testvar1: testfile1
- testvar2: testfile2  

关于nginx的一个案例:  

  使用类似“属性”的方法来定义变量,这样可以更加清晰地分辨出所设置的变量是属于谁的,也方便在使用的时候调用相应的变量。

---
- hosts: 192.168.10.2
remote_user: root
vars:
nginx:
conf80: /etc/nginx/conf.d/80.conf
conf8080: /etc/nginx/conf.d/8080.conf
tasks:
- name: nginx configuration
file:
path: "{{nginx.conf80}}"
state: touch
- name: nginx configuration
file:
path: "{{nginx.conf8080}}"
state: touch

 调用变量时可用的两种语法:

语法一:   "{{nginx.conf80}}"

语法二:   "{{nginx['conf8080']}}"

 注意:关于是否在调用变量的时候使用双引号(" ")的问题:当调用变量直接被放在开头位置时候需要使用双引号,例如:path: "{{nginx.conf80}}"

    当调用变量时不在开头,则不需要使用双引号,例如:path: /test/{{testvar2}}

  前文中有描述过,当在playbook中为模块的参数赋值时,可以使用“冒号”,也可以使用“等号”,当使用“等号”为模块的参数赋值时,则不用考虑引用变量时是否使用“引号”的问题,示例如下:

---
- hosts: 192.168.10.2
remote_user: root
vars:
nginx:
conf80: /etc/nginx/conf.d/80.conf
conf8080: /etc/nginx/conf.d/8080.conf
tasks:
- name: nginx configuration
file:
path={{nginx.conf80}}
state=touch
- name: nginx configuration
file:
path={{nginx.conf8080}}
state=touch

  

3.变量文件分离,使用vars_file参数

  我们不在剧本中写入并调用变量,采用单独将变量写入一个文档里,实现变量文件分离,当我们需要调用某个变量文件中的变量时,只需要使用vars_file参数进行调用,被调用变量文件的路径前面要加上"-",横杠。

---
- hosts: 192.168.10.2
remote_user: root
vars_files:
- /playbook/nginx_vars.yml
tasks:
- name: nginx configuration
file:
path: "{{nginx.conf80}}"
state: touch
- name: nginx configuration
file:
path: "{{nginx.conf8080}}"
state: touch  

注意:vars关键字和vars_file关键字可以同时使用,示例如下:

    vars:
conf90: /etc/nginx/conf.d/9090.conf
vars_files:
- /playbook/nginx_vars.yml

  

ansible笔记(12):变量(一)的更多相关文章

  1. python3学习笔记12(变量作用域)

    变量作用域 参考http://www.runoob.com/python3/python3-function.html Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量 ...

  2. ansible笔记(12):handlers的用法

    ansible笔记():handlers的用法 这篇文章会介绍playbook中handlers的用法. 在开始介绍之前,我们先来描述一个工作场景: 当我们修改了某些程序的配置文件以后,有可能需要重启 ...

  3. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  4. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

  5. JAVA自学笔记12

    JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...

  6. matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size

    一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...

  7. SpringMVC:学习笔记(12)——ThreadLocal实现会话共享

    SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量 ...

  8. Python基础笔记_变量类型

     下面是W3C学习笔记 , , ) :] ]) :]) :]) :-]) :-]) ]) :]) :]) ) , , ]) :]) :]) ) , , , ]) :]) :]) ) ] = , ])) ...

  9. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  10. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

随机推荐

  1. oracle数据库应用开发经验

    l  日志表应该以时间做分区,方便清理 一般应用都会有一些表用来记录用户操作日志,数据变更记录,交易流水等日志型的库表.这些表最好按时间字段做分区,这样在迁移或者清理历史记录时会比较方便,借助orac ...

  2. P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)

    题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...

  3. 论文阅读笔记(十七)【ICCV2017】:Dynamic Label Graph Matching for Unsupervised Video Re-Identification

    Introduction 文章主要提出了 Dynamic Graph Matching(DGM)方法,以非监督的方式对多个相机的行人视频中识别出正确匹配.错误匹配的结果.本文主要思想如下图: 具体而言 ...

  4. Magento2 观察者模式 之 插件

    etc/di.xml 定义如下: <type name="Magento\Quote\Model\Quote\Item\ToOrderItem"> <plugin ...

  5. 170.分组-group、permission、user的操作

    分组 1.Group.objects.create(group_name):创建分组. 2.group.permissions:某个分组上的权限.多对多关系. (1)group.permissions ...

  6. Pikachu-SSRF(服务器端请求伪造)

    SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制 导致攻击者可 ...

  7. C语言->关于文件数据的录入和输出调用的函数总结

    数据输入输出对象之间的关系图: 函数使用说明: 1.一个字符的输入\输出,对象是键盘(缓存和屏幕) 1.1.getchar(a),putchar(a); 1.2.scanf(“%d”,&i), ...

  8. nginx模块之ngx_http_upstream_module

    ngx_http_upstream_module 示例: http上下文: upstream upservers{ ip_hash; //根据客户端IP进行调度,每个客户端ip地址访问时每个ip生成一 ...

  9. vue组件之间传值

    父组件向子组件传值 父组件可以在引用子组件时,通过属性绑定(v-bind:)的形式,把数据传递给子组件.在子组件的props中定义后即可使用数据 <div id="app"& ...

  10. gulp常用插件之gulp-htmlmin使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-htmlmin这是一款HTML文件压缩插件. 更多使用文档请点击访问gulp-htmlmin工具官网. 安装 一键安装不多解释 npm ...