Ansible: CloudWatch 用 Linux 監視スクリプトをインストールする Playbook
前提
- EC2 インスタンスの OS は Amazon Linux とする
- 認証情報はファイルに保存する
- インスタンス作成前であれば、IAM Role の設定により認証情報の保持が不要となる
- CloudWatch API 専用の IAM ユーザの作成を推奨
- 各種パラメータについては vars/main.yml を参照
- 課金が発生する可能性があるので注意
コード
---
- name: install additional perl modules
yum: name={{ item }} state=present
with_items:
- perl-Switch
- perl-Sys-Syslog
- perl-LWP-Protocol-https
tags: aws-scripts-mon
- name: check if script is installed
command: /usr/bin/test -e {{ path_to_script }}
ignore_errors: True
changed_when: False
register: is_installed
tags: aws-scripts-mon
- name: download scripts from AWS server
get_url: url={{ download_url }} dest={{ path_to_download }}
when: is_installed | failed
tags: aws-scripts-mon
- name: unzip downloaded file
unarchive: copy=no src={{ path_to_download }} dest={{ home_dir }}
when: is_installed | failed
tags: aws-scripts-mon
- name: create credential file
template: src={{ item }}.j2 dest={{ script_dir }}/{{ item }} owner={{ user }} group={{ user }} mode="0600"
with_items:
- awscreds.conf
tags: aws-scripts-mon
- name: set directory owner
file: path={{ script_dir }} state=directory owner={{ user }} group={{ user }} recurse=yes
tags: aws-scripts-mon
- name: remove downloaded file
file: path={{ path_to_download }} state=absent
tags: aws-scripts-mon
- name: set cron
cron: user={{ user }}
state=present
name="CloudWatch monitoring script"
minute="{{ cron.minute }}"
hour="{{ cron.hour }}"
job="{{ cron.job }}"
tags: aws-scripts-mon
AWSAccessKeyId={{ access_key }}
AWSSecretKey={{ secret_key }}
---
user: ec2-user
version: 1.1.0
filename: CloudWatchMonitoringScripts-v{{ version }}.zip
download_url: http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/{{ filename }}
path_to_download: "/tmp/{{ filename }}"
home_dir: "/home/{{ user }}"
script_dir: "{{ home_dir }}/aws-scripts-mon"
path_to_script: "{{ script_dir }}/mon-put-instance-data.pl"
access_key: "{{ aws_cloudwatch_agent_access_key_id }}"
secret_key: "{{ aws_cloudwatch_agent_secret_access_key }}"
cron:
hour: "*"
minute: "*/5"
job: "{{ path_to_script }} --mem-util --mem-used --mem-avail --swap-util --swap-used --disk-path=/ --disk-space-util --disk-space-used --disk-space-avail --aws-credential-file={{ script_dir }}/awscreds.conf --from-cron"
credential 情報 (aws_cloudwatch_agent_xxx) は、extra-vars などで渡す想定。
0 件のコメント:
コメントを投稿