标签: ansible-template

Ansible:获取当前目标主机的IP地址

如何获得角色中当前主机的IP地址?

我知道您可以获取主机所属的组列表以及主机的主机名,但我无法找到获取IP地址的解决方案.

您可以使用{{inventory_hostname}}和使用组来获取主机名{{group_names}}

我尝试过像{{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}ip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"

ansible ansible-template ansible-facts

78
推荐指数
9
解决办法
19万
查看次数

如何使用具有不同变量集的模板模块?

我的用例如下:

我有一个模板文件,我想从该模板创建2个不同的文件,变量由每个文件的不同变量集填充.

例如,假设我想模拟包含该行的文件:

mkdir -p {{myTemplateVariable}}
Run Code Online (Sandbox Code Playgroud)

我想找到一个正确的方法来让这个变量填充"File1"和"File2".就像是 :

- name: template test 1
  template: 
        src=myTemplateFile
        dest=result1


- name: template test 2
  template: 
        src=myTemplateFile
        dest=result2
Run Code Online (Sandbox Code Playgroud)

我可以为第一个模板指定要使用的变量是a ="File1",对于第二个模板,b ="File2".

ansible ansible-template

75
推荐指数
5
解决办法
9万
查看次数

如何在ansible中测试jinja2模板?

有时我需要测试一些我在ansible角色中使用的jinja2模板.这样做最简单的方法是什么?

例如,我有一个模板(test.j2):

{% if users is defined and users %}
{% for user in users %}{{ user }}
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

和vars(在group_vars/all中):

---
users:
  - Mike
  - Smith
  - Klara
  - Alex
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-playbook ansible-template

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

ansible - 从目录中删除非托管文件?

我想以递归方式复制目录并将所有.j2文件作为模板呈现在那里.为此,我目前使用以下行:

- template: >
            src=/src/conf.d/{{ item }}
            dest=/dest/conf.d/{{ item|replace('.j2','') }}
  with_lines: find /src/conf.d/ -type f -printf "%P\n"
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找一种从该目录中删除非托管文件的方法.例如,如果我从/src/conf.d/我想要Ansible删除文件/模板也将其删除/dest/conf.d/.

有办法做到这一点吗?我试着摆弄rsync --delete,但在那里我遇到了模板的问题,它们的后缀.j2被删除了.

ansible ansible-template

43
推荐指数
4
解决办法
3万
查看次数

如何从Ansible中的安装模块输出中获取列表的第一个元素?

我从设置模块收到以下数据:

"ansible_nodename": "3d734bc2a391",
"ansible_os_family": "RedHat",
"ansible_pkg_mgr": "yum",
"ansible_processor": [
  "AuthenticAMD",
  "AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G"
],
"ansible_processor_cores": 1,
"ansible_processor_count": 1,
"ansible_processor_threads_per_core": 1,
Run Code Online (Sandbox Code Playgroud)

我想检索第一个值ansible_processor并在Jinja2模板中使用它.

如果我使用{{ ansible_processor }}它,它给了我两个价值观:

"AuthenticAMD",
"AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G"
Run Code Online (Sandbox Code Playgroud)

但我只想要第一个.

jinja2 ansible ansible-template ansible-facts

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

将变量传递给ansible角色

我有我的目录结构

??? digitalocean
    ??? README.md
    ??? play.yml
    ??? roles
        ??? bootstrap_server
        ?   ??? tasks
        ?       ??? main.yml
        ??? create_new_user
        ?   ??? tasks
        ?       ??? main.yml
        ??? update
        ?   ??? tasks
        ?       ??? main.yml
        ??? vimserver
            ??? files
            ?   ??? vimrc_server
            ??? tasks
                ??? main.yml
Run Code Online (Sandbox Code Playgroud)

当我在角色下创建用户时create_new_user,我将用户名硬编码为

---
- name: Creating a user named username on the specified web server.
  user: 
    name: username
    state: present
    shell: /bin/bash
    groups: admin
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa

- name: Copy .ssh/id_rsa from …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-template

21
推荐指数
5
解决办法
6万
查看次数

Ansible模板中出现额外的空格

我正在生成配置文件,我希望它们是缩进的.我从一个简单的python程序调用时正确渲染的Jinja2模板开始.当我从ansible调用它时,除了循环的第一行之外,我将获得2个额外的空格.生成像YAML和python这样的东西真的很痛苦.我已经把注释行作为for块的第一行来解决这个问题......

这是一个非常简单的YAML生成器示例:

剧本电话:

  - name: generate bgp vars file, put in includes directory
    local_action: template src={{ role_dir }}/templates/bgp_vars.j2 dest={{ incvar_dir }}/bgp_vars.yaml
    run_once: true
Run Code Online (Sandbox Code Playgroud)

模板部分:

dc_route_reflectors:
{% for dc in SH_dcs %}
# dc is "{{ dc }}"
  {{ dc }}:
  {% for host in groups[bgpgroupname] if dc == hostvars[host].MYDC %}
    - "{{ hostvars[host].MAIN_MYADDR }}"
  {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

渲染输出:

dc_route_reflectors:

# dc is "pnp"
  pnp:
      - "10.100.16.3"
      - "10.100.32.3"
  # dc is "sgs"
  sgs:
      - "10.8.0.3"
      - "10.8.16.3" …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-template

14
推荐指数
1
解决办法
7566
查看次数

将Ansible模板渲染到事实变量中

有没有办法将Ansible模板呈现出来?我试图找到一个解决方案但它看起来像临时文件是唯一的方法.

jinja2 ansible ansible-template

12
推荐指数
1
解决办法
7673
查看次数

在ansible模板中循环字典

我正在尝试使用jinja2通过ansible模板循环字典来创建大量数据源但是收到此错误 [{'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'value'", 'failed': True}]}

当运行调试任务时,它确实得到了正确的值,所以我觉得我的问题出在模板本身,但我一直无法弄清楚我做错了什么.

Ansible任务

- name: debug dictionary
  debug: msg="{{ item.value.db_url }}"
  with_dict: databases

- name: copy tomcat config files
  template: src="{{ item.src }}" dest="{{ item.dest }}"
  with_items:
    - { src: 'context.xml.j2', dest: '/opt/tomcat/conf/context.xml'}
  notify: restart tomcat
  with_dict: databases
Run Code Online (Sandbox Code Playgroud)

Ansible字典

databases:
  db1:
    db_resource: jdbc/db1
    db_maxidle: 50
    db_maxconn: 350
    db_maxwait: 10000
    db_user: dbuser
    db_pass: "{{ dbpass }}"
    db_url: jdbc:postgresql://server:5432/dbname
    db_driver: org.postgresql.Driver
Run Code Online (Sandbox Code Playgroud)

Jinja2模板

{% for items in databases …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-template

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

Ansible模板在模板中添加'u'到数组

vars在我的ansible playbook中有以下内容我得到了以下结构

domains:
  - { main: 'local1.com', sans: ['test.local1.com', 'test2.local.com'] }
  - { main: 'local3.com' }
  - { main: 'local4.com' }
Run Code Online (Sandbox Code Playgroud)

并且在我的内部有以下内容 conf.j2

{% for domain in domains %}
  [[acme.domains]]

    {% for key, value in domain.iteritems() %}
      {% if value is string %}
        {{ key }} = "{{ value }}"
      {% else %}
        {{ key }} = {{ value }}
      {% endif %}
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

现在,当我进入VM并查看文件时,我得到以下内容:

产量

[[acme.domains]]
  main = "local1.com
  sans = [u'test.local1.com', …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-template ansible-2.x

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