使用Ansible进行New Relic Infrastructure代理配置管理

首先

这次是关于使用Ansible安装New Relic Infrastructure代理的故事。

背景

在不久前,我们在公司举办了一场关于New Relic的研讨会(实践培训)。为了准备这次活动,我们需要准备20至30人的服务器环境。在制定研讨会的场景时,虽然有一些基本要求和目标,但我们会不断吸收好的想法,因此是一个流动的过程。在经常进行废弃和重建的过程中,渐渐地我们会思考将简单的手工操作自动化。这时就轮到Ansible登场了。

Ansible 的应用场景

在这种情况下,它对我非常有帮助。具体的步骤将在后面提到。

    • EC2インスタンスに New Relic Infrastructure エージェントをインストールする

 

    New Relic Infrastructure の設定ファイルの値を臨機応変に書き換える

在我看来,当需要进行一些小的改动,比如“紧急更改许可证密钥”时,Ansible非常方便易用。每次重新构建AMI有点太过夸张了。虽然可以使用CodeDeploy来使用AWS执行环境,但考虑到需要理解其使用方式所需的时间,手动安装可能更快,这是无可争议的原因,所以这次我们放弃了此选项。我会在GW上慢慢考虑这个问题。

步骤

简述

使用Ansible自动化新的Relic基础结构代理的手动安装步骤。

安装 Ansible

# yum install ansible
# ansible --version
ansible 2.3.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Nov  6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
#

主机文件的设置

# vi /etc/ansible/hosts

XX.XX.XX.XX 是 EC2 的IP地址(公有或弹性)。

[infrastructure]
XX.XX.XX.XX ansible_ssh_user=ec2-user ansible_ssh_private_key_file=[EC2の鍵のパス]

确认疏通

# ansible all -m ping
XX.XX.XX.XX | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
#

如果出现 “Unreachable!” 的提示,首先要确认EC2是否能够联通,如果没有问题,可以尝试怀疑hosts的描述是否正确(例如EC2密钥的路径、权限等)。

对Ansible的可用性进行测试

如果进展顺利,就能够使用Ansible。

# ansible infrastructure -a "/bin/date"
13.112.244.194 | SUCCESS | rc=0 >>
Tue Apr 25 02:43:21 UTC 2017

#

剧本 (jù

New Relic 提供了示例。(参考:这里 和 Github)

但是,这次我自己制作了。由于我对Ansible的熟练程度仅仅是今天第一次接触,所以没有时间来掌握使用方法,这是一个无法抵赖的情况。关于详细的使用方法,将成为以后的课题。

游戏册(infra_agent_install.yml)

# cat infra_agent_install.yml
---
- hosts: infrastructure
  sudo: yes
  tasks:
  - name: install config file
    template: src=newrelic-infra.yml dest=/etc/newrelic-infra.yml
  - name: repo update
    command: curl -o /etc/yum.repos.d/newrelic-infra.repo https://download.newrelic.com/infrastructure_agent/linux/yum/el/6/x86_64/newrelic-infra.repo
  - name: repo
    command: yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
  - name: install
    command: yum install newrelic-infra -y
#

設定檔案(newrelic-infra.yml)

当设置文件(newrelic-infra.yml)只包含许可证密钥。如果许可证密钥发生变化,需要修改设置文件并重新执行。

# cat newrelic-infra.yml
license_key:   <ライセンスキーを記載>
#

确认动作并执行

在执行之前,请确保Playbook没有任何问题。

# ansible-playbook -i hosts infra_agent_install.yml --syntax-check

执行

# ansible-playbook -i hosts infra_agent_install.yml
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and mak
This feature will be removed in
a future release. Deprecation warnings can be disabled by setting deprecation_wa

PLAY [infrastructure] **********************************************************

TASK [Gathering Facts] *********************************************************
ok: [XX.XX.XX.XX]

TASK [install config file] *****************************************************
changed: [XX.XX.XX.XX]

TASK [repo update] *************************************************************
 [WARNING]: Consider using get_url or uri module rather than running curl

changed: [XX.XX.XX.XX]

TASK [repo] ********************************************************************
 [WARNING]: Consider using yum module rather than running yum

changed: [XX.XX.XX.XX]

TASK [install] *****************************************************************
changed: [XX.XX.XX.XX]

PLAY RECAP *********************************************************************
XX.XX.XX.XX              : ok=5    changed=4    unreachable=0    failed=0

#

EC2实例已成功安装了New Relic Infrastructure代理。虽然过程中可能会有一些强制性操作,但目标已经达到。当需要更改授权密钥时,只需修改配置文件(newrelic-infra.yml),然后重新运行ansible-playbook命令即可。

2.png

可能会上瘾的地方

重新创建 EC2 实例之后,常常会遇到身份验证错误的情况。请执行 “ssh-keygen -R” 命令。

以上

广告
将在 10 秒后关闭
bannerAds