Cle*_*ent 2 google-compute-engine google-cloud-platform
启动脚本的行为不符合我的期望。
我.sh在存储桶中有一个文件,并且包含一个startup-script-url带有值的meta标签gs://bucket-name/start-script.sh
[[0;32m OK [0m] Started Google Compute Engine Accounts Daemon.
Starting Google Compute Engine Startup Scripts...
[[0;32m OK [0m] Started Google Compute Engine Shutdown Scripts.
[[0;32m OK [0m] Started Google Compute Engine Startup Scripts.
[[0;32m OK [0m] Started Docker Application Container Engine.
[[0;32m OK [0m] Started Wait for Google Container Registry (GCR) to be accessible.
[[0;32m OK [0m] Reached target Google Container Registry (GCR) is Online.
[[0;32m OK [0m] Started Containers on GCE Setup.
[ 8.001248] konlet-startup[1018]: 2018/03/08 20:23:56 Starting Konlet container startup agent
Run Code Online (Sandbox Code Playgroud)
以下脚本未按预期执行。我尝试使用startup-script元数据标记并使用简单的类似方法,echo "hello"但这也不起作用。我启用了完整的Cloud API访问范围。
如果我复制以下文件的内容并将其粘贴到ssh终端中,则可以正常工作。
真的可以使用一些帮助= D
开始脚本
#! /bin/bash
image_name=gcr.io/some-image:version-2
docker_images=$(docker inspect --type=image $image_name)
array_count=${#docker_images[0]}
# Check if docker image is available
while ((array_count = 2));
do
docker_images=$(docker inspect --type=image ${image_name})
array_count=${#docker_images[0]}
if (($array_count > 2)); then
break
fi
done
################################
#
# Docker image now injected
# by google compute engine
#
################################
echo "docker image ${image_name} available"
container_ids=($(docker container ls | grep ${image_name} | awk '{ print $1}'))
for (( i=0; i < ${#container_ids[@]}; i++ ));
do
# run command for each container
container_id=${container_ids[i]}
echo "running commands for container: ${container_ids[i]}"
# start cloud sql proxy
docker container run -d -p $HOST_PORT:$APPLICATION_PORT \
${container_ids[i]} \
./cloud_sql_proxy \
-instances=$PG_INSTANCE_CONNECTION_NAME=tcp:$PG_PORT \
-credential_file=$PG_CREDENTIAL_FILE_LOCATION
# HTTP - Start unicorn webserver
docker exec -d \
${container_ids[i]} \
bundle exec unicorn -c config/unicorn.rb
done
Run Code Online (Sandbox Code Playgroud)
startup-script使用“将容器映像部署到此 VM 实例”选项时始终运行。
您可以使用cmdsudo journalctl -u google-startup-scripts.service -f来检查脚本运行结果。
您可以使用cmdsudo google_metadata_script_runner -d --script-type startup来调试脚本。
2021.11.09 更新:sudo google_metadata_script_runner startup.
文档: https: //cloud.google.com/compute/docs/instances/startup-scripts
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |