ansible笔记(12):变量(一)
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):变量(一)的更多相关文章
- python3学习笔记12(变量作用域)
变量作用域 参考http://www.runoob.com/python3/python3-function.html Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量 ...
- ansible笔记(12):handlers的用法
ansible笔记():handlers的用法 这篇文章会介绍playbook中handlers的用法. 在开始介绍之前,我们先来描述一个工作场景: 当我们修改了某些程序的配置文件以后,有可能需要重启 ...
- ansible笔记(10):初识ansible playbook
ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...
- JAVA自学笔记12
JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...
- 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 ...
- SpringMVC:学习笔记(12)——ThreadLocal实现会话共享
SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量 ...
- Python基础笔记_变量类型
下面是W3C学习笔记 , , ) :] ]) :]) :]) :-]) :-]) ]) :]) :]) ) , , ]) :]) :]) ) , , , ]) :]) :]) ) ] = , ])) ...
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
随机推荐
- linux之定时任务调度
crond:任务调度 任务调度:是指系统在某个时间执行特定的程序或命令 任务调度分类: (1)系统工作,有些重要的工作必须周而复始地进行,如病毒扫描等 (2)个别用户工作:个别用户可能希望执行某些程序 ...
- .net core 3.0 swagger
1.安装swagger包 2.startup里configservers Configure 3.可能出现的错误 提示error xxxxnot found 由于我创建的webapi是restful ...
- PHP 计算当前时间是这一年的第几周
$week = intval(date('W',time()));
- C#设计模式学习笔记:(1)单例模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8250985.html,记录一下学习过程以备后续查用. 一.引言 设计模式的分类: 1)依目的: 创建型(Cr ...
- docker镜像下载出现:received unexpected HTTP status: 500 Internal Server Error
1.镜像下载总是出现报错:received unexpected HTTP status: 500 Internal Server Error 2.尝试多种方法: ①阿里云docke加速器:注册之后, ...
- linux服务基础之nginx配置详解
nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/ ...
- 神经网络反向传播算法&&卷积神经网络
听一遍课程之后,我并不太明白这个算法的奇妙之处?? 为啥? 神经网络反向传播算法 神经网络的训练依靠反向传播算法,最开始输入层输入特征向量,网络层计算获得输出,输出层发现输出和正确的类号不一样,这时就 ...
- 你这是virus吧?
谁在我的vps上跑了这个?我的备份终于起一定作用了. GO declare @sql varchar(8000) while (select count(*) from sysobjects wher ...
- 使用uni-app开发小程序,关于小程序更新后与用户本地不会及时更新解决办法
1.原因分析 在小程序更新开发版本之后,用户本地并没有对之前版本的小程序进行删除,那么再进入小程序的时候的版本是不会发生变化的,这是由于发版是异步执行,因此新版本将会覆盖的比较慢,本质是小程序的启动方 ...
- C#调用C++类库例子
一.新建一个解决方案,并在解决方案下添加一个.netframework的项目,命名为FrameworkConsoleTest.再添加一个C++的动态链接库DLL项目,命名为EncryptBase. 二 ...