ansible主机常用变量的调用
ansible主机信息的查看
- ansible有内置模块 (setup模块)专门可以查看主机信息;我们也可以利用这一模块来找寻我们需要的变量
[devops@server1 ansible]$ ansible web -m setup |less ##分页的方式查看 web对象主机的信息
变量定义的方式
以主机ip为例
可以在setup这一模块获取到ip信息变量:可以看到多个描述ip信息的变量,都可以用于变量定义
主机名变量有多种方式,如下,
主机ip(1):{{ansible_all_ipv4_addresses[-1]}}
主机ip(2):{{ansible_default_ipv4['address']}}
主机ip(3):{{ansible_default_ipv4.address}}
主机ip(4):{{ansible_facts['default_ipv4']['address']}}
官方推荐 使用"ansible_facts"方式定义
常用变量的定义
[devops@server1 ansible]$ cat var.j2
主机ip(1):{{ansible_all_ipv4_addresses[-1]}}
主机ip(2):{{ansible_default_ipv4['address']}}
主机ip(3):{{ansible_default_ipv4.address}}
主机ip(4):{{ansible_facts['default_ipv4']['address']}}
主机名:{{ ansible_facts['hostname'] }}
主机网关:{{ ansible_facts['default_ipv4']['gateway'] }}
主机dns:{{ ansible_facts['dns']['nameservers'][-1] }}
主机空闲内存:{{ ansible_facts['memfree_mb'] }}
系统磁盘空间:{{ansible_facts['devices']['dm-0']['size']}}
系统内核:{{ansible_facts['kernel']}}
系统版本:{{ansible_facts['distribution']}}-{{ansible_facts['distribution_version']}}
利用变量循环做本地解析
[devops@server1 ansible]$ cat etc.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for host in groups ['test'] %}
{{ hostvars[host]['ansible_facts']['eth0']['ipv4']['address'] }} {{ hostvars[host]['ansible_facts']['hostname'] }}
{% endfor %}
[devops@server1 ansible]$ cat etc.yml
---
- hosts: all
tasks:
- name: update hosts
template:
src: etc.j2
dest: /etc/hosts
[devops@server1 ansible]$