安装 RPM 后 Ansible 修改文件
Ansible modifying files after RPM installation
作为我的 Ansible 剧本的一部分,我从内部存储库下载并安装了一个 RPM。这个 RPM 附带了一堆配置。对于我的大多数机器,我不需要更改此配置。然而,对于一个由 ansible 组定义的小子集,我需要修改一些配置字段。
我假设我需要这样做:
- 等我的 RPM 安装完成 "running"
- 停止服务
- 不知何故修改了配置文件?使用 when 子句将其限制为我要修改的组。
- 重启服务
或者可能有更好的方法来实现这一点。任何人都可以建议我如何实现我的总体目标吗?
我觉得你的四步程序不错。也许在修改配置之前不必停止服务。
我会创建一个 Ansible 角色,其中定义了必要的任务。角色的基本结构由 ansible-galaxy init 命令创建。
ansible-galaxy init my_role
可以使用 Ansible's template module:
修改(或者生成)配置文件
- 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
组的主机才会 运行。必须从 my_role/templates
目录中找到模板 myconf.cnf.j2
。只有在任务中通知 Restart the service
处理程序时,服务才会重新启动。需要将处理程序放入 my_role/handlers/main.yml
文件:
- name: Restart the service
service: name=service_name state=restarted
作为我的 Ansible 剧本的一部分,我从内部存储库下载并安装了一个 RPM。这个 RPM 附带了一堆配置。对于我的大多数机器,我不需要更改此配置。然而,对于一个由 ansible 组定义的小子集,我需要修改一些配置字段。
我假设我需要这样做:
- 等我的 RPM 安装完成 "running"
- 停止服务
- 不知何故修改了配置文件?使用 when 子句将其限制为我要修改的组。
- 重启服务
或者可能有更好的方法来实现这一点。任何人都可以建议我如何实现我的总体目标吗?
我觉得你的四步程序不错。也许在修改配置之前不必停止服务。
我会创建一个 Ansible 角色,其中定义了必要的任务。角色的基本结构由 ansible-galaxy init 命令创建。
ansible-galaxy init my_role
可以使用 Ansible's template module:
修改(或者生成)配置文件- 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
组的主机才会 运行。必须从 my_role/templates
目录中找到模板 myconf.cnf.j2
。只有在任务中通知 Restart the service
处理程序时,服务才会重新启动。需要将处理程序放入 my_role/handlers/main.yml
文件:
- name: Restart the service
service: name=service_name state=restarted