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 件のコメント:
コメントを投稿