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之定义变量的更多相关文章

  1. Ansible Playbook 变量与 register 详解

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

  2. ansible中定义变量的若干方法

    Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...

  3. ansible官方文档翻译之变量

    Ansible变量 在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者 ...

  4. ansible playbook详解

    ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...

  5. ansible-playbook定义变量与使用

    1. ansible-playbook变量定义与使用 命令行 在Inventory中定义 在Playbook中定义 在Role中定义 注册变量(register) 系统信息变量(facts) 2. 在 ...

  6. Ansible Playbook概览

    Ansible playbook 执行需要三步路执行: 1.编写playbook 2.定义主机清单文件 3.设置运行环境,写入配置文件 1.编写playbook Playbook使用YAML语法格式进 ...

  7. ansible playbook 变量

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

  8. Ansible Playbook 使用变量

    如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name=& ...

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

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

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

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

随机推荐

  1. MySQL的5种时间类型的比较

    日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23 ...

  2. 从入门到入土:Lambda完整学习指南,包教包会!

    什么是Lambda表达式 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口.lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使 ...

  3. 【我的物联网成长记8】超速入门AT指令集【华为云技术分享】

    [摘要] 在物联网中,AT命令集可用于控制&调测设备.通信模块入网等.本文为您介绍NB-IoT常用的AT命令集及其调测工具. 什么是AT指令集 AT命令,用来控制TE(Terminal Equ ...

  4. .Net core-邮件发送(同步,异步)底层代码(欢迎留言讨论)

    using MailKit.Net.Smtp;using MimeKit;using System;using System.Collections.Generic;using System.IO;u ...

  5. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: REFERENCES command denied to user 'nali'@'localhost' for table 'dbs'

    按照教程 Install hive on Mac with Homebrew,在 mac 上安装 Hive 时, 最后执行 hive 命令后,出现错误: Exception in thread &qu ...

  6. VIM操作记录

    =============================================== 2019/12/12_第1次修改 vr7jj ============================= ...

  7. ARTS-S gitlab与jenkins实现持续集成

    jenkins配制 系统管理->管理插件->可选插件->选择安装 Gitlab Hook Plugin和Build Authorization Token Root Plugin插件 ...

  8. 合成语音 TTS

    弄了一天的合成语音 感觉好难受,明明这么简单的事情非弄得要这么复杂.... 引入命名空间 或者 导入命名空间 代码: using System; using System.Collections.Ge ...

  9. Selenium之xpath绝对路径表示法

    xpath写法: 绝对路径:以/开始,逐个增加节点用/分割 特点:不能跨级.类似css中的直接子元素选择器 相对路径:用两个斜杠  //      如  //div//p//a 通配符:xpath也有 ...

  10. 直击面试,聊聊 GC 机制

    前言 文章来源:https://studyidea.cn/ GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制.当 JVM 内存紧张,通过执行 GC 有效回收内存,转而分配给新对象从而实现内 ...