如何在aws中使用shell脚本或boto更改systemctl文件

如何在aws中使用shell脚本或boto更改systemctl文件

我有以下 systemctl 文件。

[Unit]
Description=Airflow celery worker daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/bin/airflow worker
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

运行良好。但是,例如,当我启动机器时,我必须提供不同的名称

ExecStart=/bin/airflow worker -q "nameOfWorker"

但是,“nameOfWorker”是在我根据要求启动实例时决定的。我正在从已有 systemctl 文件的图像启动实例。

我可以使用 ssh 进入机器

ssh -i "opencpu-fin.pem" ubuntu@***-**-***-***-***.**-****-2.compute.amazonaws.com in shell script.

接下来我应该做什么?任何指导都会被应用

答案1

也许有办法。当您部署这些文件时,您也许可以使用sed.因此您的基本配置文件可能包含以下几行:

...
Type=simple
ExecStart=/bin/airflow worker -q "nameOfWorker"
Restart=on-failure
...

您可以有一个脚本将字符串“nameOfWorker”切换为预期名称:

sed 's/nameOfWorker/${intendedName}/' YourBaseSystemd.service > NewlyMade.service

因此,您可以在配置新机器时启动这行代码。

相关内容