首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用jinja2模板获取动态shell变量

问如何利用jinja2模板获取动态shell变量
EN

Stack Overflow用户
提问于 2020-02-16 18:43:56
回答 1查看 1.6K关注 0票数 1

我需要调用一个shell脚本,该脚本将返回ec2在Ansible任务中的私有ip。一旦我在变量private_ip_var中获得了IP,我希望将该变量注入jinja2模板以生成一个配置文件。

我是这么想的:

代码语言:javascript
复制
- hosts: all
    vars:
    inline_variable: 'hello again'
    tasks:
    - name: Gets the IP of the ec2 instance 
    command: get_ec2_private_ip.sh   <----- shell script to dynamically get the ip of ec2
    register: private_ip_var`  <------ saving shell return value to this var

    tasks:
    - name: Inject that private_ip_var into the jinja template
        template:
        src: src=config.cfg.j2
        dest: config.cfg

config.cfg.j2

代码语言:javascript
复制
blah blah 
The ip of the ec2 is: {{ private_ip_var }}  <------------ THIS IS WHAT I WANT TO ACHIEVE
Variable given as inline - {{ inline_variable }}  <------------- DONT CARE ABOUT THIS VAR

输出- config.cfg

代码语言:javascript
复制
------
blah blah
The ip of the ec2 is: 10-251-50-12  <----------------- THIS IS WHAT I WANT
Variable given as inline - hello again <---------------- DONT CARE ABOUT THIS VAR

我不关心上面的inline_variable;我只关心private_ip_var;如何使用Ansible实现这一点,以便我可以从jinja2模板生成配置文件?

EN

回答 1

Stack Overflow用户

发布于 2020-02-17 08:38:05

要获得AWS EC2信息,您需要在您的(Linux)主机上安装以下内容:

  • boto3
  • botocore
  • Python >= 2.6

然后使用模块ec2_instance_info。下面是一个示例:

代码语言:javascript
复制
ec2_instance_info:
instance_ids:
  - i-23456789

然后你可以过滤ip地址信息。您很可能对以下参数感兴趣:

primary (真/假)

  • 指示此IPv4地址是否是网络接口的主要私有IP地址。

。

有关更多示例,请查看:https://docs.ansible.com/ansible/latest/modules/ec2_instance_info_module.html#examples

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60251928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档