私はredis-server
のようなサービスをAnsibleによって実行したいと考えています。Ansibleによるサービスステータスの入手方法
私は、システムサービスを停止または開始するためにAnatileサービスモジュールを使用する方法を知っています。しかし、どのようにして現在のサービスステータスを取得できますか?
私はredis-server
のようなサービスをAnsibleによって実行したいと考えています。Ansibleによるサービスステータスの入手方法
私は、システムサービスを停止または開始するためにAnatileサービスモジュールを使用する方法を知っています。しかし、どのようにして現在のサービスステータスを取得できますか?
通常、これはAnsibleで行いません。サーバーをどのように見せたいかを宣言的に定義する必要があります。構成が変更されたが、それはに稀であるだろうというときのRedisを再起動するには
- name: restart redis
service:
name=redis-server
state=restarted
enabled=yes
when: redis_config.changed
:
- name: start redis
service:
name=redis-server
state=started
enabled=yes
あなたは条件付きでこのようなことを行うことがありますような何かをあなたが通常だけでしょう。このよう
サービスが実行されているかどうかを確認する必要があります。あなたはサービスが実行されている(と私はあなたがあなたのAnsible役割/脚本についてもう一度考えていることを強く示唆している)かどうかを確認する必要があります絶対場合
、あなたはいつも殻から取り出すことができます:
- name: check redis status
shell: service redis-service status
をタスクservice: name=httpd state=started
をオプション--check
で実行するだけです。これは、サービスを開始する必要があるかどうかを示します。これは、サービスが停止していることを意味します。タスクに変更がないと表示されている場合は、すでに起動しています。
例サービスは、ダウンしていることが開始する必要があるためchanged
は、真である:
$ ansible -m service -a 'name=rpc/bind state=started' --check host
host | SUCCESS => {
"changed": true,
"msg": "service state changed"
}
例サービスが起動され、ナッシングを行う必要があるためchange
は、偽です:
$ ansible -m service -a 'name=system-log state=started' --check host
host | SUCCESS => {
"changed": false,
"name": "system-log",
"state": "started"
}
個人的には、私の環境の中で私のサービスのステータスを取得し、それらを再起動できるように、何らかの種類のPlaybookを持っています。
したがって、私はコマンドモジュールの片側をKonstantin Suvorovで推奨されているように使用しますが、必要なポートがすべて稼働し、サービスが期待通りに機能することを確認するために、期待されるポートも確認します。 これはあなたのケースで、次のようになります。コマンドモジュールは常にtrueに変更しますので、それだけで読み取り専用のコマンドですが
- name: verify redis-server service
command: /usr/sbin/sservice redis-server status
changed_when: false
- name: verify redis-server is listening on 6379
wait_for: port=6379 timeout=1
changed_whenは単に、使用されています。
scan_servicesプラグインを使用することもできます。
mkdir -p library
cd library
curl -sSL -O https://github.com/ansible/awx/raw/devel/awx/plugins/library/scan_services.py
使用例:
- name: collect facts about system services
scan_services:
register: services_state
- name: Debug
debug:
var: services_state
出力例:
...
TASK [Debug] ***************************************************************************************************************************************************************************************************************
ok: [local] => {
"services_state": {
"ansible_facts": {
"services": {
"cloud-init-local.service": {
"name": "cloud-init-local.service",
"source": "systemd",
"state": "stopped"
},
"firewalld.service": {
"name": "firewalld.service",
"source": "systemd",
"state": "stopped"
},
...
}
}
}
}
は、あなたのタスクを説明してください。あなたは通常、物事をどのようにしたいのか、そして何も手作業で質問しないようにすることができます。例: 'service:name = httpd state = started'。 –