ansible 变量与事实变量

Ansible变量与事实变量:

自定义变量:

变量可以在定义任务前进行定义,也可以从其他文件中调用。
下面我写了一个在任务前定义的变量,并用循环将其打印。

内部变量:

剧本如下:

---
- hosts: localhost
  vars:
    name:
      - bob
      - harry
  tasks:
    - name: print msg
      debug:
        msg: "{{ item }}"
      loop: "{{ name }}"

结果:
在这里插入图片描述
变量被全部打印出来,item是ansible内置的循环变量,loop是循环语句。

外部引入变量:

接下来尝试从外部文件引入变量。
user.yml:

name:
  - natasha
  - salay

play.yml:

---
- hosts: localhost
  vars_files:
    - /root/ansible/user.yml
  tasks:
    - name: print msg
      debug:
        msg: "{{ item }}"
      loop: "{{ name }}"

执行结果:
在这里插入图片描述

事实变量:

ansible提供的事实变量有很多,我举两个简单例子供参考。

内存:

打印内存的剧本:

---
- hosts: localhost
  tasks:
    - name: print memory
      debug:
        var: ansible_memtotal_mb

执行结果:
在这里插入图片描述

bios_version:
---
- hosts: localhost
  tasks:
    - name: print memory
      debug:
        var: ansible_bios_version

执行结果:

在这里插入图片描述

hostname:
---
- hosts: localhost
  tasks:
    - name: print memory
      debug:
        var: ansible_fqdn

执行结果:
在这里插入图片描述
以上是用ansible的debug模块将变量打印出来,还可以使用setup模块来收集事实。

setup:
ansible localhost -m setup

这条命令默认会收集所有事实,也可以加上参数限定收集的事实。

ansible localhost -m setup -a 'filter=ansible_hostname'
# 结果:
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_hostname": "Controller"
    },
    "changed": false
}
小技巧:

有时候可能会忘记某个事实变量的全称,但又需要的时候我们可以利用setup模块加上grep命令查找。
例:

ansible localhost -m setup | grep mem

在这里插入图片描述
这样就过滤出来与内存相关的事实变量了。
文章有问题请联系更正:wgq3135@163.com
烦请各位看完点赞 >_<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值