Ansible:无法重新启动 apache2.service:连接超时

Pro*_*ton 4 ansible ansible-awx

我正在使用Ansible AWX发出重新启动命令以重新启动主机上的 apache2 服务。该restart命令包含在剧本中。

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    command: systemctl restart '{{ service_name }}'
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result
Run Code Online (Sandbox Code Playgroud)

或者

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    ansible.builtin.service:
      name: '{{ service_name }}'
      state: restarted
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该命令时,出现以下错误:

"Failed to restart apache2.service: Connection timed out",
"See system logs and 'systemctl status apache2.service' for details."
Run Code Online (Sandbox Code Playgroud)

我试图找出这个问题,但还没有运气。

Pro*_*ton 13

后来我想到了问题的原因。

这是我修复它的方法

重新启动命令需要sudo访问权限才能运行,而我的命令中缺少该权限。

我所要做的就是添加命令,become: true以便我可以使用 root 权限执行该命令。

所以我的剧本此后看起来像这样:

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    command: systemctl restart '{{ service_name }}'
    become: true
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result
Run Code Online (Sandbox Code Playgroud)

或者

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    ansible.builtin.service:
      name: '{{ service_name }}'
      state: restarted
    become: true
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result
Run Code Online (Sandbox Code Playgroud)

如果您想在Ansible AWX上实现此目的,另一种方法是勾选作业模板中的权限升级选项。

在此输入图像描述

如果启用,则会以管理员身份运行作业模板中选定的 playbook。

就这样。

我希望这有帮助