1

我刚刚使用一堆 Rightscripts 创建了我的第一个 Rightscale ServerTemplate 和 Deployment。我创建的脚本之一是将虚拟主机添加到 apache。

#!/bin/bash -e

if [ $RS_DISTRO = ubuntu ]; then 
  export apache=apache2
  export apache_extra_conf_dir=/etc/apache2/conf.d
elif [ $RS_DISTRO = centos ]; then
  export apache=httpd
  export apache_extra_conf_dir=/etc/httpd/conf.d
fi
server_name=$SERVER_NAME

echo "Adding virtual hosts to ${apache_extra_conf_dir}/vh-${server_name}.conf"
cat > $apache_extra_conf_dir/vh-${server_name}.conf <<EOF 

NameVirtualHost $SITE_IP:$SITE_PORT

<VirtualHost $SITE_IP:$SITE_PORT>
    ServerName $SERVER_NAME
    ServerAlias $SITE_DOMAIN *.$SITE_DOMAIN
    UseCanonicalName Off

    ServerAdmin $ADMIN_EMAIL
    DocumentRoot $APACHE_WWW_DIR
    <Directory "$APACHE_WWW_DIR">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
EOF

service $apache restart
exit 0

我的问题是我可以在 ServerTemplate 上使用相同的 Rightscript 两次,但为每个设置不同的输入(IP、端口、www dir 和 Servername)吗?例如。

服务器模板:

Execute Rightscript vhost: *:80 /www-x/ x.com 
Execute Rightscript vhost: *:80 /www-y/ y.com

或者我是否必须为此服务器部署创建一个特殊的 Rightscript,该服务器部署在同一脚本中定义了两个虚拟主机?

Execute Rightscript vhost: *:80 /www-x/ x.com | *:80 /www-y/ y.com
4

1 回答 1

2

仅当将该脚本放在 ServerTemplate 的“操作脚本”部分中时,您才能使用具有不同输入的相同 RightScript。然后,如果您将输入留空,您可以使用不同的输入多次执行该操作脚本。

如果您希望在“引导脚本”部分中实现该行为,则必须创建一个处理两组输入(用于两个虚拟主机)的单个脚本,或者创建一个具有不同名称和不同输入名称的 RightScript 克隆。

您可以考虑查看基于 Chef 的工具。您可以创建一个 Chef 配方,它将一组虚拟主机名称作为输入,然后执行设置虚拟主机的“apache_site”资源。您可以在下面链接的 RightScale Chef 代码中看到一个示例。

https://github.com/rightscale/cookbooks_public/blob/master/cookbooks/web_apache/recipes/setup_frontend_http_vhost.rb

于 2012-03-31T18:40:36.383 回答