Playbook
いろいろ試行錯誤した結果、Playbookは以下の形となった。setup_ntp_conf.yml
------------------------------
---
- hosts: all
vars:
proxy_env:
http_proxy: http://192.168.33.23:8080/
https_proxy: http://192.168.33.23:8080/
tasks:
- name: install ntp
yum: name=ntp state=latest
environment: "{{ proxy_env }}"
- name: copy /etc/ntp.conf
copy:
src: /root/conf/ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: 0644
backup: yes
register: result
- name: restart ntpd
systemd:
name: ntpd.service
state: restarted
enabled: yes
when: result|changed
------------------------------
本Playbookのポイントを記載していこう。
hostsセクション
これについては特筆すべきことはなく、/etc/ansible/hostsに記載されたすべてのサーバーに対して処理を行うよう「all」で指定した。varsセクション
プロキシを経由しなければインターネット接続ができない環境となっているため、環境変数にてプロキシを指定している。こちらに関しては、以下記事を参照いただきたい。Ansibleでプロキシを指定してyum updateする
https://tech-mmmm.blogspot.com/2018/08/ansibleyum-update.html
tasksセクション
以下の流れでntpdの構築を行う。- ntpdをyumを使ってインストール
- 作成済みのntp.confをコピー
- ntp.confに変更があった場合のみntpdをリスタート
ntp.confをコピーする際は、「backup: yes」を指定し、ntp.confファイルのバックアップを取得するように指定した。なお、バックアップは以下のようなファイル名で、同一のディレクトリに取得される。
[root@localhost ~]# ls -l /etc/ntp.conf*
------------------------------
-rw-r--r--. 1 root root 206 8月 10 09:10 /etc/ntp.conf
-rw-r--r--. 1 root root 2000 4月 11 05:29 /etc/ntp.conf.12346.2018-08-10@09:10:14~
------------------------------
また、ntp.confに変更があった場合のみntpdをリスタートするように、ntp.confの置き換え処理の実行結果をregister変数「result」に格納し、「when: result|changed」を指定することで、実行結果が「changed」の場合のみ、ntpdのリスタートが処理されるようにした。
実行結果
ntpdがインストールされていない状態から実行した結果は以下の通り。[root@t1000cent ~]# ansible-playbook setup_ntp_conf.yml
------------------------------
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.11.223]
TASK [install ntp] *************************************************************
changed: [192.168.11.223]
TASK [copy /etc/ntp.conf] ******************************************************
changed: [192.168.11.223]
TASK [restart ntpd] ************************************************************
changed: [192.168.11.223]
PLAY RECAP *********************************************************************
192.168.11.223 : ok=4 changed=3 unreachable=0 failed=0
------------------------------
changed=3となっており、①インストール、②ntp.conf置き換え、③ntpdのリスタートが正常に処理されたようだ。
もう一度、playbookを実行してみる。
[root@t1000cent ~]# ansible-playbook setup_ntp_conf.yml
------------------------------
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.11.223]
TASK [install ntp] *************************************************************
ok: [192.168.11.223]
TASK [copy /etc/ntp.conf] ******************************************************
ok: [192.168.11.223]
TASK [restart ntpd] ************************************************************
skipping: [192.168.11.223]
PLAY RECAP *********************************************************************
192.168.11.223 : ok=3 changed=0 unreachable=0 failed=0
------------------------------
2回目は、changed=0となっており、変更は発生しない。ntp.confに変更がないため、ntpdのリスタートが「skipping」ステータスとなっているのがポイント。
ためしに、ntp.confを少し変更して、3回目の実行を試みた。
[root@t1000cent ~]# ansible-playbook setup_ntp_conf.yml
------------------------------
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.11.223]
TASK [install ntp] *************************************************************
ok: [192.168.11.223]
TASK [copy /etc/ntp.conf] ******************************************************
changed: [192.168.11.223]
TASK [restart ntpd] ************************************************************
changed: [192.168.11.223]
PLAY RECAP *********************************************************************
192.168.11.223 : ok=4 changed=2 unreachable=0 failed=0
------------------------------
changed=2となっており、②ntp.conf置き換え、③ntpdのリスタートが処理された。
実際に対象サーバーで時刻同期状況を確認してみたところ、以下の通り正常に同期できていることが確認できた。
[root@localhost ~]# ntpq -p
------------------------------
remote refid st t when poll reach delay offset jitter
==============================================================================
*t3023ce72.intra 133.243.238.163 2 u 48 64 377 0.274 -1.756 9.654
------------------------------
参考
systemd - Manage serviceshttps://docs.ansible.com/ansible/2.6/modules/systemd_module.html
0 件のコメント:
コメントを投稿