首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Terraform - EC2 user_data和会话管理器(ssm-user)

Terraform - EC2 user_data和会话管理器(ssm-user)
EN

Stack Overflow用户
提问于 2022-07-21 07:49:32
回答 2查看 494关注 0票数 0

我正在用Terraform在AWS上创建一个EC2实例,其中包含user_data参数,安装停靠点,并将其分配给用户ssm-user。

我不想启用ssh连接(22),我只有通过系统管理器中的会话管理器( Session Manager )启用了访问。

这是shell脚本:

代码语言:javascript
运行
复制
#!/bin/bash
set -ex
sudo yum update -y
sudo amazon-linux-extras install docker -y
sudo usermod -a -G docker ssm-user
sudo chown ssm-user:ssm-user /home/ssm-user/.docker -R
sudo chmod g+rwx "/home/ssm-user/.docker" -R
sudo chown ssm-user:docker /var/run/docker.sock
sudo systemctl enable docker
sudo systemctl start docker

但是,当我通过Session Manager访问EC2实例并运行docker ps命令时,会得到以下错误:

无法连接到unix://var/run/docker.sock上的Docker守护进程。码头守护进程正在运行吗?

为什么这一切会发生,好像什么都没有被执行一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 08:12:59

你需要看看/var/log/cloud-init-output.log。它捕获控制台输出,并可能在脚本中出现错误。请参阅更多这里

很可能是说user 'ssm-user' does not exist

顺便说一句,你不需要sudo in user data。命令以root的形式运行。

票数 3
EN

Stack Overflow用户

发布于 2022-08-24 18:06:31

我也遇到了同样的问题,所以我想我应该粘贴我的代码更改,通过ssm-user创建user_data,而不是等待一个ssm会话开始。

代码语言:javascript
运行
复制
adduser -m ssm-user
tee /etc/sudoers.d/ssm-agent-users <<'EOF'
# User rules for ssm-user
ssm-user ALL=(ALL) NOPASSWD:ALL
EOF
chmod 440 /etc/sudoers.d/ssm-agent-users 
# Now adding the ssm-user works!
usermod -a -G docker ssm-user

我从ssm-代理github复制了代码

通常,ssm -用户是在第一次启动ssm会话时创建的.参考资料:这里

在2.3.612.0及更高版本上,ssm-user帐户是在第一次在实例上启动会话时创建的。当会话以会话管理器( AWS系统管理器的一种功能)开始时,这个ssm用户是默认的OS用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73062497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档