本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Ansible
  • 自动化运维工具Ansible入门教程(六)playbook的变量与facts

自动化运维工具Ansible入门教程(六)playbook的变量与facts

发布:TangLu2017-9-19 16:51分类: Ansible 标签: 变量 自动化运维 ansible

在Ansible中可以设置主机变量、组变量,变量支持嵌套使用,定义好了变量可以在playbook中引用。由于是给不同主机设置同样的变量名,但是调用的结果是不一样的,因为Ansible是在每个主机上单独运行的。

一、直接在配置文件中定义变量

[apache]  #定义主机组,名为apache
httpd1.linuxe.cn  http_port=80  #定义了一个变量http_port
httpd2.linuxe.cn
[nginx]
nginx1.linuxe.cn
nginx2.linuxe.cn
[webservers:children]  #给webservers父组增加了两个子组,其中:children是固定格式
apache
nginx
[webservers:vars]  #给组定义变量,其下所有主机都生效,其中:vars是固定格式
ntp_server=ntp.linuxe.cn
二、在playbook中定义和调用变量
cat apache.yml
- hosts: webservers
  remote_user: root 
  vars:  #开始声明变量 
  - package: httpd  #变量名与变量值 
  - service: httpd
  tasks:
  - name: install apache
    yum: name={{ package }} state=latest  #要引用的变量用"{{ }}"囊括
  - name: install configure file for httpd
    copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
  - name: start httpd service
    service: enabled=true name={{ service }} state=started


除了可以引用自己定义的变量外,ansible还有很多变量是通过facts所获取的,facts可以理解为ansible所收集到的每个远程主机的一些基本信息,如IPv4、IPv6、MAC地址、磁盘分区信息等。要引用facts变量只需要在变量名两边用双花括号引用,多个变量使用逗号分隔

'{{ ansible_all_ipv4_addresses }}','{{ ansible_all_ipv6_addresses }}'


如何查看ansible facts信息?

通过ansible all -m setup可以查看facts信息,如图红框处每个引号内的就是默认变量

ansible变量1.png 

如何调用ansible facts信息


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


通常远程主机上会有多块硬盘,会按照sda、sdb、sdc的命名规则排列,当我们只需要查看sda这块磁盘的大小如何实现?通过facts的{{size}}会将每个硬盘大小都取到而不是单独的一块,如何解决呢?只需要从facts中上级开始书写即可,格式如下:

{{ansible_devices.sda.partitions.sda.size}}


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《自动化运维工具Ansible入门教程(六)playbook的变量与facts
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-277.html  [生成短网址]

已有 0/5022 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~