ansible 远程获取变量 更新模板

ansible可使用template,设置变量,根据不同的环境,批量更新配置。

比如ip地址,每个部署环境可能都不同,不能写成固定值,

可使用如下方式,为每个机器自动更新配置,比如某个config.j2文件:

ipaddress={{ template_ip }}

通常,变量“template_ip”在执行ansible之前,就预先知道的,一般放在group_vars文件夹里面,

但是,对于某些值,是预先不知道的,或者是每台机器都不一样的,不能通过一个单一变量事先设定好,

比如某个配置文件要求写网卡的MAC地址,

    第1,每个机器的每个网卡都不一样;

    第2,ip地址可以人为分配,MAC地址取决于硬件,最好不要写死;

可以这样:

---
- hosts: sled-mcn0
  gather_facts: no
  tasks:
    - name: "test shell command result registe to be var"
      shell: ifconfig eth0 | grep ether | awk {'print $2'}
      register: macaddr_res

    - name: "show the mac addr"
      debug: var=macaddr_res.stdout

    - name: "template the config file"
      template: src=config.j2 dest=/etc/config.ini

在每台机器上执行一条shell命令,将结果取回来,作为变量macaddr_res,

再使用template更新本地config.j2的值,与mac地址相关的定义:

macaddr={{ macaddr_res.stdout }}

最后将配置文件更新到远端部署机上的/etc/config.ini

 

这只是一个最简单的"hello world"例子,

其实上面的shell命令中的"eth0"最好是通过group_vars变量设定,而不是固定写死为"eth0".

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值