2013款MacBook Pro上Vagrant部署Bento/CentOS-7运行Chef报tty错误
故障原因
你遇到的tty相关报错是CentOS 7系统的默认安全策略导致的:系统默认配置要求sudo命令必须在有tty(伪终端)的交互式环境下执行,而Test Kitchen默认通过非交互式SSH连接执行远程命令,不会主动分配tty,触发了该限制,导致sudo执行失败,kitchen create任务中断。
解决方案
方案1:修改.kitchen.yml配置,强制SSH分配伪终端(优先推荐)
在driver配置块中新增ssh.pty配置项,修改后的driver块如下:
driver: name: vagrant ssh: pty: true # 核心配置,强制SSH分配伪终端,绕过tty限制 network: - ["public_network"] customize: memory: 512
修改后重新执行kitchen create即可,该方案无需修改虚拟机内部配置,适配性最高。
方案2:预置命令关闭sudo的tty限制
如果方案1未生效,可以在provisioner块中添加前置执行命令,在初始化阶段直接修改虚拟机的sudoers配置,移除tty要求:
provisioner: name: chef_zero product_name: chef product_version: 14.12.9 pre_install_command: sed -i '/Defaults\s*requiretty/d' /etc/sudoers
其他注意事项
- 你操作步骤中的第10步路径有误,当前处于
/chef_class/cookbooks目录下,克隆项目后执行cd learn_chef_httpd即可,你写的cd /learn-chef/learn_chef_httpd是绝对路径,会找不到目录,先修正路径问题再执行后续操作。 - 2013款MacBook Pro运行内存上限较低,你配置了7个suite实例,建议每次仅创建1个实例测试,或者将单实例内存调整为256M,避免内存不足引发的其他启动异常。
内容的提问来源于stack exchange,提问作者captainndann
相关产品推荐
相关产品推荐

