模板管理、清单管理、并行方式

本文详细介绍了Ansible中的模板管理,包括模板的作用、如何使用Jinja2构建和部署模板,以及使用循环和条件句。此外,还讲解了清单管理,如如何选择主机、使用组和通配符匹配主机。最后,讨论了Ansible的并行方式,如设置forks参数和使用serial关键字进行滚动更新。
摘要由CSDN通过智能技术生成

模板管理、清单管理、并行方式

一、模板管理

1. ansible template作用

在实际的工作中由于每台服务器的环境配置都可能不同,但是往往很多服务的配置文件都需要根据服务器环境进行不同的配置,比如nginx最大进程数,redis最大内存等。为了解决这个问题可以使用ansible的template模块,该模块和copy模块作用基本一样,都是把管理端的文件复制到客户端主机上,但是区别在于template模块可以通过变量来获取配置值,支持多种判断、循环、逻辑运算等,而copy只能原封不动的把文件内容复制过去。需要注意的是template只能在playbook中运行,不能使用命令行方式。

2. ansible template使用方法

多数情况下都会建立一个templates目录并和playbook同级,这样playbook可以直接引用和寻找这个模板文件,如果在别的路径需要单独指定。模板文件后缀名为.j2

2.1 构建jinja2模板

在jinja2中,存在三种语法:

  1. 控制结构 {% %}
  2. 变量取值 { { }}

jinja2模板中使用{ { }}语法表示一个变量,它是一种特殊的占位符。当利用jinja2进行渲染时,它会把这些特殊的占位符进行填充/替换,jinja2支持python中所有的python数``据类型比如列表、字段、对象等

  1. 注释 {# #}

注意:包含jinja2模板的文件不需要有任何特定的文件扩展名(.j2)。但是提供此类文件扩展名会让你更容易记住它是模板文件

# {
  { ansible_managed }}

Port {
  { ssh_port }}
ListenAddress {
  { ansible_facts['default_ipv4']['address'] }}
2.2 部署jinja2模板

jinja2模板是功能强大的工具,可用于自定义要在受管主机上部署的配置文件。创建了适用于配置文件的jinja2模板后,它可以通过template模块部署到受管主机上,该模块支持将控制节点中的本地文件转移到受管主机。

tasks:
  - name: moban
    template:
      src: /tmp/test.j2
      dest: /tmp/test.txt

template模块还允指定已部署文件的所有者、组、权限和SELINUX上下文,就像file模块一样。它也可以取用validate选项运行任意命令,在将文件复制到位之前检查该文件的语法是否正确

2.3 使用循环

jinja2使用for语句来提供循环功能。在下例中,user变量替换为users变量中包含的所有值,一行一个值

{% for user in users %}
    {
  { user }}
{% endfor %}

以下示例模板使用for语句逐一运行users变量中的所有值,将myuser替换为各个值,但值为root时除外

{# for statement #}
{% for myuser in users if not myuser == "root" %}
User number {
  { loop.index }} - 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值