【问题标题】:How to get dynamic shell variable with Ansible playbook and jinja2 templates如何使用 Ansible playbook 和 jinja2 模板获取动态 shell 变量
【发布时间】:2020-02-16 18:43:56
【问题描述】:

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

这就是我的想法:

- 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

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

------
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 模板生成该配置文件?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 ansible jinja2 ansible-template


    【解决方案1】:

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

    • boto3
    • botocore
    • Python >= 2.6

    然后使用模块ec2_instance_info。这是一个例子:

    ec2_instance_info:
    instance_ids:
      - i-23456789
    

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

    primary(真/假)

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

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

    【讨论】:

    • 感谢您抽出宝贵的时间,假设我已经有一个 shell 脚本可以下拉该 ec2 信息,我的问题更多的是,我如何调用该 shell 脚本以使其通过例如通过 ansible 中的 jinja2 模板动态地将 IP 地址添加到 template.yaml (cloudformation)?我的问题不在于如何从 ec2 中提取该信息。但更多关于如何将提取的 ip 或 dns 传递给 template.yaml 以便构建的下一步可以启动 cloudformation 堆栈!
    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多