首页 > 解决方案 > 如何将角色和模板整合到同一个剧本中

问题描述

我需要使用一个名为 vcommander 的配置工具,看起来这个工具只支持在配置的主机上本地运行 ansible,你只需要为他提供运行的剧本。

我已经有工作的 ansible 角色,其中包括任务和模板,例如 ntp 角色看起来像下面这样:

ls -1 roles/ntp/

defaults
LICENSE
meta
README.md
tasks
templates

主要任务如下所示:

cat roles/ntp/tasks/main.yml

---

- name: "Configure ntp.conf"
  template:
    src: "ntp.conf.j2"
    dest: "/etc/ntp.conf"
    mode: "0644"
    become: True

- name: Updating time zone
  shell: tzdata-update

- name: Ensure NTP-related packages are installed.
  package:
  name: ntp
 state: present

- name: Ensure NTP is running and enabled as configured.
  service:
  name:  ntpd
 state: started
enabled: yes

模板如下所示:

cat roles/ntp/templates/ntp.conf.j2

{{ ansible_managed }}

restrict 127.0.0.1
restrict -6 ::1

server 127.127.1.0
fudge   127.127.1.0 stratum 10

driftfile /var/lib/ntp/drift
keys /etc/ntp/keys

有没有办法将 main.yml 和 ntp.conf.j2 (模板)以及角色中包含的其他文件包含到一个 yml 文件中?请举个例子。

标签: ansible

解决方案


您是否要求将您的 ntp 角色应用于的剧本localhost

它看起来像这样:

cat playbook.yml

- hosts: localhost
  roles:
    - ntp

请参阅文档:https ://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#using-roles


推荐阅读