不信网恋 发表于 2018-7-28 13:38:53

自动化运维工具Ansible入门教程变量与facts

  Ansible主机变量、组变量的定义与组嵌套的使用,定义好了后在playbook中就可以引用这些变量了。可以给不同主机设置同样的变量名,但是调用的结果却是不一样的,因为Ansible是在每个主机上单独运行的。
#定义主机组,名为apache  
httpd1.linuxe.cnhttp_port=80#定义了一个变量http_port
  
httpd2.linuxe.cn
  

  
nginx1.linuxe.cn
  
nginx2.linuxe.cn
  
#给webservers父组增加了两个子组,其中:children是固定格式
  
apache
  
nginx
  
#给组定义变量,其下所有主机都生效,其中: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 facts信息?
- hosts: webservers2      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}}
  原文地址:http://www.linuxe.cn/post-277.html
页: [1]
查看完整版本: 自动化运维工具Ansible入门教程变量与facts