ansible变量管理和使用

本文介绍了Ansible中变量的作用,详细阐述了如何管理变量,包括变量的命名、定义及不同范围的使用。同时,文章讲解了主机变量和组变量的概念,提供了定义和应用这两种变量的方法,包括通过目录结构和命令行覆盖变量。最后提到了使用数组作为变量的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.ansible变量的作用

将playbook 中的某些值使用变量代替,从而简化playbook 的编写

二.管理变量

1.ansible 变量简介

变量可能包含下面这些值:

  • 要创建的用户
  • 要安装的软件包
  • 要重启的服务
  • 要删除的文件
  • 要从互联网检索的文档

2.命名变量

变量名称必须以字母开头,并且只能含有字母、数字和下划线
错误正确

3.定义变量

三个范围级别:

  • 全局范围:从命令行或ansible 配置设置的变量
  • playbook 范围:在play 和相关结构中设置的变量
  • 主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量

注意:
如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围

在playbook 中定义变量
1.常见方式:在playbook 开头的vars 块中:

- host: all
vars:
user: student
home: /home/student

2.在外部文件定义playbook 变量

- hosts: all
vars_files:
- vars/users.yml

在users.yml 文件中写入

user: student
home: /home/student

4.在playbook 中使用变量

将变量名称放在花括号内

vars:
user: westos
tasks:
- name: Create user {{ user }}
user:
name: "{{ user }}"

注意:
当变量用作开始一个值的第一元素时,必须使用引号

三.主机变量和组变量

1.直接应用于主机的清单变量分为两大类:

  • 主机变量:应用于特定主机
  • 组变量:应用于一个主机组或一组主机组中的所有主机

主机变量优先于组变量,但是playbook 中定义的变量比这两者更高

2.定义主机变量和组变量:

方法一:使用目录填充主机和组变量
定义主机和主机组变量的首选做法时与清单文件或目录相同的工作目录中,创建group_vars和host_vars 两个目录,这两个目录分别包含用于定义组变量和主机变量的文件
创建group_vars/servers 的YAML 文件,设置变量为值:user: student
同样需要在host_vars 目录中创建名称与主机匹配的文件来存放主机变量
所以一个项目目录中包含:
ansible.cfg、group_vars、host_vars、inventory、playbook.yml

方法二(比较旧,不建议使用)
定义嵌套组user 变量:

[servers1]
node1.example.com
node2.example.com
[servers2]
node3.example.com
node4.example.com
[servers:children]
servers1
servers2
[servers:vars]
user=student

这种做法使的清单文件难以处理,在同一文件中混合提供主机和变量信息,语法也过时

3.从命令行覆盖变量
清单变量可以被playbook 中设置的变量覆盖
两者又可通过命令行参数覆盖

4.使用数组作为变量

users:
wanggang:
first_name: gang
last_name: wang
home_dir: /home/wanggang
liming:
first_name: ming
last_name: li
home_dir: /home/liming

访问:

users.wanggang.first_name
users.wanggang.home_dir
变量被定义为python 字典,可以使用替代语法:
users['wanggang']['first_name']
users['liming']['home_dir']
#使用已注册变量捕获命令输出
管理员可以使用register 语句捕获命令输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值