文档章节

ansible变量

陈前锋
 陈前锋
发布于 2016/08/14 23:58
字数 543
阅读 336
收藏 0

变量命名规则

变量名包含字母、数字以及下划线,具体示例如下:

合法的命名:foo_port、foo5等

非法的命名:foo-port、foo port、foo.port、12等

变量作用域

ansible有3钟作用域,具体如下:

  • Global:全局变量,其中包含配置、环境变量以及命令行传入的变量
  • Play:每个play中的变量,如include_vars
  • Host:每台主机的变量,主要是fact

变量定义位置

inventory vars

在role中定义默认变量,即编辑role文件夹里的default/main.yml文件,如:

---
test_var: 'role_default_var'

在inventory中定义变量,分为host和group变量

host变量的定义具体如下:

[test-server]
127.0.0.1 connection=local test_var="inventory_host_var"

group变量的定义具体如下:

[test-group2]
127.0.0.1 connection=local

[test-group2:vars]
test_var="inventory_group_var"

另外也可以在group_vars和host_vars目录中定义

group_vars目录中,以组名为文件名,例如这里一个名为test_group2的主机组,那么就需要在group_vars中建立test_group2(注意:没有yml后缀),具体定义如下:

---
test_var: 'role_group2_var'

host_vars目录中,以主机名为文件名,例如这里有一个名为test1的主机,那么就需要在host_vars中建立test1(注意:没有yml后缀),具体定义与其它的yaml文件定义变量一样,具体如下:

---
test_var: 'role_host_var'

playbook vars

在playbook中定义,即附件里的var-lab.yaml,具体如下:

- hosts: localhost
  vars:
    test_var: "playbook_var"
  tasks:
    - debug: msg="{{http_port}}"

register vars

通过register模块进行变量命名和赋值,一般使用来接收命令处理结果,具体写法如下:

- hosts: localhost
  gather_facts: no
  tasks:
    - shell: echo "test"
      register: register_var
    - debug: msg="{{register_var}}"

set_facts vars

通过set_facts模块进行变量命名和赋值,此变量仅对当前host有效具体写法如下:

- hosts: localhost
  gather_facts: no
  tasks:
    - set_fact: one_fact="one_fact" other_fact="other_fact"
    - debug: msg="{{one_fact}}"
    - debug: msg="{{other_fact}}"

 

变量的优先级

变量的优先级指的是优先级越高的会覆盖优先级低的,下边的优先级由低到高进行排列:

  • role defaults [1]
  • inventory vars [2]
  • inventory group_vars
  • inventory host_vars
  • playbook group_vars
  • playbook host_vars
  • host facts
  • play vars
  • play vars_prompt
  • play vars_files
  • registered vars
  • set_facts
  • role and include vars
  • block vars (only for tasks in block)
  • task vars (only for the task)
  • extra vars (always win precedence)

© 著作权归作者所有

共有 人打赏支持
上一篇: ansible工程结构
下一篇: ansible简介
陈前锋

陈前锋

粉丝 3
博文 10
码字总数 1281
作品 0
广州
高级程序员
私信 提问
自动化运维工具 Ansible

学习Ansible的系列文章 Ansible 介绍 Ansible 架构 Ansible 安装 Ansible 配置文件及参数 Ansible 常用模块 Ansible playbook 1. Ansible 介绍 Ansible 是一个配置管理和应用部署工具,只需要...

行者阿难
2018/10/07
0
0
ansible 的Playbook

实验前准备:各主机之间实现ssh相互登录,关闭防火墙,SELinux,同步时间 Playbook:YAML(可读性高,用来表达数据序列的格式)格式,任务(task) 可以用YAML脚本批量执行计划好的命令,从而...

工运搬维运
2018/06/26
0
0
ansible--变量

ansible中的变量主要来源于以下几种场景: Inventory(host vars,group vars) playbook里面 命令行 playbook执行task过程中产生结果,可以register起来,作为变量给下面的task使用 roles里面 ...

Gavin7216
2017/07/10
0
0
ansible配置文件ansible.cfg详解

Ansible 配置是以ini格式存储数据的,在Ansible中,几乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运行Ansible命令时,命令将会按照预先设定的顺序查找配置文件 1)ANSIB...

Allen_Jol
2018/03/25
0
0
ansible--基础

马哥出品 ansible中文文档:http://www.ansible.com.cn/index.html ansible介绍: ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT运维管理工具...

Gavin7216
2017/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜

智能大数据专家表示:每一段重要的时期都会有一串隐秘的数字密码,请往下看: 本周共有50条新闻,作为嗅嗅的样本进行数据分析,得出以下统计图: 1.新闻热词折线统计图 在新闻标题及正文中,...

forespider
25分钟前
1
0
Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
今天
1
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
今天
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
今天
3
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部