Ansible变量介绍 vars变量 inventory针对主机设置变量

Ansible变量介绍

什么是变量

复制代码
一个动态获取数据的对象,在ansible中,提供指定名称定义,然后预存数据当指令或者yml操作
的时候,可以调用里面的数据

变量的定义方式

复制代码
在Ansible内,定义变量有三种方式
    - 通过命令行传递变量参数定义 
    - 在playbook文件定义变量
        - 通过vars:定义变量
        - 通过vars_files 定义变量
    - 通过Inventory在主机组或者单个主机中设置变量
        - 通过hosts_vars:对主机进行定义
        - 通过group_vars:对主机组进行定义

优先级

复制代码
playbook内可以定义多种变量,但是传递和执行的时候是有优先级的关系的

vars变量

复制代码
[root@ansible ~]# vi an-3.yml
[root@ansible ~]# cat an-3.yml
#vars定义变量
#关键字:vars:变量名称
#通过vars定义的变量只能在该文件内使用
#变量名也有要求:变量的首字母必须是英文或者是下划线

#案例:定义变量并且调用变量

- hosts: webservers
  vars:
    id: 666
    age: 21
    uname: yun
  tasks:
    - name: 通过debug模块内的msg参数输出变量
      debug:
        msg: "用户id: {{ id }}, 用户年纪: {{ age }}, 用户名: {{ uname }}"
[root@ansible ~]# ansible-playbook an-3.yml

PLAY [webservers] ***************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************
ok: [192.168.92.20]

TASK [通过debug模块内的msg参数输出变量] *****************************************************************************************************************
ok: [192.168.92.20] => {
    "msg": "用户id: 666, 用户年纪: 21, 用户名: yun"
}

PLAY RECAP **********************************************************************************************************************************************
192.168.92.20              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@ansible ~]#

inventory针对主机设置变量

复制代码
[root@ansible ansible]# vi hosts
[root@ansible ansible]# vi an-5.yml
[root@ansible ansible]# cat hosts
# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers:

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# Ex 2: A collection of hosts belonging to the 'webservers' group:

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
[webservers]
192.168.92.20 uname=yun url=http://192.168.92.20:6100
# If you have multiple hosts following a pattern, you can specify
# them like this:

## www[001:006].example.com

# You can also use ranges for multiple hosts:

## db-[99:101]-node.example.com

# Ex 3: A collection of database servers in the 'dbservers' group:

## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57


# Ex4: Multiple hosts arranged into groups such as 'Debian' and 'openSUSE':

## [Debian]
## alpha.example.org
## beta.example.org

## [openSUSE]
## green.example.com
## blue.example.com

[root@ansible ansible]# cat an-5.yml
#验证inventory变量
- hosts: webservers
  tasks:
    - name: 利用debug输出变量
      debug:
        msg: "用户名: {{ uname }}, 网址: {{ url }}"
[root@ansible ansible]# ansible-playbook an-5.yml

PLAY [webservers] ***************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************
ok: [192.168.92.20]

TASK [利用debug输出变量] ********************************************************************************************************************************
ok: [192.168.92.20] => {
    "msg": "用户名: yun, 网址: http://192.168.92.20:6100"
}

PLAY RECAP **********************************************************************************************************************************************
192.168.92.20              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@ansible ansible]#
相关推荐
阡陌数智8 分钟前
Claude API新版本重大变更与安全升级指南
java·linux·安全
奶茶树21 分钟前
【Linux】环境开发工具(vim,gcc,g++,Makefile)
linux·运维·vim
Sakura_j_h_3 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
木子欢儿4 小时前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
say_fall4 小时前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信
进击的荆棘4 小时前
Linux系统——线程同步与互斥
linux·运维·服务器·策略模式·同步·互斥·posix
橙橙笔记4 小时前
QT的学习第四部分
linux·qt·学习·音视频
.道阻且长.5 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
叼烟扛炮5 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
Android系统攻城狮5 小时前
Linux FFmpeg深度解析之av_guess_format调用流程与实战(三十六)
linux·运维·服务器·ffmpeg·ffmpeg音视频进阶