私はこの本でAnsibleを学んでいます。これには次の実験が含まれています。
次の仕様に従ってスクリプトを作成します。
- ホスティングサーバーは、cronモジュールを使用して毎週平日の午前2時に再起動する必要があります。
- 再起動後、「CRONブートの再起動完了」というテキストを含むメッセージをシステムログに記録する必要があります。
- デフォルトのsystemdターゲットは複数のターゲットに設定する必要があります。
- 最後のタスクでは、サービスファクトを使用してcronプロセスの現在のバージョンを表示する必要があります。
最後の部分は少し混乱しています。 service_facts モジュールは、クローンの名前、ソース、状態、および状態に関連する事実だけを検索しますが、バージョンは検索しません。この目標を達成する方法は?
答え1
これはバグかもしれません。要求が疑わしいようです(または少なくとも不明です)'use service facts to show the current version of the cron process'
。プロパティにバージョンがありません。サービスの事実、たとえば(Ubuntuで実行中)
- service_facts:
- debug:
var: ansible_facts.services['cron.service']
与えられた
ansible_facts.services['cron.service']:
name: cron.service
source: systemd
state: running
status: enabled
しかも'version of process'
おかしく見えるけど。たぶん彼らは欲しいですか'PID of process'
?この場合は、以下を使用してください。システム、例えば
- systemd:
name: "{{ ansible_facts.services['cron.service']['name'] }}"
register: result
- debug:
var: result.status.ExecMainPID
与えられた
result.status.ExecMainPID: '884'
(また見なさい: shell> systemctl status cron.service
)
次のオプションは彼らが望むものかもしれません'version of cron binary'
。この場合は、以下を使用してください。パック情報、例えば
- package_facts:
- debug:
var: ansible_facts.packages.cron.0.version
与えられた
ansible_facts.packages.cron.0.version: 3.0pl1-136ubuntu1
より複雑なオプションを見る実行中のcronデーモンのバージョンを取得する方法。 Ansibleで自動化することもできます。