Drupal 6 引导期间切换chef客户端用户

Drupal 6 引导期间切换chef客户端用户,drupal-6,chef-infra,chef-recipe,aegir,Drupal 6,Chef Infra,Chef Recipe,Aegir,我已经写了一个安装Aegir的方法。我想用aegir recipe在aws上引导一个新实例,安装进行得很顺利,但由于抛出“Drupal installation not found”错误而未能执行“drush hostmaster install” 当我手动进入机器并使用aegir用户运行chef客户端时,它会顺利安装 ssh to ec2 with ubuntu user sudo su - aegir sudo chef-client 使用ubuntu用户ssh到ec2 sudo su-ae

我已经写了一个安装Aegir的方法。我想用aegir recipe在aws上引导一个新实例,安装进行得很顺利,但由于抛出“Drupal installation not found”错误而未能执行“drush hostmaster install”

当我手动进入机器并使用aegir用户运行chef客户端时,它会顺利安装

ssh to ec2 with ubuntu user sudo su - aegir sudo chef-client 使用ubuntu用户ssh到ec2 sudo su-aegir sudo厨师长客户 但当我用ubuntu用户引导新实例时,安装失败了。我很感激任何将用户切换到chef客户端的想法

execute "apt-get-update" do command "sudo apt-get update" end %w{curl apache2 php5 libapache2-mod-php5 openssl php-pear php5-cli php5-common php5-curl php5-dev php5-gd php5-imagick php5-imap php5-intl php5-mcrypt php5-memcache php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-tidy php5-gd php5-xmlrpc php5-xsl apache2-utils postfix rsync sudo libcurl3 libcurl3-gnutls mysql-client mysql-common}.each do |x| package x do action :install end end user "aegir" do action :create supports :manage_home => true comment "aegir User" home "#{node[:aegir][:dir]}" shell "/bin/bash" password "VenEucAf1" end group "www-data" do action :modify members "aegir" append true end bash "install_mysql" do user "root" code /etc/sudoers.d/aegir chmod 440 /etc/sudoers.d/aegir EOH not_if { ::File.exists?("/etc/sudoers.d/aegir") } end bash "Install_drush" do user "root" cwd "/var/aegir" code '/var/aegir', 'USER' => 'aegir' }) cwd "#{node[:aegir][:dir]}" command true, :restart => true, :reload => true action :start end 执行“apt get update”do 命令“sudo apt get update” 结束 %w{curl apache2 php5 libapache2-mod-php5 openssl php pear php5 cli php5 common php5 curl php5 dev php5 gd php5 imagick php5 imap php5 intl php5 mcrypt php5 memcache php5 ming php5 mysql php5 ps php5 pspell php5重新编码php5 tidy php5 gd php5 xmlrpc php5 xsl apache2 utils后缀rsync sudo libcurl3 libcurl3 gnutls mysql client mysql common}| 包装x-do 操作:安装 结束 结束 用户“aegir”do 行动:创建 支持:manage_home=>true 注释“aegir用户” 主页“#{node[:aegir][:dir]}” shell“/bin/bash” 密码“VenEucAf1” 结束 组“www-data”do 操作:修改 成员“aegir” 附加真值 结束 bash“安装mysql”吗 用户“根” 代码/etc/sudoers.d/aegir chmod 440/etc/sudoers.d/aegir EOH 如果{::File.exists?(“/etc/sudoers.d/aegir”)} 结束 bash“Install_drush”do 用户“根” cwd“/var/aegir” 代码'/var/aegir','USER'=>'aegir'}) cwd“#{node[:aegir][:dir]}” 命令true,:restart=>true,:reload=>true 行动:开始 结束 更新了我的完整配方


错误:用户aegir不存在

听起来您可能需要设置
HOME
环境变量。您可以将其添加到执行资源:

execute 'drush hostmaster-install' do
  user 'aegir'
  environment 'HOME' => '/home/whatever'
end

我在相同的bash脚本中启用了它。bash“Install aegir”do user“aegir”group“www data”environment({'HOME'=>“{node[:aegir][:dir]}”)cwd“{node[:aegir][:dir]}”code然后检查其他环境变量。@SwaroopKundeti您的执行资源中是否也有
user“aegir”
属性?(如果是这样的话,该脚本应该与该用户一起启动,但是当您为手动测试执行
su-
时,您可能会加载一些我们猜不到的其他env变量。(要确认的一个好测试是
sudo su-u aegir sudo chef client
)@Tensibal,我成功地测试了“sudo su-aegir&&sudo chef client”.我已经用完整的配方更新了问题