cloud-init 中的 `sudo` 命令很慢!如何解决?

cloud-init 中的 `sudo` 命令很慢!如何解决?

我正在尝试使用 bash 用户数据引导 Centos7 EC2 实例 (ami-02eac2c0129f6376b)。由于它以 root 身份运行,并且我需要以 centos 用户身份创建很多东西,所以我使用了sudo -Hu centos <cmd>很多次。每次调用都会带来 25 秒的延迟。我有数百次。我该怎么做才能加快速度?

这是一个已知问题,但我找不到任何解决方案。

我努力了:

  • 添加并/etc/hosts输入我的主机名
printf "\n127.0.0.1   %s %s\n" "$(hostname -f)" "$(hostname -s)" | tee -a /etc/hosts
  • 从 /etc/nsswitch.conf 中删除 myhostname
sed -Ei 's/\s*myhostname//' /etc/nsswitch.conf

这些延迟非常痛苦,因为我目前正处于构建新的用户数据脚本的反复试验阶段。

我能做些什么?

答案1

虽然最好找出sudo速度慢的原因并解决它,但您可以将命令组合在一起,只调用一次 sudo。在脚本中,您可以执行以下操作:

sudo -Hu centos bash <<EOF
somecommand
somecommand2
morecommands
EOF

答案2

ASELinux 政策中的错误RHEL 和 CentOS 7 附带的 导致 sudo 在每个命令上等待整整 25 秒。此错误已通过此selinux-policy-3.13.1-229.el7_6.10软件包修复。您应该创建一个更新了此软件包(最好是整个系统)的新 AMI。

相关内容