标签: ansible-template

键/值键中的Ansible变量

我将env变量传递给ansible playbook中的Docker容器,如何在env的键/值中的键中设置Ansible变量?

所以这:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env:
      SERVICE_443_NAME: "webproxy"
Run Code Online (Sandbox Code Playgroud)

成为这个:

- name: webproxy container
  docker_container:
    name: "webproxy"
    image: "webproxy"
    env:
      SERVICE_{{ port_number }}_NAME: "webproxy"
Run Code Online (Sandbox Code Playgroud)

ansible ansible-template

5
推荐指数
1
解决办法
2005
查看次数

Ansible Tower:如何将作业编号传递到剧本中?

我编写了一个 Ansible playbook,它需要运行它的作业编号作为其参数之一,以便我将对该作业的引用添加到我维护的数据库中。如何获取 Tower 模板以将其传递给剧本?

这是我目前的解决方案,但并不理想:

我首先启动包含我的剧本的模板,tower-cli此时工作编号会返回给我。然后,我将作业编号作为参数传递给另一个模板,该模板调用一个剧本,将作业编号写入数据库。

理想情况下,我希望能够通过运行单个剧本tower-cli,而不用担心这样做时的作业数量。我希望 Tower 将作业编号传递给原始剧本,以免需要第二个剧本。此问题的任何其他解决方案也将受到赞赏。

ansible ansible-template ansible-tower

5
推荐指数
1
解决办法
5980
查看次数

Ansible/jinja2:如果条件,则使用过滤结果

是否可以在ansible剧本的条件下使用Jinja2过滤器的结果?

我试图让这个工作,但没有成功:

{% if (item | ipv4) %}{{ item }}{% else %}{{ lookup('dig', item) }}{% endif %}}
Run Code Online (Sandbox Code Playgroud)

我当前测试中的项目设置为localhost(可以是任何其他私有或公共域).

应该这样做:如果item是IPv4地址,则应返回地址,否则应将其"转换"(使用dig进行DNS查找)到IPv4地址 - 但它始终返回主机名.

任何的想法?

先谢谢马蒂亚斯

ansible ansible-template

4
推荐指数
1
解决办法
2995
查看次数

Ansible循环 - 如何将模板值与with_items匹配?

我正在尝试创建具有与其with_items值匹配的值的文件.

我有一个像这样的var列表:

 sites:
   - domain: google.com
     cname: blue
   - domain: facebook.com
     cname: green
   - domain: twitter.com
     cname: red
Run Code Online (Sandbox Code Playgroud)

我为此任务中的列表中的每个对象创建单个文件:

- name: Create files
  template:
    src: file.conf
    dest: "/etc/nginx/conf.d/{{item.cname}}.conf"
  with_items: "{{sites}}"
Run Code Online (Sandbox Code Playgroud)

这些都很有效.我需要什么,有我的模板文件为它创建一个名为blue.conf并且有google.com只是.

我尝试了很多变化.我最接近的是:

   server {
        listen 80;
        listen [::]:80;
      {% for item in sites %}
        server_name  {{item.cname}}.es.nodesource.io;

        location / {
          proxy_pass {{item.domain}};
        }
      {% endfor %}
    }
Run Code Online (Sandbox Code Playgroud)

这将创建单个文件,但每个文件都包含所有域和名称.

jinja2 ansible ansible-template

4
推荐指数
1
解决办法
6100
查看次数

(Ansible) 如何获取一组主机的所有库存变量作为模板/Jinja2 中的列表?

我正在使用这种类型的 Ansible 清单编写自动化:

[nodes]
<publicIp1>  privateIp=<privateIp1>
<publicIp2>  privateIp=<privateIp2>
Run Code Online (Sandbox Code Playgroud)

我这样做是因为有时主机具有不同的公共 IP 与私有 IP(例如,AWS)。

现在,在配置任何主机时,我需要在模板模块的 jinja2 文件中获取一个类似于“privateIp1,privateIp2”的 csv。

最好,我什至不想提及组名“节点”,而只是要求“给我当前主机组的所有成员的所有‘privateIp’库存变量的列表”。<< 假设我的主人只是一个组的成员。

如果不可能,有没有办法引用组名并执行此操作?

jinja2 ansible ansible-template ansible-inventory

4
推荐指数
1
解决办法
4658
查看次数

Ansible:全局模板文件夹?

找不到任何Google'ing。

group_vars / all /用于变量。模板有类似的东西吗?我想在多个角色中使用一些模板。

ansible ansible-template

4
推荐指数
2
解决办法
2086
查看次数

Jinja2模板中“列表中存在项目”时打印字符串

我正在尝试使用从列表中确定的值填充nsswitch.conf。该列表是字符串:

openldap_nsswitch:
  - group
  - hosts
  - passwd
  - shadow
Run Code Online (Sandbox Code Playgroud)

如果字符串在列表中,我想在模板中输出一些内容。

passwd:         compat {% if openldap_nsswitch contains passwd %}ldap{% endif %}
Run Code Online (Sandbox Code Playgroud)

仅当我的列表包含特定元素时,才能写字符串吗?

jinja2 ansible ansible-template

4
推荐指数
1
解决办法
5563
查看次数

'dict object' 在 Ansible Playbook 中没有属性 'stdout'

我的剧本:

- name: JBoss KeyStore and Truststore passwords will be stored in the          password vault
    #shell: less "{{ vault }}"
     shell: cat "{{ vault }}"
    register: vault_contents
    tags:
      - BW.6.1.1.10
    with_items:
      - "{{ vault }}"
  - debug:
       msg: "JBoss config filedoes not contains the word vault"
    when: vault_contents.stdout.find('$VAULT') == -1
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Jinga2 模板通过 ansible 读取多个文件并将输出解析为 stdout 并搜索关键字并报告它。

它失败并出现以下错误:

TASK [testing_roles : debug]   **************************************************************************.   *****************************************************************
fatal: [d84e4fe137f4]: FAILED! => {"failed": true, "msg": "The conditional check 'vault_contents.stdout.find('$VAULT') == -1' failed. 
The error …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-template ansible-2.x ansible-facts

4
推荐指数
1
解决办法
2万
查看次数

有没有办法覆盖定义为ansible星系角色的模板?

我正在尝试使用ansible设置服务器,并且我想使用此银河角色

它定义了一个我想自定义的模板,但我不知道如何。

现在,我将角色定义为,requirements.yml并使用以下命令进行安装:

ansible-galaxy install -r requirements.yml

它将角色安装在我的系统上的某个位置。

我尝试通过将文件夹树重新创建到存储剧本的存储库中来进行尝试:

roles
  |- ansible-role-passenger
     |- templates
        |- passenger.j2
Run Code Online (Sandbox Code Playgroud)

但它不起作用。当我运行剧本时,ansible会passenger.j2从银河角色内部使用该文件。

我想我可以在github上派出银河角色,然后根据passenger.j2需要编辑文件,但是我不知道这是否有“更好”的方法:)

ansible ansible-template ansible-galaxy

4
推荐指数
1
解决办法
612
查看次数

Ansible 字符串分割

我在 ansible 中有一个基于分隔符的分割函数。但只想获取第一次出现的分隔符字符串,其余的作为第二个字符串。

string: "hello=abcd=def=asd"
string1= string.split("=")[0]
string2= string.split("=)[1..n] (This is what i missing)
Run Code Online (Sandbox Code Playgroud)

我如何使用 string.split 在 ansible 中实现此目的?

ansible ansible-template

3
推荐指数
1
解决办法
2万
查看次数