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
更新了我的完整配方。
错误:用户埃吉尔不存在
我曾在相同的bash脚本中启用installs aegir。 bash的 “安装埃吉尔” 做 \t用户 “埃吉尔” \t基 “WWW的数据” \t环境({ 'HOME'=> “#{节点[:埃吉尔] [:DIR]}”}) CWD“# {node [:aegir] [:dir]}“ \t代码<< - EOH –
然后检查其他环境变量。 – coderanger
@SwaroopKundeti你的执行资源中是否也有'user'aegir“'属性? (如果是这样的话,脚本应该和这个用户一起启动,但是当你为你的手动测试做一个'su -'时,你可能会加载其他一些我们无法猜到的env变量(一个很好的测试就是' sudo su -u aegir sudo chef-client') – Tensibai