【发布时间】:2020-04-07 10:03:28
【问题描述】:
我想执行一个带有标签的剧本,因为我想执行部分脚本,但是寄存器中存储的变量是空的。
---
- hosts: node
vars:
service_name: apache2
become: true
- name: Start if Service Apache is stopped
shell: service apache2 status | grep Active | awk -v N=2 '{print $N}'
args:
warn: false
register: res
tags:
- toto
- name: Start Apache because service was stopped
service:
name: "{{service_name}}"
state: started
when: res.stdout == 'inactive'
tags:
- toto
- name: Check for apache status
service_facts:
- debug:
var: ansible_facts.services.apache2.state
tags:
- toto2
$ ansible-playbook status.yaml -i hosts --tags="toto,toto2"
PLAY [nodeOne] ***************************************************************************
TASK [Start if Service Apache is stopped] ************************************************
changed: [nodeOne]
TASK [Start Apache because service was stopped] ******************************************
skipping: [nodeOne]
TASK [debug] *****************************************************************************
ok: [nodeOne] => {
"ansible_facts.services.apache2.state": "VARIABLE IS NOT DEFINED!"
}
在脚本结束时,我没有得到 apache 状态的输出。
【问题讨论】:
-
根据您所在的发行版(或针对其运行),服务名称可能不是您认为的...您是否尝试查看
ansible_facts.services以查看apache2诸如此类的功能? -
点评来源: 请多描述一下你想要达到的目标。正如现在所描述的那样,很难理解您到底在要求什么。
-
对不起,我的意思是当我执行脚本时,我得到了 "ansible_facts.services.apache2.state": "VARIABLE IS NOT DEFINED!"我想让 apache 正在运行或停止,没有定义