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

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号