变量优先级

  • 在命令中定义的变量(-e参数指定的)
  • 在inventory中定义的变量(ansible_ssh_user等)
  • 其他变量(role中、play中)
  • 系统通过father_facts定义的变量

playbook中引入变量尽量使用vars_files方式

尽少量的在inventory中使用变量

尽量避免在命令行中使用-e选项来定义变量

ansible-hoc

在执行ansible命令时,ansible默认会从/etc/ansible/host_vars和/etc/ansible/group_vars目录读取变量定义,如果这两个目录不存在,可手动创建,并且可以创建与hosts文件中定义的组名同名或host名的文件来定义变量

例:给hosts文件内test组主机定义变量

cat /etc/ansible/group_vars/test    #同host_vars变量

---
foo: foox
baz: bax cat /etc/ansible/host_vars/host1      #此处为host1文件名,ansible-playbook执行时变量只会作用于host1主机,并且会覆盖playbook和role中所有的同名变量
---
user: user

如果想从一台主机获取另一台主机的变量信息,可通过hostvars获取

//获取host1主机user变量信息

{{ hostvars['host1']['user'] }}

ansible 常用内置变量

groups        #包含所有hosts文件里主机组的一个列表

group_names    #包含当前主机所在的所有主机组名的一个列表

inventory_hostname    #通过Hosts文件定义主机的主机名

inventory_hostname_short    #变量inventory_hostname的第一部分,如www.baidu.com  这个变量的值为www

play_hosts                #将执行当前任务的所有主机

ansible-playbook

在playbook文件内通过vars字段定义变量

在playbook文件内使用var_files 引用变量

使用register内的变量

使用注册器来接受shell命令的返回结果,结果中包含标准输出(stdout)和错误输出(stderr),通常会包含4中类型结果

changed        #任务是否对远程主机造成变更
delta: #任务运行所用的时间
stdout: #正常的输出信息
stderr: #错误信息

示例①

 - name: 获取正在运行的app列表
command: forever list
register: forever_list      #将结果传给forever_list - name: 启动node.js
command: "forever start {{ node_apps_location }}/app/app.js"
when: "forever_list.stdout.find('{{ node_apps_location }}/app/app.js') == -1"

示例②

Facts信息

通过setup获取目标主机的内置变量(cpu ip 磁盘 内存、操作系统等信息)

ansible group -m setup 引用的时候以“.”作为上下级目录的取值符号

示例:python 列表取值方式

ansible_eth0.ipv4.address
ansible_eth0['ipv4']['address']

执行playbook时跳过gather_facts

---

- hosts: db
gather_facts: no

配置本地Facts变量

可以将需要定义的变量写到一个以.fact结尾的文件中。放到/etc/ansible/facts.d目录,ansible在执行任务的时候会自动到这个文件夹下读取变量信息

/etc/ansible/facts/facts.d/settings.fact

[users]
admin=test,test1
normal=tim //获取变量
ansible hostname -m setup -a "filter=ansible_local" //ansible-playbook中应用
- name: 获取本地facts
setup: filter=ansible_local

加密敏感数据

api_key.yml

---
my_key: "eqrwEQWREREWQrqeadsfaewerweQweeqwrdfsewqrqewEQWqewr" 加密: ansible=valut encrypt api_key.yml 按提示输入密码

ansible-playbook 通过参数传入变量

ansible playbook 变量的更多相关文章

  1. Ansible Playbook 变量与 register 详解

    ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...

  2. ansible playbook实践(四)-如何调试写好的playbook文件

    有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...

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

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

  4. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  5. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  6. ansible 列表变量、字典变量

    ansible的变量不仅可以是单个的值,也可以为列表. - hosts: localhost gather_facts: no vars: - list: [1,2,3] tasks: - name: ...

  7. Ansible Playbook Variables

    虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...

  8. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  9. ansible playbook基本操作

    一.ansible playbook简单使用 相当于是把模块写入到配置文件里面 vim /etc/ansible/test.yml //写入如下内容: --- - hosts: 127.0.0.1 r ...

随机推荐

  1. Maven使用(一)—— Maven的安装与全局配置

    一.Maven安装 Maven的安装步骤: 1.Maven官网(http://maven.apache.org/)下载压缩包,解压缩,当前最新版本是apache-maven-3.5.3-bin.zip ...

  2. Typecho——数据库无法连接问题

    报错 对不起,无法连接数据库,请先检查数据库配置再继续进行安装 解决方案 创建数据库 reate database databaseName; 远程权限 开启远程权限 GRANT ALL PRIVIL ...

  3. Android 修改 Menu字体颜色

    转载:http://blog.csdn.net/jayyuz/article/details/55260996 @Override public boolean onCreateOptionsMenu ...

  4. js窗体间传值

    A页面传值给 B页面 页面A <html xmlns="http://www.w3.org/1999/xhtml"> <HEAD> <TITLE> ...

  5. 洛谷P1395 会议 题解

    $题目$ 为什么这个题会有图论的标签啊,虽然图论也包括找树的重心,可是这很容易让人联想到最短路,但不得不说,这是一个典型的找树的重心模板题. 树的重心是什么? 找到一个点,其所有的子树中最大的子树节点 ...

  6. JOI 2018 Final 题解

    题目列表:https://loj.ac/problems/search?keyword=JOI+2018+Final T1 寒冬暖炉 贪心 暴力考虑每相邻两个人之间的间隔,从小到大选取即可 #incl ...

  7. project 2013 设置工期为1个工作日,但开始时间与结束时间不是同一天

    1.问题描述 project2013在工期栏输入  1  ,在开始时间结束时间点自动安排,就会出现如下情况,会被误认为是两天 2.问题解决 文件-->选项-->常规-->日期格式选择 ...

  8. MT【299】对数型数列不等式

    已知数列$\{\dfrac{1}{n}\}$的前$n$项和为$S_n$,则下面选项正确的是(      )A.$S_{2018}-1>\ln 2018$B.$S_{2018}-1<\ln ...

  9. 线性基求第k小异或值

    题目链接 题意:给由 n 个数组成的一个可重集 S,每次给定一个数 k,求一个集合 \(T \subseteq S\), 使得集合 T 在 S 的所有非空子集的不同的异或和中, 其异或和 \(T_1 ...

  10. STL的相关知识

    STL简介: STL(Standard Template Library,标准模版库)以模板类和模版函数的形式为程序员提供了各种数据结构和算法的实现,程序员通过利用STL,可以在代码空间.执行时间和编 ...