Ubuntu

AWS 使用者數據執行後啟動服務

  • September 24, 2021

我正在建構一個基於 Ubuntu 16.04 AMI 的 AMI。

當我從我的 AMI 啟動一個實例時,我想傳入一個在 AMI 上啟動服務之前執行的使用者數據腳本。

看起來使用者數據是在cloud-final.service. 如果我systemctl status cloud-finaljournalctl -u cloud-final我看到我的使用者數據腳本的輸出。

我嘗試設置我的 .service 文件以在 cloud-final.service 之後啟動服務

[Unit]
Description=My Service
After=network.service
After=cloud-final.service

...

但是 cloud-final has RemainAfterExit=yes,這意味著它永遠不會完成,所以我的服務永遠不會啟動。

在執行使用者數據腳本,如何配置 AWS Ubuntu 以啟動我的服務?

採用

[Unit]
…
After=cloud-final.service
…
[Install]
WantedBy=cloud-init.target

我也遇到了這個。顯示了在達到目標之後和之前journalctl執行的使用者數據內容。multi-user``cloud-init

<timestamp> <ip_addr> systemd[1]: Reached target Multi-User System.
[snip]
<timestamp> <ip_addr> systemd[1]: Starting Execute cloud user/final scripts...
<timestamp> <ip_addr> user-data[1592]: my user data stuff
[snip]
<timestamp> <ip_addr> systemd[1]: Started Execute cloud user/final scripts.
[snip]
<timestamp> <ip_addr> systemd[1]: Reached target Cloud-init target.

所以我認為它是需要/想要的,cloud-init而不是通常的multi-user目標(這可能是 op 所擁有的),它就起作用了。

引用自:https://serverfault.com/questions/871328