背景
数十台のRHEL 7.2
のサーバーにCloudWatch Logs Agen(以下、CWLAgent)を導入することタスクが発生した。省力化というより構成管理の観点からAnsibleでCWLAgentを導入することになった。
環境
Ansibleサーバー
OS: RHEL7.5
Ansible: 2.5
ServerA(実行対象)
OS: RHEL7.5
個人的で触れる環境がRHEL7.5
しかなかった、、、
目的
いい感じにAnsibleで対象のサーバーにCWLAgentを導入すること
playbook/task
サーバーごとにplaybookを作っています。
命名法はhost名.yml
- hosts: ServerA
remote_user: ansible
become: yes
become_user: root
vars_files:
- /etc/ansible/variable/test/host_vars/ServerA_vars
- /etc/ansible/variable/test/group_vars/GroupA_vars
roles:
# - common
- cloud_watch_logs_agent
この記事のメインは下のroleです。(正しくないroleです。正しいのは章:'改善したrole'を参照)
- name: copy Install Script
copy:
src: tmp/awslogs-agent-setup.py
dest: /tmp
owner: root
group: root
mode: 0755
- name: copy awslogs.conf
copy:
src: tmp/awslogs.conf
dest: /tmp/awslogs.conf
owner: root
group: root
backup: yes
mode: 755
- name: install AWS CloudWatch Logs Agent
shell: python /tmp/awslogs-agent-setup.py -n -r ap-northeast-1 -c /tmp/awslogs.conf
- name: enabled awslogs
service:
name: awslogs
enabled: yes
*文字に変な色ついてる。 なんでだろ?
このplaybook(role)を実行しても、CWLAgentは導入されるけど、自動起動が有効化(enabled)にならない。
ansibleでやりたいことに自動起動も含まれているので、どうにかしたい。
いろいろ試した
serviceモジュール がおかしいのかな? (原因不明)
ansibleにはserviceモジュール、systemdモジュールがあることがわかった。
serviceモジュールをsystemdモジュールに置き換えた。それ以外はオプションも含めて変更なし。
だめだ。自動起動設定入ってない
もっといろいろ原因を探した。原因がpythonスクリプトで導入するという意味のわからんことをやっているかもしれないとか思ってた。
深夜2時くらいまでAnsible実行前の状態のサーバーを再構築してPlaybook流すのループとか5回くらいやった
改善したtask
これでいけた。(原因はわかってないんだが) できたときは 初めて自分で自分をほめたいと思います
って思った
- name: copy Install Script
copy:
src: tmp/awslogs-agent-setup.py
dest: /tmp
owner: root
group: root
mode: 0755
- name: copy awslogs.conf
copy:
src: tmp/awslogs.conf
dest: /tmp/awslogs.conf
owner: root
group: root
backup: yes
mode: 755
- name: install AWS CloudWatch Logs Agent
shell: python /tmp/awslogs-agent-setup.py -n -r ap-northeast-1 -c /tmp/awslogs.conf
- name: enabled awslogs
service:
name: awslogs.service
enabled: yes
serviceモジュールの対象のサービスを指定する部分をawslogs.service
に変更したらいけた
あとがき
なにが原因なんだ。
それよりも、ymlファイルの/tmp/
の色が緑になっている方が気になる。
PCがMacなんだが、そんなのが関係しているのかな?