Ansible-playbook之定义变量
1.引用变量
# 变量引用方式
"{{ }}"
2.定义变量 (vars)
- hosts: web
# 定义变量
vars:
- play_var: This_is_play_vars
tasks:
- name: touch new files
file:
# 引用变量
path: "/tmp/{{ play_var }}"
state: touch
3.定义变量文件 (vars_files)
# 定义变量文件 var.yml
# cat var.yml
play_var1: play_var1_sb1
play_var2: play_var2_sb2
# 测试剧本: cat web_test.yml
- hosts: web
#引用变量文件
vars_files:
- ./var.yml
tasks:
- name: touch new files
# 引用变量
file:
name: "/tmp/{{ play_var1 }}"
state: touch
4.主机清单中定义变量 (inventory)
# cat hosts
[web]
172.16.1.7
172.16.1.8
172.16.1.9
# 定义web组的变量,仅web组可使用
[web:vars]
inventory_var=inventory_variables
# 测试剧本: cat web_test.yml
- hosts: web
tasks:
- name: touch new files
file:
path: "/tmp/{{ inventory_var }}"
state: touch
5.定义主机变量 (host_vars)
# 创建主机变量目录
mkdir host_vars
# 创建主机变量文件
touch host_vars/172.16.1.7
# cat host_vars/172.16.1.7
host_var: host_var172.16.1.7
# cat host_vars/172.16.1.8
host_var: host_var172.16.1.8
6.定义主机组变量 (group_vars)
# 创建组变量目录
mkdir group_vars
# 创建组变量文件
touch group_vars/web
# cat group_vars/web
group_vars: group_vars_web
# cat web_test.yml
- hosts:
tasks:
- name: touch new files
file:
path: "/tmp/{{ group_vars }}"
state: touch
# 创建所有主机组变量文件
touch group_vars/all
# cat group_vars/all
group_all: group_all_test
# cat web_test.yml
- hosts:
tasks:
- name: touch new files
file:
path: "/tmp/{{ group_all }}"
state: touch
7.命令行传参 (extra)
# cat web_test.yml
- hosts: all
tasks:
- name: touch new files
file:
path: "/tmp/{{ extra_vars }}"
state: touch
# 命令行传参
ansible-playbook web_test.yml -e "extra_vars=123"
8.定义变量的优先级
# 命令行
1. extra
# playbook
2. vars
3. vars_files
# inventory
4. host_vars
5. group_vars
6. group_all
# 可通过debug模块测试
- hosts: web
tasks:
- name: touch new files
debug:
msg: "{{ extra_vars }}"
9.变量注册register
- hosts: web
tasks:
- name: Output Nginx Process
shell: ps aux| grep nginx
# 注册变量
register: nginx_process
- name:
debug:
msg: "{{ nginx_process.stdout_lines }}"
10.核心变量 facts
# 查看ansible可调用系统变量
ansible localhost -m setup
# 调用系统变量,查看系统IP
- hosts: web
tasks:
- name:
debug:
msg: "{{ ansible_eth1.ipv4.address }}"
Ansible-playbook之定义变量的更多相关文章
- Ansible Playbook 变量与 register 详解
ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...
- ansible中定义变量的若干方法
Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...
- ansible官方文档翻译之变量
Ansible变量 在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者 ...
- ansible playbook详解
ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...
- ansible-playbook定义变量与使用
1. ansible-playbook变量定义与使用 命令行 在Inventory中定义 在Playbook中定义 在Role中定义 注册变量(register) 系统信息变量(facts) 2. 在 ...
- Ansible Playbook概览
Ansible playbook 执行需要三步路执行: 1.编写playbook 2.定义主机清单文件 3.设置运行环境,写入配置文件 1.编写playbook Playbook使用YAML语法格式进 ...
- ansible playbook 变量
变量优先级 在命令中定义的变量(-e参数指定的) 在inventory中定义的变量(ansible_ssh_user等) 其他变量(role中.play中) 系统通过father_facts定义的变量 ...
- Ansible Playbook 使用变量
如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name=& ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...
- 写Ansible playbook添加zabbix被监控的对象
本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...
随机推荐
- 在可插拔settings的基础上加入类似中间件的设计
在可插拔settings的基础上加入类似中间件的设计 settings可插拔设计可以看之前的文章 https://www.cnblogs.com/zx125/p/11735505.html 设计思路 ...
- spring cloud 之 -- eureka vs consul,该选择谁?
0--前言 spring cloud的服务注册中心,该选择谁?在选择前,我们首先需要来了解下分布式的CAP定理: 所谓CAP,是指: Consistency:一致性:就是在分布式系统中的所有数据备份, ...
- 2019-2020-1 20199304《Linux内核原理与分析》第三周作业
1.操作系统是如何工作的? 计算机三个法宝(3个关键性的方法机制): 存储程序计算机.函数调用堆栈.中断机制. 1.1堆栈: 在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构.堆栈都是一种数 ...
- Mybatis整合spring详细教程(适合小白童鞋)
目录 1.整合思路 2.整合需要的jar包 3.整合的步骤 4.Dao的开发的两种实现方式 6.Dao的开发的实现方式总结图 @ Mybatis整合spring其实就是SSM框架中SM的整合集成. 1 ...
- Linux基础 - Crontab定时任务
目录 设置Cron任务 创建任务 设置运行周期 配置命令 常见问题 如何列出所有的Cron任务 如何查看Cron任务运行log 如何配置带有虚拟venv的Python脚本 如何在Cron 任务中发送邮 ...
- 导入做好的java项目出现下面的错误:The project cannot be built until build path errors are resolved
例子: 作者在eclipse中导入一个新的项目时,出现了三个错误,如图1中所示: 图1 3 errors 原因分析: 在这个工程中,作者在写的时候,在build path中添 ...
- 最新115道华为、京东、滴滴、美团精选Java面试题整理
京东面试题 1. 一般sql注入怎么发现触点的,从源码阐述sqlmap如何测试注入点的. 2. masscan扫描端口时靠什么检测,为什么这么快? 请详述. 3. 你写过哪些小工具,你为你使用过的工具 ...
- 一线大厂面试官最喜欢问的15道Java多线程面试题
前言 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得更多职位,那么你应该准备很多关于多线程的问题. 他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者 ...
- 从项目中理解SSM框架
我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...
- eclipse 代码问题总结
隐藏控件,在xml文件中写属性 android:visibility="gone"