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