最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
浅析Ansible Playbook变量与应用
linuxe发表于 2020-10-15 15:34 次浏览
Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。下面这篇文章我们就来谈谈playbook的变量定义与调用。

一、Ansible变量的作用

在Ansible中支持设置主机变量、组变量,变量支持嵌套使用,定义好了的变量可以在playbook中引用。由于Ansible是在每个主机上单独运行命令,所以不同的主机去调用同样的变量,也可以取到不同的值得,这样进行一些配置就更灵活合理。

 

二、Ansible变量定义与调用

方法1:在/etc/ansible/hosts文件中定义变量

01 # 定义变量
02 vim /etc/ansible/hosts
03 [apache]
04 192.168.1.36 webdir=/opt/test     #定义单个主机的变量
05 192.168.1.33
06 [apache:vars]      #定义整个组的统一变量
07 webdir=/web/test
08  
09 [nginx] 192.168.1.3[1:2]
10 [nginx:vars]
11 webdir=/opt/web
12  
13 # playbook调用变量
14 cat variables.yml
15 ---
16 - hosts: all
17   remote_user: root
18   tasks:
19     - name: create webdir
20       file: name={{ webdir }} state=directory   #引用变量
21  
22 # 执行playbook
23 [root@ansible PlayBook]# ansible-playbook variables.yml

 

方法2:在playbook中定义和调用变量
01 cat apache.yml
02 - hosts: webservers
03   remote_user: root
04   vars:  #开始声明变量
05   - package: httpd  #变量名与变量值
06   - service: httpd
07   tasks:
08   - name: install apache
09     yum: name={{ package }} state=latest  #要引用的变量用"{{ }}"囊括
10   - name: install configure file for httpd
11     copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
12   - name: start httpd service
13     service: enabled=true name={{ service }} state=started

 

方法3:使用ansible-playbook -e选项定义变量,命令行变量优先级高于配置文件中的变量

1 cat app.yml
2 ---
3 - hosts: all
4   remote_user: root
5   tasks:
6     - name: install httpd
7       yum: name={{ package }}  #配置文件需要引用package变量
8  
9 ansible-playbook -e 'package=httpd' app.yml  #通过-e定义变量,在app.yml文件全局生效

 

 

方法4:调用setup模块获取变量

setup模块主要用于获取主机信息并保存在变量中,如IPv4、IPv6、MAC地址、磁盘分区等。该模块获取到的变量是可以直接调用的,无需定义

1 ansible webserver -m setup

 

红框处每个引号内的就是默认变量名,使用双花括号可以直接引用。对于一些包含多个层级的变量(比如磁盘分区会存在sda、sdb、sdc...),可以通过从上级书写的形式,比如{{ansible_devices.sda.partitions.sda.size}}

1 - hosts: webservers
2   remote_user: root
3   tasks:
4   - name: copy file
5     copy: content='{{ ansible_all_ipv4_addresses }}'dest=/tmp/vars.ans

 

 

方法5:使用独立的YAML文件定义变量

为了方便管理将所有的变量统一放在一个独立的变量YAML文件中,laybook文件直接引用文件调用变量即可

01 # 定义存放变量的文件
02 cat var.yml
03 var1: vsftpd
04 var2: httpd
05  
06 # 编写playbook
07 cat variables.yml
08 ---
09 - hosts: all
10   remote_user: root
11   vars_files:    #引用变量文件
12     - ./var.yml   #指定变量文件的path(这里可以是绝对路径,也可以是相对路径)
13  
14   tasks:
15     - name: install package
16       yum: name={{ var1 }}   #引用变量
17     - name: create file
18       file: name=/tmp/{{ var2 }}.log state=touch   #引用变量
19  
20  
21 # 执行playbook
22 [root@ansible PlayBook]# ansible-playbook  variables.yml
 

标签:playbook软件
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2020-10-16 15:07:44 关键词:playbook软件
摘要:PlayBook是由开发 黑莓手机的加拿大通讯公司Research In Motion(RIM)在2010年9月27日发布的一款平板电脑。RIM公司希望在10月份将此设备发放给企业用户和开发商,在2011年初开始向消费者发售..