Files和templates

  files和templates均用于ansible文件处理,两者的主要区别是:Files目录下的文件无需写绝对路径即可将文件传输到远程主机,templates目录下文件以Jinja2渲染,支持传送到主机文件的变量替换

  template变量示例可看 https://www.cnblogs.com/FRESHMANS/p/8204721.html,template文件内的变量可在vars目录里直接定义

Jinja2模板高度自定义

①、for循环

语法:
{% for i in all_items %}
{{ item }}
{% endfor%} 示例:循环10个数,打印出ip , web{{id-200}}.edu.cn
{% for id in range(,) %}
10.10..{{ id }} web{{ "%02d | format(id-200)" }}.edu.cn
{% endfor %} 执行效果:
10.10.10.201 web01.edu.cn
......
10.10.10.210 web10.edu.cn

②、if语句

语法:
{% if my_conditional %}
.....
{% endif %} 示例:配置mysql配置文件。如果有设置变量则按变量,如果没有按默认 tasks.yml ---
- name: mysql
hosts: all
vars:
PORT:
tasks:
- template: src=/templates/mycnf.j2 dest=/etc/my.cnf      #src这里写mycnf.j2的tempalte目录 mycnf.j2 {% if PORT % }
bind-address=0.0.0.0:{{ PORT }}
{% else %}
bind-address=0.0.0.0:
{% endif %}

可用一句概括

bind-address=0.0.0.0{{ PORT | default()}}

③、多值合并

目录结构:

ansible
├── join.yml
└── roles
└── join
└── templates
└── list.j2 [root@bogon ansible]# cat join.yml
---
- hosts: test
gather_facts: no
vars:
port:
tasks:
- template: src=roles/join/templates/list.j2 dest=/root/list.txt
roles:
- { role: join}
[root@bogon ansible]# cat roles/join/templates/list.j2
{% for node in groups['test'] %}
{{ node | join("-") }}:5673            #这里意思为将hosts文件里 test组下的ip,加上端口5673,合并,join表示不在ip中间加任何东西
{% if not loop.last %}
{% endif %}
{% endfor %} 执行结果:
[root@node1 ~]# cat list.txt
10.10.10.12:
10.10.10.162:

ansible Templates的更多相关文章

  1. 【Ansible】Playbook实例

    Learn to build Ansible playbooks with our guide, one step at a time In our previous posts, we introd ...

  2. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

  3. Ansible 利用playbook批量部署Nginx

    我这里直接部署的,环境已经搭建好,如果不知道的小伙伴可以看上一遍ansible搭建,都写好了,这里是根据前面环境部署的 192.168.30.21     ansible 192.168.30.25  ...

  4. Ansible Playbooks 介绍 和 使用 二

    目录 handlers playbook 案例 2 handlers vars 变量 setup facts 变量使用 案例 inventory 中定义变量 案例 条件测试 when 语句 案例 迭代 ...

  5. Ansible入门笔记(3)之Playbook

    目录 Ansible-playbook 1.1.什么是playbook? 1.2.playbook的核心组成 1.3.playbook的handlers.notify触发 1.4.playbook的变 ...

  6. ansible的基础使用(一)

    ansible基础使用(一) ansible的主要功能 A:为什么是ansible B:ansible的安装 C:ansible的相关文件 D:ansible的基本使用 ansible的简单操作 A: ...

  7. 学习ansible(一)

    1.介绍 1 ansible基于Python开发的自动化运维工具 2 ansible基于ssh协议实现远程管理的工具,没有客户端 3 ansible软件可以实现多种批量管理操作 2.环境 主机 IP ...

  8. 第5天:Ansible-Playbook

    Ansible中的每个模块专注于某一方面的功能.虽然每个模块实现的功能都比较简单,但是,将各个模块结合起来就可以实现比较复杂的功能.在Ansible中,将各个模块组合起来的文件是一个YAML格式的配置 ...

  9. 3、Ansible playbooks(Hosts、Users、tasks、handlers、变量、条件测试(when、迭代)、templates)

    Ansible playbooks playbook是由一个或多个“play”组成的列表.play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲 ...

随机推荐

  1. thymeleaf th:href url传递多参数

    <a th:href="@{/teacherShowMember(class_id=${class.classId},class_name=${class.className})}&q ...

  2. Spinner之下拉多选,监听ID后显示不同Frgment页面

    本人安卓小白,公司最近项目需要用到不同的类型的用户注册,周末下午写完记录一下. 网上找了一堆没有适合自己的(或者说我没找到),写的比较基础,欢迎大家多多指导. 老规矩,先上效果图 网上在线合成的GIF ...

  3. Android ble蓝牙使用注意

    以下均为自己在Android ble开发项目中遇到的问题 1.尽量不要在BluetoothGattCallback里面的回调函数中执行读写通知操作,最多一个,因为例如在onServicesDiscov ...

  4. linux查看硬盘占用情况

    Linux命令 : df -hl 使用后文件系统 容量 已用 可用 已用% 挂载点Filesystem Size Used Avail Use% Mounted on/dev/vda1 197G 5. ...

  5. python使用rabbitMQ介绍一(生产-消费者模式)

    1 模式介绍 生产者-消费者模式是最简单的使用模式. 一个生产者P,给队列发送消息,一个消费者C来取队列的消息. 这里的队列长度不限,生产者和消费者都不用考虑队列的长度. 队列的模型图: 2 示例代码 ...

  6. Linux/Ubuntu 16.04 使用校园网客户端Dr.com DrClient 有线连网,同时开启WiFi热点

    前面写过Ubuntu 16.04 使用校园网客户端 DrClient 无线上网,在这篇文章中将要介绍下,在Ubuntu 16.04上如何使用校园网客户端实现有线登录,这个问题也让博主困惑了很久,但是问 ...

  7. 使用Navicat快速生成MySQL数据字典

    1.通过information_schema.COLUMNS表 查询该表可得到所需字段信息 SELECT * FROM information_schema.COLUMNS; 如下图所示: 2.示例 ...

  8. python学习_2

    1.pycharm部分技巧 1)创建时路径尽量要避免中文2)用滚轮调整编辑器字体大小    1.file->setting...->editor->general 搜索'mouse' ...

  9. 【spring源码分析】IOC容器初始化(十一)

    前言:前面分析了doCreateBean中的createBeanInstance函数,接下来分析其剩余流程. 首先贴上doCreateBean函数: // AbstractAutowireCapabl ...

  10. python open 函数的读写追加