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执行结果

posted @   *一炁化三清*  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示