在我的編碼中,我想知道服務的狀態,如service httpd status
(服務是否是runngin),結果將存儲到變量中。使用這種狀態我會使用一些其他的代碼。我如何知道服務狀態?
我正在使用安全的服務模塊,沒有狀態選項。如果我使用的外殼模塊我得到這個警告
[WARNING]: Consider using service module rather than running service
因此,它是任何其他模塊做讓服務狀態?
在我的編碼中,我想知道服務的狀態,如service httpd status
(服務是否是runngin),結果將存儲到變量中。使用這種狀態我會使用一些其他的代碼。我如何知道服務狀態?
我正在使用安全的服務模塊,沒有狀態選項。如果我使用的外殼模塊我得到這個警告
[WARNING]: Consider using service module rather than running service
因此,它是任何其他模塊做讓服務狀態?
不,沒有標準模塊來獲取服務的狀態。
但如果你知道你在做什麼,你可以抑制特定command
任務警告:
- command: service httpd status
args:
warn: false
我已經發布了一個快速note關於這一招前一陣子。
希望service: allow user to query service status #3316很快就會被合併到核心模塊中。
你可以手工使用此diff to system/service.py
這裏是我的差異使用ansible 2.2.0.0修補它。我已經在我的Mac/homebrew安裝上運行了它,它適用於我。
這是我編輯的文件:/usr/local/Cellar/ansible/2.2.0.0_2/libexec/lib/python2.7/site-packages/ansible/modules/core/system/service.py
@@ -36,11 +36,12 @@
- Name of the service.
state:
required: false
- choices: [ started, stopped, restarted, reloaded ]
+ choices: [ started, stopped, status, restarted, reloaded ]
description:
- C(started)/C(stopped) are idempotent actions that will not run
- commands unless necessary. C(restarted) will always bounce the
- service. C(reloaded) will always reload. B(At least one of state
+ commands unless necessary. C(status) would report the status of
+ the service C(restarted) will always bounce the service.
+ C(reloaded) will always reload. B(At least one of state
and enabled are required.)
sleep:
required: false
@@ -1455,7 +1456,7 @@
module = AnsibleModule(
argument_spec = dict(
name = dict(required=True),
- state = dict(choices=['running', 'started', 'stopped', 'restarted', 'reloaded']),
+ state = dict(choices=['running', 'started', 'stopped', 'status', 'restarted', 'reloaded']),
sleep = dict(required=False, type='int', default=None),
pattern = dict(required=False, default=None),
enabled = dict(type='bool'),
@@ -1501,6 +1502,9 @@
else:
service.get_service_status()
+ if module.params['state'] == 'status':
+ module.exit_json(state=service.running)
+
# Calculate if request will change service state
service.check_service_changed()
這裏httpd服務啓動,將工作良好。如果服務停止,我得到錯誤。 – SSN
如果'service'命令以非零退出代碼退出,則應該使用'failed_when:false'來處理它。 –