如何通过 Ansible 在 AWS EC2 实例上部署 Consul

Posted

技术标签:

【中文标题】如何通过 Ansible 在 AWS EC2 实例上部署 Consul【英文标题】:How to deploy Consul on AWS EC2 instance over Ansible 【发布时间】:2019-11-06 05:08:46 【问题描述】:

注意:这不是 HashiCorp 的 Consul,这是一个不同的项目:http://consulproject.org/

我不确定这是否是 consul 项目的特定问题,或者是否有任何了解 Ansible 和 EC2 的人能够解决它。

我正在尝试通过安装程序将 Consul 实例部署到 Amazon EC2 实例。我已按照此处的说明进行操作:https://github.com/consul/installer

我在运行 macOS Sierra 10.12.6 的 Mac 上执行此操作,该 Mac 上安装了 Python 2.7。

我从 AWS 下载了 .pem 文件,它是用于 SSH 身份验证的私钥。我可以通过 ssh -i [path to .pem file] ec2-user@[ip address of EC2 instance] SSH 进入服务器

我已经安装了 Ansible。当我跑步时:

sudo ansible-playbook -v consul.yml -i hosts

"请以用户\"ec2-user\"而不是用户身份登录 \"根\"。\r\n\r\n"

但是,我已经编辑了我的 group_vars/all 文件以包含 root_access: false 所以我不确定还需要做什么。

我的 git diff 从存储库中看起来像这样:

diff --git a/group_vars/all b/group_vars/all
index 85bf74d..cb3db37 100644
--- a/group_vars/all
+++ b/group_vars/all
@@ -10,10 +10,10 @@ locale: en_US.UTF-8
 # General settings
 env: production
-root_access: true
-deploy_user: deploy
+root_access: false
+deploy_user: ec2-user
 home_dir: "/home/ deploy_user "
-deploy_password: test
+deploy_password: <some really great password>
 deploy_app_name: test
 deploy_server_hostname: 127.0.0.1
 consul_dir: " home_dir /consul"
@@ -27,7 +27,7 @@ shared_public_dirs:
   - "system"
   - "ckeditor_assets"
-ssh_public_key_path: "~/.ssh/id_rsa.pub"
+ssh_public_key_path: "[path to .pem file]"
 # Ruby
 ruby_version: 2.4.9

【问题讨论】:

【参考方案1】:

不要使用sudo 运行ansible-playbook 命令。如果 playbook 中的任务需要 root 访问权限(在远程/托管主机上),则在必要时添加 become: true(即在任务级别、播放级别或您的 Ansible 配置中)

【讨论】:

【参考方案2】:

我需要更新 ansible_user。 为此,我将此行添加到 group_vars/all 文件中

ansible_user: ec2-user

【讨论】:

以上是关于如何通过 Ansible 在 AWS EC2 实例上部署 Consul的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ansible 创建 AWS ec2 密钥 | Linux 中国

如何与用户一起备份 Ec2 linux 实例

如何在amazon aws上安装ansible?

如何在 AWS EC2 实例上预安装 sbt(通过用户数据)?

Ansible 动态清单:检索 ec2 清单时的身份验证错误

AWS EC2实例上的Tableau Server 10.2的静默安装是否有效?