首页 > 解决方案 > 如何创建模块 ansible 模块或插件以动态生成要推送的文件

问题描述

我正在使用 ansible 在所有服务器中部署 sudoers 文件,sudoers 权限存储在中央存储库中,并通过本地安装在控制节点上的 python 库动态生成。

我尝试在控制节点上的库文件夹上创建一个 python 脚本。但现在不知道如何将a下面代码的变量中生成的文件推送到远程主机到 /etc/sudoers。

我认为创建一个模块或插件可以解决问题,但真的不知道如何将下面的代码与 ansible 模块或插件集成。

from sudo_manager.objects import Host
import sudo_manager
h = Host.get_host('hostname')
a = sudo_manager.render_sudoers(h, 'sudoers.j2')

任何帮助将不胜感激。

标签: ansibleansible-template

解决方案


最好的选择是使用模板模块,因为文件sudoers.j2是 Jinja2 模板。

- hosts: remote_hosts
  tasks:
    - template:
        src: sudoers.j2
        dest: /etc/sudoers

Ansible 可能会使用 sudo 来提升权限。小心不要把自己锁在外面。


推荐阅读