ansible02-ansible变量的定义与引用

playbook中变量的定义规则

变量名只能由数字、字母、下划线组成,且只能由字母开头

变量的来源

(1) setup模块中的所有变量都可以直接调用
(2) 在/etc/ansible/hosts中定义
     - 普通变量:主机组中主机单独定义,优先级高于公共变量
     - 公共变量:也称组变量,针对主机组中所有主机定义统一变量 
(3) 通过命令行指定变量,优先级最高
      ansible-palybook -e varname=value
(4) 在playbook中定义
      vars:
        - var1: value1
        - var2: value2
(5) 在独立的变量yaml文件中定义
(6) 在role中定义

facts组件是⽤来收集被管理节点信息的,使⽤setup模块可以获取这些信息

变量的优先级

-e  >  playbook  >  主机清单普通变量  >  主机清单公共变量 

setup模块中的变量

使用filter过滤主机名
ansible host10 -m setup  # 列出主机变量
ansible host10 -m setup -a 'filter=ansible_hostname'
ansible host10 -m setup -a 'filter=*address*'

普通变量示例

在清单文件中定义普通变量
cat /etc/ansible/hosts
[webserver]
192.168.1.1   http_port=81
192.168.1.2   http_port=82

在playbook中引用普通变量
cat hostname.yml
- hosts: webserver
  remote_user: root
  tasks:
    - name: set hostname
      hostname: name=www{{ http_port }}.host.com

公共变量示例

在清单文件中定义公共变量
cat /etc/ansible/hosts
[webserver:vars]
nodename=www
domainname=host.com

在playbook中引用公共变量
cat hostname.yml
- hosts: webserver
  remote_user: root
  tasks:
    - name: set hostname
      hostname: name={{ nodename }}{{ http_port }}.{{ domainname }}

命令行指定变量名

首先在playbook中引用变量
cat app.yml
- hosts: host10
  remote_user: root
  tasks:
    - name: install app
      yum: name={{ appname }}
    - name: start service
      service: name={{ appname }} state=started enabled=yes

运行playbook时指定引用的变量的值
ansible-playbook -e 'appname=httpd' app.yml

同时指定多个变量
ansible-playbook -e 'appname1=httpd appname2=vsftpd' aplication.yml

在playbook中定义变量

cat app.yml
- hosts: host10
   remote_user: root
  vars:
    - appname1: httpd
    - appname2: vsftpd
  tasks:
    - name: install app1
      yum: name={{ appname1 }}
    - name: install app2
      yum: name={{ appname2 }}

在独立的变量yaml文件中定义

没有特殊的格式要求,直接指定变量和变量值
cat vars.yml
var1: httpd 
var2: vsftpd

引用变量
cat testvars.yml
- hosts: hoso10
  remote_user: root
  vars_files: 
    - vars.yml            # vars_files: vars.yml  这种写法是错误的
  tasks:
    - name: hello
      shell: echo {{ var1 }}
posted @   立勋  阅读(32)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示