Ansible变量
变量定义有三种方式
- playbook的yaml文件中定义变量赋值
- 命令行参数变量:--extra-vars执行参数赋给变量
- 在文件中定义变量
1、playbook的yaml文件中定义变量赋值
- hosts: all
vars: #定义变量
file_name: bgx_yaml_vars
tasks:
- name: # {{ file_name }}引用上面定义的变量
file: path=/tmp/{{ file_name }} state=touch
定义多个变量
---
- hosts: all
remote_user: root
vars:
nginx:
conf80: /tmp/80.conf
conf8080: /tmp/8080.conf
tasks:
- name: task1
file:
path: "{{nginx.conf80}}"
state: touch
- name: task2
file:
path: "{{nginx.conf8080}}"
state: touch
当我们需要引用这两个变量时,有两种方式引用:
语法一:
"{{nginx.conf80}}"
语法二:
"{{nginx['conf8080']}}"
2、--extra-vars执行参数赋给变量
[root@manager ~]# cat f3.yml
- hosts: all
tasks:
- name: Create New File
file: path=/tmp/{{ file_name }} state=touch
#playbook执行时传入file_name变量的参数,在/tmp目录创建bgx_extra-vars文件
[root@manager ~]# ansible-playbook f2.yml --extra-vars "file_name=bgx_extra-vars"
3、在文件中定义变量: 可以在/etc/ansible/hosts主机组中定义,然后使用palybook进行调度该变量
cat /etc/ansible/hosts
[ceshi]
10.17.12.98
10.17.12.99
10.17.12.60
[ceshi:vars]
file_name=bgx_filename
[root@manager ~]# cat f4.yml
---
- hosts: all
tasks:
- name: Create New File
file: path=/tmp/{{ file_name }} state=touch
#playbook执行,在/tmp目录创建bgx_filename文件
变量的优先级
- extra-vars外置传参的优先级最高 [所有执行的主机都生效]
- 定义在yml文件中的优先级其次 [所有执行的主机都生效]
- hosts文件中定义的变量优先级最低 [当前主机组定义会生效]
4、注册变量
使用 register 关键词在任务中注册变量,通常用于捕获命令或脚本的输出。
register关键字可以存储指定命令的输出结果到一个自定义的变量中。
[root@manager ~]# cat f5.yml
---
- hosts: all
tasks:
- name:
shell: netstat -lntp
register: System_Status
- name: Get System Status
debug: msg={{System_Status.stdout_lines}}
#playbook执行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix