如何使用 Cloudformation 在 AWS 上创建和保存脚本?尝试启动 kafka - zookeeper 节点
How to Create and save a script on AWS, using Cloudformation ? trying to launch kafka - zookeeper node
在我开始之前,我只是想让你知道我对整个云形成和编码的总体情况还很陌生
我一直在尝试编写一个云形成模板来启动一个具有单个 zookeeper 节点的实例并逐步进行。
所以我写了我的用户数据来下载 Kafka tar 并解压缩。
现在不再使用“bin/zookeeper-server-start.sh -daemon config/zookeeper.properties ”来 start 动物园管理员,
我想创建一个名为 zookeeper 的文件,然后在上面写一个 shell 脚本并使其可执行
我如何在 cloudformation 中执行此操作??
DAEMON_PATH=/home/ubuntu/kafka/bin
DAEMON_NAME=zookeeper
PATH=$PATH:$DAEMON_PATH
# See how we were called.
case "" in
start)
# Start daemon.
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is already running";
else
echo "Starting $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-start.sh -daemon /home/ubuntu/kafka/config/zookeeper.properties
fi
;;
stop)
echo "Shutting down $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-stop.sh
;;
restart)
[=10=] stop
sleep 2
[=10=] start
;;
status)
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is Running as PID: $pid"
else
echo "Zookeeper is not Running"
fi
;;
*)
echo "Usage: [=10=] {start|stop|restart|status}"
exit 1
esac
exit 0
这是我正在尝试编写的脚本,因此我可以 start 并停止使用 zookeeper
sudo 服务动物园管理员 start/stop
我手动使用 CLI 执行了以下操作,然后将脚本粘贴到 zookeeper 中并保存。
sudo nano /etc/init.d/zookeeper
sudo chmod +x /etc/init.d/zookeeper
sudo chown root:root /etc/init.d/zookeeper
谢谢,希望大家理解我的问题。
有几种方法可以做到这一点:
- 将文件存储在 S3 中,然后在
UserData
. 中使用 AWS SDK 下载它
- 直接在
UserData
中创建文件
- 使用AWS::CloudFormation::Init定义文件。
- 使用脚本创建 pre-baked AMI 并使用 AMI 启动实例
下面是 UserData
的示例,它使用 bash
中的 HEREDOC 创建这样的文件。
UserData:
Fn::Base64: |
#!/bin/bash -ex
cat >/etc/init.d/zookeeper << 'EOL'
DAEMON_PATH=/home/ubuntu/kafka/bin
DAEMON_NAME=zookeeper
PATH=$PATH:$DAEMON_PATH
# See how we were called.
case "" in
start)
# Start daemon.
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is already running";
else
echo "Starting $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-start.sh -daemon /home/ubuntu/kafka/config/zookeeper.properties
fi
;;
stop)
echo "Shutting down $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-stop.sh
;;
restart)
[=10=] stop
sleep 2
[=10=] start
;;
status)
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is Running as PID: $pid"
else
echo "Zookeeper is not Running"
fi
;;
*)
echo "Usage: [=10=] {start|stop|restart|status}"
exit 1
esac
exit 0
EOL
chmod +x /etc/init.d/zookeeper
chown root:root /etc/init.d/zookeeper
请注意,我没有 运行 这个代码,因此我无法验证它是否可以开箱即用。
在我开始之前,我只是想让你知道我对整个云形成和编码的总体情况还很陌生
我一直在尝试编写一个云形成模板来启动一个具有单个 zookeeper 节点的实例并逐步进行。 所以我写了我的用户数据来下载 Kafka tar 并解压缩。
现在不再使用“bin/zookeeper-server-start.sh -daemon config/zookeeper.properties ”来 start 动物园管理员, 我想创建一个名为 zookeeper 的文件,然后在上面写一个 shell 脚本并使其可执行 我如何在 cloudformation 中执行此操作??
DAEMON_PATH=/home/ubuntu/kafka/bin
DAEMON_NAME=zookeeper
PATH=$PATH:$DAEMON_PATH
# See how we were called.
case "" in
start)
# Start daemon.
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is already running";
else
echo "Starting $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-start.sh -daemon /home/ubuntu/kafka/config/zookeeper.properties
fi
;;
stop)
echo "Shutting down $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-stop.sh
;;
restart)
[=10=] stop
sleep 2
[=10=] start
;;
status)
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is Running as PID: $pid"
else
echo "Zookeeper is not Running"
fi
;;
*)
echo "Usage: [=10=] {start|stop|restart|status}"
exit 1
esac
exit 0
这是我正在尝试编写的脚本,因此我可以 start 并停止使用 zookeeper sudo 服务动物园管理员 start/stop
我手动使用 CLI 执行了以下操作,然后将脚本粘贴到 zookeeper 中并保存。
sudo nano /etc/init.d/zookeeper
sudo chmod +x /etc/init.d/zookeeper
sudo chown root:root /etc/init.d/zookeeper
谢谢,希望大家理解我的问题。
有几种方法可以做到这一点:
- 将文件存储在 S3 中,然后在
UserData
. 中使用 AWS SDK 下载它
- 直接在
UserData
中创建文件 - 使用AWS::CloudFormation::Init定义文件。
- 使用脚本创建 pre-baked AMI 并使用 AMI 启动实例
下面是 UserData
的示例,它使用 bash
中的 HEREDOC 创建这样的文件。
UserData:
Fn::Base64: |
#!/bin/bash -ex
cat >/etc/init.d/zookeeper << 'EOL'
DAEMON_PATH=/home/ubuntu/kafka/bin
DAEMON_NAME=zookeeper
PATH=$PATH:$DAEMON_PATH
# See how we were called.
case "" in
start)
# Start daemon.
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is already running";
else
echo "Starting $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-start.sh -daemon /home/ubuntu/kafka/config/zookeeper.properties
fi
;;
stop)
echo "Shutting down $DAEMON_NAME";
$DAEMON_PATH/zookeeper-server-stop.sh
;;
restart)
[=10=] stop
sleep 2
[=10=] start
;;
status)
pid=`ps ax | grep -i 'org.apache.zookeeper' | grep -v grep | awk '{print }'`
if [ -n "$pid" ]
then
echo "Zookeeper is Running as PID: $pid"
else
echo "Zookeeper is not Running"
fi
;;
*)
echo "Usage: [=10=] {start|stop|restart|status}"
exit 1
esac
exit 0
EOL
chmod +x /etc/init.d/zookeeper
chown root:root /etc/init.d/zookeeper
请注意,我没有 运行 这个代码,因此我无法验证它是否可以开箱即用。