【发布时间】:2019-11-20 01:14:39
【问题描述】:
我的目标节点中已经安装了 apache2
我必须在 apache2 服务处于非活动状态时启动它。
如何在 ansible 中实现这种解决方案
每当它处于非活动状态时,我都必须启动 apache2 服务
命令:/sbin/service apache2 status
如果输出显示不活动,那么只有我必须在命令下运行
命令:/sbin/service apache2 start
【问题讨论】:
标签: ansible
我的目标节点中已经安装了 apache2
我必须在 apache2 服务处于非活动状态时启动它。
如何在 ansible 中实现这种解决方案
每当它处于非活动状态时,我都必须启动 apache2 服务
命令:/sbin/service apache2 status
如果输出显示不活动,那么只有我必须在命令下运行
命令:/sbin/service apache2 start
【问题讨论】:
标签: ansible
使用 adhoc ansible 命令,您应该能够运行:
ansible <host_name_or_ip> -a "service httpd start"
或作为角色的一部分:
- name: Ensure that apache2 is started
become: true
service: name=httpd state=started
【讨论】:
ansible [-i path/to/inventory] <name_or_ip> -m service -a "name=httpd state=started"
Ansible 是关于描述任务中总是产生相同结果(幂等性)的状态。然后你的问题归结为:
我们还可以添加之前的单独任务:
一个示例剧本是
---
- name: Install and enable apache
hosts: my_web_servers
vars:
package_name: apache2 # adapt to your distribution
tasks:
- name: Make sure apache is installed
package:
name: "{{ package_name }}"
state: present
- name: Make sure apache is active on boot and started
service:
name: "{{ package_name }}"
enabled: true
state: started
针对您的目标主机运行此 playbook 将(确保将 hosts 参数更改为相关组或机器):
注意:在我的示例中,我使用了不可知模块 package 和 service。如果您可以将其替换为特定的等效项(apt、yum ... 和 systemd、sysvinit ...)
【讨论】: