ansible自带了很多模块,但是有些场景还是需要自定义一些模块,
ansible提供了很多十分方便的方法来实现自定义模块。
下面示例,实现了将本地模板渲染成配置文件。
使用场景:我们一个服务可能需要部署在很多个环境中,我们可以定义一个模板,然后根据不同环境的配置渲染成不同环境的配置文件,然后打包,上传到服务器,启动服务,达到更新服务的目的。
代码如下
# -*- coding: utf-8 -*-from __future__ import absolute_import, division, print_functionfrom ansible.module_utils.basic import AnsibleModulefrom jinja2 import Environment, FileSystemLoaderimport yamlimport osclass TemplateToLocal(object): def __init__(self, module, template_dir, src_template_file, dest_template_file, var_file): self.module = module self.template_dir = template_dir # /data/workspace/gitlab/auto-online/vars self.src_template_file = src_template_file # a.yml self.dest_template_file = dest_template_file # /tmp/d.y