ansible playbook 变量
变量优先级
- 在命令中定义的变量(-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 变量的更多相关文章
- Ansible Playbook 变量与 register 详解
ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...
- ansible playbook实践(四)-如何调试写好的playbook文件
有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...
- ansible笔记(10):初识ansible playbook
ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...
- 写Ansible playbook添加zabbix被监控的对象
本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...
- ansible 列表变量、字典变量
ansible的变量不仅可以是单个的值,也可以为列表. - hosts: localhost gather_facts: no vars: - list: [1,2,3] tasks: - name: ...
- Ansible Playbook Variables
虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...
- Ansible playbook基础组件介绍
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible playbook基本操作
一.ansible playbook简单使用 相当于是把模块写入到配置文件里面 vim /etc/ansible/test.yml //写入如下内容: --- - hosts: 127.0.0.1 r ...
随机推荐
- Facebook开源最先进的语音系统wav2letter++
最近,Facebook AI Research(FAIR)宣布了第一个全收敛语音识别工具包wav2letter++.该系统基于完全卷积方法进行语音识别,训练语音识别端到端神经网络的速度是其他框架的两倍 ...
- Spring 使用介绍(八)—— 零配置(一)
一.概述 所谓零配置,并不是说一点配置都没有了,而是配置很少而已.通过约定来减少需要配置的数量,提高开发效率. 零配置实现主要有以下两种方式: 惯例优先原则:也称为约定大于配置(convention ...
- Spring注解与Java元注解小结
注解 Annotation 基于注解的开发,使得代码简洁,可读性高,简化的配置的同时也提高了开发的效率,尤其是SpringBoot的兴起,随着起步依赖和自动配置的完善,更是将基于注解的开发推到了新的高 ...
- Codeforces Round #432 Div. 1
A:大胆猜想合法点不会很多,于是暴力检验,一旦发现不合法就break,可以random_shuffle一下. #include<iostream> #include<cstdio&g ...
- springMVC整理02--常用注解的使用
1.使用@RequestMapping 映射请求 1.1在类和方法上添加@RequestMappingSpringMVC 使用@RequestMapping 为控制器指定可以处理哪些 URL 请求. ...
- 最简单的spring boot web项目
搭建效果为: 直接在网页输入请求,在页面中显示一行文字:Hello,Spring Boot 与一般的wen项目不同的地方: 1.不需要配置web.xml 文件,但需要注解@SpringBootAppl ...
- Add Zabbix Agent
添加第三方源进行安装CentOS/RHEL 7:# rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2. ...
- 用keras实现基本的回归问题
数据集介绍 共有506个样本,拆分为404个训练样本和102个测试样本 该数据集包含 13 个不同的特征: 人均犯罪率. 占地面积超过 25000 平方英尺的住宅用地所占的比例. 非零售商业用地所占的 ...
- BUG关闭原因
已解决:缺陷已经修复. 重复缺陷:是指在系统里相同原因的缺陷已经被其他人报告.在此缺陷被作为重复缺陷返回时,先不要立即取消.必须等到核查修复后,才在系统里取消.这是因为有些缺陷被误认为是重复缺陷,实际 ...
- uvaLive6837 ThereIsNoAlternative (kruskal)
题意:给一个联通图,求出不可替代的边,即存在于所有最小生成树中的边,的数量和它们边权之和 首先kruskal跑出一个最小生成树,枚举其中所有的边,若把这条边去掉以后再跑kruskal答案不是最小,则这 ...