如何以合规Ansible方式安装Amazon Linux 2的NewRelic PHP Agent?
正确的Ansible方式在Amazon Linux 2上安装NewRelic PHP Agent
你朋友遇到的问题其实很常见——核心是之前的仓库版本不匹配,以及没找对GPG密钥导入的正确姿势。用command模块虽然能临时解决问题,但确实不符合Ansible的幂等性原则,还会触发ansible-lint警告。下面给你一套完全符合规范的实现方案:
步骤1:导入NewRelic的GPG密钥
你提到的548C16BF.gpg正是NewRelic的官方签名密钥,我们可以用rpm_key模块直接从官方源导入,确保密钥被系统可信库认可:
- name: Import NewRelic GPG signing key rpm_key: key: https://download.newrelic.com/548C16BF.gpg state: present
步骤2:添加适配Amazon Linux 2的YUM仓库
注意!Amazon Linux 2兼容RHEL7生态,绝对不能用你之前的el5版本仓库,必须切换为el7的配置。用yum_repository模块定义仓库,完全符合Ansible最佳实践:
- name: Configure NewRelic YUM repository yum_repository: name: newrelic description: Official NewRelic Repository baseurl: https://yum.newrelic.com/pub/newrelic/el7/x86_64/ gpgcheck: yes gpgkey: https://download.newrelic.com/548C16BF.gpg enabled: yes
步骤3:安装NewRelic PHP Agent
仓库配置完成后,直接用yum模块安装即可,模块会自动处理依赖和幂等性(仅在未安装时执行):
- name: Install NewRelic PHP Agent yum: name: newrelic-php5 state: present
为什么之前的尝试会失败?
- 仓库版本不匹配:你之前用的
el5repo包是适配老旧系统的,和Amazon Linux 2的RHEL7内核不兼容,会导致YUM找不到适配包、密钥验证失败。 - GPG密钥导入不规范:手动复制repo文件后,如果没将密钥正确导入系统可信库,YUM会因为签名验证不通过而拒绝安装,
rpm_key模块能确保密钥被正确识别。
替代方案:用官方Repo RPM包(仍符合规范)
如果你偏好官方打包的repo配置,也可以用yum模块安装,代替command调用——既保留官方包的便利性,又符合Ansible幂等要求:
- name: Install NewRelic official repo RPM yum: name: https://yum.newrelic.com/pub/newrelic/el7/x86_64/newrelic-repo-5-3.noarch.rpm state: present
这种方式会自动完成密钥导入和仓库配置,完全不需要额外的命令调用,也不会触发ansible-lint警告。
内容的提问来源于stack exchange,提问作者guessimtoolate
相关产品推荐
相关产品推荐

