自动化运维工具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]