My Note

自己理解のためのブログ

UbuntuにAnsibleでmackerel-agentをインストールする

やったこと

  • Ubuntu環境のため、Ubuntu以外で実行したらFailさせる
  • AutoScaling環境を使うため、Mackerelの機能である自動退役モードを設定する
  • PackerでAMIを作成するため、インストール・設定後にidファイルを削除する
  • (※ mackerel_agent_apikeyはansible-vaultで暗号化する必要あり)

環境

  • ubuntu16.04
  • ansible2.5

Ansibleのコード

  • roles/mackerel/tasks/main.yml
---
- name: Import mackerel GPG key v2
  apt_key: url=https://mackerel.io/file/cert/GPG-KEY-mackerel-v2 state=present
  failed_when:
    - ansible_distribution != 'Ubuntu'
  become: yes


- name: Add repository mackerel v2
  apt_repository: repo='deb http://apt.mackerel.io/v2/ mackerel contrib' state=present update_cache=yes
  failed_when:
    - ansible_distribution != 'Ubuntu'
  become: yes


- name: Install mackerel-agent
  apt:
    name: mackerel-agent
    state: latest
    update_cache: yes
    force: yes
    dpkg_options: 'force-confdef,force-confold'
  become: yes


- name: Install mackerel-agent-plugins
  apt:
    name: mackerel-agent-plugins
    state: latest
    update_cache: yes
    force: yes
    dpkg_options: 'force-confdef,force-confold'
  when: mackerel_use_plugins
  become: yes


- name: Install mackerel-check-plugins
  apt:
    name: mackerel-check-plugins
    state: latest
    update_cache: yes
    force: yes
    dpkg_options: 'force-confdef,force-confold'
  when: mackerel_use_plugins
  become: yes


- name: Update agent config
  template:
    src: mackerel-agent.conf.j2
    dest: /etc/mackerel-agent/mackerel-agent.conf
  become: yes


- name: Set auto-retirement agent
  template: src=auto-retirement.conf.j2 dest=/etc/default/mackerel-agent
  become: yes


- name: Apply mackerel-agent conf
  systemd:
    name: mackerel-agent.service
    state: reloaded
  become: yes


- name: Enable mackerel-agent
  systemd:
    state: started
    daemon_reload: yes
    enabled: yes
    name: mackerel-agent.service
  become: yes


- name: Wait until created mackerel-id file
  wait_for:
    path: /var/lib/mackerel-agent/id
    timeout: 30


- name: Stop service mackerel-agent if running for createAMI
  systemd:
    name: mackerel-agent.service
    state: stopped
  become: yes


- name: Check mackerel-id file for createAMI
  stat:
    path: /var/lib/mackerel-agent/id
  become: yes
  register: mackerel_id_file


- name: Delete mackerel-id file if exist for createAMI
  file:
    state: absent
    path: /var/lib/mackerel-agent/id
  become: yes
  when: mackerel_id_file.stat.exists
  • roles/mackerel/templates/auto-retirement.conf.j2
AUTO_RETIREMENT=1
  • roles/mackerel/templates/mackerel-agent.conf.j2
apikey = "{{ mackerel_agent_apikey }}"
include = "/etc/mackerel-agent/*"
  • roles/mackerel/defaults/main.yml
mackerel_use_plugins: yes
mackerel_agent_start_on_setup: yes

参考

AnsibleでインストールするためのMackerel公式のGitHub