2015-01-15 65 views
0

我写了一个配方来安装Aegir。我想用aegir recipe在aws上引导一个新的实例,安装进行顺利,但未能执行“drush hostmaster-install”,因为它会抛出“找不到Drupal安装”的错误。在启动期间切换厨师 - 客户端用户

它安装顺利当我手动进入机器,并有一个与aegir用户运行的厨师客户端。

 
ssh to ec2 with ubuntu user 
sudo su - aegir 
sudo chef-client 

但是,当我用ubuntu用户启动新实例时,安装失败。我很欣赏任何关于切换用户运行厨师客户端的想法。

 
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 

更新了我的完整配方。

错误:用户埃吉尔不存在

回答

0

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

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

我曾在相同的bash脚本中启用installs aegir。 bash的 “安装埃吉尔” 做 \t用户 “埃吉尔” \t基 “WWW的数据” \t环境({ 'HOME'=> “#{节点[:埃吉尔] [:DIR]}”}) CWD“# {node [:aegir] [:dir]}“ \t代码<< - EOH –

+0

然后检查其他环境变量。 – coderanger

+0

@SwaroopKundeti你的执行资源中是否也有'user'aegir“'属性? (如果是这样的话,脚本应该和这个用户一起启动,但是当你为你的手动测试做一个'su -'时,你可能会加载其他一些我们无法猜到的env变量(一个很好的测试就是' sudo su -u aegir sudo chef-client') – Tensibai

相关问题