1. 变量来源

  • inventoryfile中定义
  • playbook中定义
  • include文件和角色中定义变量
  • 系统facts  ansible hostname -m setup
  • local facts

2. 变量的使用

  {{ ansible_eth0["ipv4"]["address"] }}  或者 {{ ansible_eth0.ipv4.address }}.  复杂变量可以像字典或者熟悉一样访问. 效果一样

3. 本地变量

  ansible hostname -m setup 可以获取固定的系统facts,  在playbook中设置gather_fact:yes, playbook会自动获取远程机器的facts.  但是ansible也支持用户自定义facts

  如果目标机器上有/etc/ansible/facts.d/目录, 在该目录下有.fact结尾的json ini 或者可执行并返回json过的脚本, 都可以作为本地便变量

  例如

 /etc/ansible/facts.d/preferences.fact:

[general]
asdf=1
bar=2

  使用变量  {{ ansible_local.preferences.general.asdf }}

4. 魔法变量

  • hostvars 可以让你调用其他host的变量和facts,  即使你没有在这个机器上执行过playbook, 你仍然可以访问变量, 但是不能访问facts. 例如: {{ hostvars['test.example.com']['ansible_distribution'] }}
  • group_names 当前host所在的group的组名列表.   包括其父组
  • groups 所有组包括组中的hosts
  • inventory_hostname 配置在inventory文件中当前机器的hostname
  • play_hosts 执行当前playbook的所有机器的列表
  • inventory_dir inventory文件的路径
  • inventory_file inventory文件的路径和文件名
  • role_path 当前role的路径

5. 变量作用域

  • 全局作用域:  设置在config, 环境变量, 和命令行中的变量
  • play:  作用于play和包含的structure, 变量, role中的default和vars
  • host:  inventory, facts和register产生的变量, 只作用于某个host

  Note 1:  子组的变量会覆盖父组的变量,  host的变量会覆盖其组的变量

  Note 2:  变量优先级

roles/x/defaults/main.yml -> inventory file  ->  roles/x/vars/main.yml -> 调用role时的参数 ->  role play 中的变量 -> 执行命令-e 传入的变量.

6. fact缓存

  如果想在一个host上访问另一个host的fact 必须设置gathering setting to smart, 否则,如果你想访问另一个机器的fact, 那你必须在另外一台机器上执行过gather_fact.

  inventory 里面声明的变量是否和上面有同样的要求, 待验证-???

Ansible 变量的更多相关文章

  1. ansible变量

    ansible变量 (部分内容摘自互联网,非官方,描述不一定正确) 变量种类: 内置变量facts: 自定义变量: 命令行传递的变量 roles传递的变量 主机变量 组变量 内置变量facts: 由远 ...

  2. Ansible--03 ansible 变量

    目录 Ansible 变量 变量概述 定义变量的方式 如何定义变量 Ansible变量优先级测试 变量注册 ansibl e层级定义变量 facts缓存 Ansible 变量 变量概述 变量提供了便捷 ...

  3. 第二十七章 ansible变量介绍

    一.ansible变量介绍 1.概念 变量提供了便捷的方式来管理Ansible playbook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使用,那么如果讲 ...

  4. 007.Ansible变量Fact,魔法变量和lookup生成变量

    一 fact变量 1.1  fact简介 ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用.而setup模块获取这些信息的方法就是 ...

  5. ansible 变量详解

    定义变量的方法 1. 主机变量,在hosts文件中设置变量, [atlanta] host1 http_port= maxRequestsPerChild= host2 http_port= maxR ...

  6. ansible变量定义

    一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...

  7. Ansible变量嵌套解析

    有时候需要用到ansible的变量的嵌套解析,就是“变量中嵌套变量”.例子如下: 假设有一个外部传递的变量,system_code = CRM,而我们同时有一系列类似的变量,如: ABS_port=1 ...

  8. ansible变量引用

    1. 在/etc/ansible/hosts默认文件中定义变量 [test] 192.168.163.130 #[test:vars] #key=ansible 或者 192.168.163.130 ...

  9. ansible 变量定义和引用

    cat /etc/ansible/hosts [nodes]10.2.1.232 key=23210.2.1.43 key=43 cat debug.yaml ---- name: test how ...

随机推荐

  1. RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms

    这篇文章是讨论Datacratic所用的统计和经济理论的一些内容.我们开发了real time bidding算法s.为了实现广告主的目标,我们的算法自动地利用其它广告主的次优策略,并再查看广告的底价 ...

  2. hdu2837数论

    http://acm.hdu.edu.cn/showproblem.php?pid=2837 // a^b%p=a^(b%phi(p)+phi(p))%p #include<iostream&g ...

  3. 转-Linux系统下安装rz/sz命令及使用说明

    时间: 2013/03/20 | 分类: Linux常用命令 | 作者: 李坏 | 浏览:39,146 | 评论:5   对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务 ...

  4. Scut游戏服务器免费开源框架-3

    Scut游戏服务器免费开源框架--快速开发(3) Scut快速开发(3) 1        开发环境 需要安装的软件 a)        消息队列 b)        数据库,Sql2005以上版本 ...

  5. 从MSSQL server 2005中移植数据到Oracle 10g

    body, p, th, td, li, ul, ol, h1, h2, h3, h4, h5, h6, pre { font-family: simsun; line-height: 1.4; } ...

  6. java并发之固定对象与实例

    java并发之固定对象与实例 Immutable Objects An object is considered immutable if its state cannot change after ...

  7. boost 1.49在vs 2005下编译的方法

    首先下载boost库,网上自己搜索. 然后解压到一个目录:如D:\boost_1_49_0.然打开vs2005的命令提示符,进行D:\boost_1_49_0目录: 1.运行bootstrap.bat ...

  8. 图像资源Images Assets

    图像资源Images Assets 开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文便分享一下Images.xcassets的体验~_~ 1 ...

  9. 调用一个Activity并返回结果

    一:在main.xml文件中设置布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  10. schemamvcSpringMVC+Spring3+Hibernate4开发环境搭建

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下schemamvc <?xml version="1.0" encoding=" ...