2

作为我的 Ansible 剧本的一部分,我从内部存储库下载并安装了一个 RPM。这个 RPM 附带了一堆配置。对于我的大多数机器,我不需要更改此配置。然而,对于一个由 ansible 组定义的小子集,我需要修改一些配置字段。

我假设我需要这样做:

  1. 等到我的 RPM 安装并“运行”
  2. 停止服务
  3. 以某种方式修改配置文件?使用 when 子句将其限制为我要修改的组。
  4. 重启服务

或者可能有更好的方法来实现这一点。有人可以建议我如何实现我的总体目标吗?

4

1 回答 1

1

你的四步程序对我来说看起来不错。也许在修改配置之前不必停止服务。

我会创建一个 Ansible 角色,其中定义了必要的任务。角色的基本结构由ansible-galaxy init命令创建。

ansible-galaxy init my_role

可以使用Ansible 的模板模块修改(或生成)配置文件:

- name: Modify the configuration file
  template: src=myconf.cnf.j2 dest=/etc/myconf.cnf
  when: "'my_group_name' in group_names"
  notify: Restart the service

它将仅对属于my_group_name组的主机运行。模板myconf.cnf.j2必须从my_role/templates目录中找到。Restart the service只有在任务中通知处理程序时才会重新启动服务。处理程序需要放入my_role/handlers/main.yml文件:

- name: Restart the service
  service: name=service_name state=restarted
于 2016-02-08T13:35:32.573 回答