我正在用Terraform在AWS上创建一个EC2实例,其中包含的user_data
参数,安装停靠点,并将其分配给用户ssm-user。
我不想启用ssh连接(22),我只有通过系统管理器中的会话管理器( Session Manager )启用了访问。
这是shell脚本:
#!/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守护进程。码头守护进程正在运行吗?
为什么这一切会发生,好像什么都没有被执行一样?
发布于 2022-07-21 08:12:59
你需要看看/var/log/cloud-init-output.log
。它捕获控制台输出,并可能在脚本中出现错误。请参阅更多这里。
很可能是说user 'ssm-user' does not exist
顺便说一句,你不需要sudo
in user data
。命令以root的形式运行。
发布于 2022-08-24 18:06:31
我也遇到了同样的问题,所以我想我应该粘贴我的代码更改,通过ssm-user
创建user_data,而不是等待一个ssm会话开始。
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用户。
https://stackoverflow.com/questions/73062497
复制相似问题