【问题标题】:Ansible best tool for the job of adding and removing configurations to running applications?Ansible 为正在运行的应用程序添加和删除配置的最佳工具?
【发布时间】:2014-06-16 19:26:52
【问题描述】:

我是 Ansible 的新手,我看到了使用 Ansible 启动裸服务器并运行所有必要的软件包等的优势。但是,我想知道它是否是我正在尝试的正确工具要做的事:

  • 我有几台服务器 (
  • 为每个客户部署一个新的战争 + 配置文件
  • 对于每个停止服务的客户,war + 配置文件将从 Tomcat 服务器中删除
  • 类似:从 ini 格式的文件中添加/删除配置
  • 我只想为特定客户添加/删除文件和配置,而不涉及其他配置

现在我正在使用 shell 脚本来执行部分工作,其余的都是手动的,但它容易出错,所以我正在寻找更好的解决方案。

我可以为这些任务想象一个 Ansible 剧本,但如果不不断编辑一些定义需要添加/删除哪些客户文件的文件,我不知道如何使它工作。这至少会像我的 shell 脚本一样容易出错。

所以我想知道 Ansible 是否适合这项工作,或者是否有更好的工具可用于满足这一特定需求。如果有更好的工具,有哪些?

【问题讨论】:

  • 您决定如何管理配置?我在同一个地方,我需要更新它们,并且想知道要使用什么。
  • 现在,我已经决定创建专门的角色来管理配置的一个方面,例如战争文件的一般更新。对于新客户的部署,我仍然依赖我的旧 shell 脚本。与此同时,我正在修改配置,使其更适合使用 Ansible 进行管理。

标签: tomcat configuration ansible


【解决方案1】:

您可以创建代表一个客户的单个角色。让该角色执行必要的步骤,并允许客户之间可能存在的任何差异成为变量。

您可以在角色的默认文件中为变量设置合理的默认值,例如:

角色/默认值/main.yml:

customer_name: ~
customer_war_file: "{{ customer_name }}.war"

角色/模板/server.config.j2:

some_setting_x: {{ setting_x }}
some_setting_y: {{ setting_y }}

这样,您可以在剧本中反复使用该角色:

- name: Playbook for customer deploys
  ...

  roles:
    - { role: my_deploy_role, customer_name: 'acme',  setting_x: 'foo', setting_y: 'bar' }
    - { role: my_deploy_role, customer_name: 'emca',  setting_x: 'bat', setting_y: 'baz' }

对此进行扩展,您可以在您的角色中添加一个删除而不是部署的设置 - 或者如果这变得太复杂,只需创建一个单独的删除角色:

  roles:
    - { role: my_deploy_role, customer_name: 'emca',  setting_x: 'bat', setting_y: 'baz' }
    - { role: my_remove_role, customer_name: 'acme' }

请记住,Ansible 任务是幂等的,这意味着您可以一遍又一遍地运行它们并获得相同的结果。在脚本完成后,您应该描述目标系统的状态

Ansible 的大多数模块都会为您处理这些问题,例如,如果上述示例中的 server.config.j2 模板已经存在于目标机器上并且是相同的,Ansible 将报告“ok ”,而不是“改变”。

如果您担心在不需要时重新加载网络服务器,请查看handlers。这些是特殊任务,仅在需要时运行并在您的剧本完成后运行

【讨论】:

    【解决方案2】:

    要编辑 ini 文件,您可以使用 http://www.pixelbeat.org/programs/crudini/ 随着即将发布的 v0.5,您可以使用 --verbose 选项触发更改,例如:

    - command: crudini --set /your/config.ini section param value
      register: command_result
      changed_when: command_result.stderr | match("^changed")
    

    【讨论】:

      猜你喜欢
      • 2018-03-23
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2012-02-24
      • 2011-04-12
      相关资源
      最近更新 更多