cloud-config를 사용하여 DCOS 클러스터를 설치하고 구성합니다.
일반적으로 agentinstall.service
서비스를 완료하는 데 5분이 소요됩니다.
systemd에게 실행을 지시하는 것이 가능합니까?agentconfigure.service
그 후에야 agentinstall.service
충분히?
#cloudconfig 핵심: 단위: - 이름: "agentinstall.service" 명령: "시작" 내용: | [단위] 설명=프록시 설정 이후 = network.target [제공하다] 유형=단순 사용자=루트 작업 디렉토리=/tmp ExecStartPre=/bin/curl -o /tmp/dcos_install.sh http://bootstapnode-0.dev.myztro.internal:9090/dcos_install.sh ExecStartPre=/bin/chmod 755 dcos_install.sh ExecStart=/bin/bash dcos_install.sh 슬레이브 [설치하다] WantedBy=다중 사용자.대상 - 이름: "agentconfigure.service" 명령: "시작" 내용: | [단위] 설명 = 프록시 구성 이후=agentinstall.service [제공하다] 유형=단순 사용자=루트 작업 디렉토리=/opt/mesosphere/etc/ ExecStartPre=/bin/echo "MESOS_ATTRIBUTES=cluster:uploader" >> /opt/mesosphere/etc/mesos-slave-common ExecStartPre=/bin/rm -f /var/lib/mesos/slave/meta/slaves/latest ExecStart=/usr/bin/systemctl dcos-mesos-slave 다시 시작 [설치하다] WantedBy=다중 사용자.대상
감사해요.
답변1
systemd를 사용하여 이 작업을 수행하는 방법은 장치를 시작하고 실행하는 데에만 관심이 있다고 생각했기 때문입니다. 예를 들어, After=
지정된 장치가 시작된 후에만 한 장치가 강제로 시작되도록 하거나 두 장치가 병렬로 시작되도록 할 수 있습니다.
Wants=
원하는 장치가 아닌 지정된 장치가 병렬로 시작되도록 합니다(필요한 장치가 아직 시작/활성화되지 않은 경우).
Requires=
After=
on과 함께 사용하면 agentconfigure.service
활성화된("busy") 후에 시작됩니다 agentconfigure.service
. 이제 최대 5분 동안 대기 루프를 가질 수 있으며 agentinstall.service
실제 작업을 계속하기 전에 agentconfigure.service
주기적으로 완료 여부를 확인할 수 있습니다 . agentinstall.service
내가 보는 유일한 옵션.
편집: 제가 생각하는 또 다른 옵션은 설치가 성공하면 agentinstall.service
실행 agentconfigure.service
한 다음 종료하는 것입니다.
답변2
/bin/bash dcos_install.sh slave
명령 후에 실행 하시겠습니까 ?
해당 명령을 사용하여 서비스를 Type=oneshot
.
echo
@JdeBP가 귀하의 명령이 쉘 리디렉션을 사용하려고 한다는 점을 지적하라고 요청했습니다.이건 작동하지 않을 거야.
답변3
systemd 249, 2021년 7월 출시, 이를 정확하게 수행하는 새로운 종속성 유형에 대한 지원이 추가되었습니다. 이를 OnSuccess
통해 단위가 완료될 때 실행되어야 하는 단위를 지정할 수 있습니다.
따라서 호스트의 시스템이 249 이상인 경우 다음이 agentinstall.service
필요합니다.
[Unit]
Description=agent_setup
After=network.target
OnSuccess=agentconfigure.service
이제 이 작업을 수행할 수 systemctl start agentinstall.service
있으며 작업이 완료될 때마다 agentconfigure.service
자동으로 시작됩니다.
OnFailure=
완료를 위해 - 동일한 작업을 수행하지만 장치가 실패할 때만 트리거되는 종속성 도 있습니다 . 2013년에 출시된 systemd v201에 도입되었습니다.