在 ansible 中跨角色共享简单任务?

在 ansible 中跨角色共享简单任务?

我有几种不同的机器类型,它们都需要为它们定义官方的 postgres APT repo,以便能够使用apt-get install正确版本的工具。这些不同的机器都需要共享以下内容:

---
- name: add postgres repo key
  sudo: yes
  apt_key: url=http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc
           id=ACCC4CF8

- name: add postgres repo
  sudo: yes
  apt_repository: repo='deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main'

我有两个角色依赖于它,我的nagios角色(需要执行大量 psql 工作)和我的postgres-base角色。如果我能让这两个角色以某种方式包含上述相同的文件/任务,那就太棒了。

现在,我已经为这些任务创建了一个单独的角色,并称之为postgres-repo,并且我正在使用 ansible 的角色依赖关系来确保上述两个角色postgres-repo在执行之前都运行。

这是他们的meta/main.yml

---
dependencies:
  - postgres-repo

这是我所能做的最好的事情吗?有没有比创建单独的角色更轻松的方法?

答案1

对我来说,这似乎是最好的选择;角色就是做一件事,并把它做好:)

相关内容