Ræsingarskriftir
os.startup_scripts býr til takmarkað systemd eitt-skots verk fyrir myndina sem verður til. Hver færsla lýsir shell skipun, nauðsynlegum pakka, keyrslunotanda og röðunareiningu.
Ræsingarskriftir geta keyrt með root réttindum nema run_as segji annað. Þær þurfa sömu yfirferð og hvaða uppsetningarskrift sem er.
Staðlað form
{
"os": {
"startup_scripts": [
{
"name": "write-build-marker",
"description": "Create a local readiness marker after networking is available.",
"command": "set -Eeuo pipefail\ninstall -d -m 0755 /var/lib/example\nprintf '%s\\n' ready > /var/lib/example/build-ready",
"packages": [],
"run_as": "root",
"after": "network-online.target"
}
]
}
}Reitirnir eru description og command, ekki eldri reiturinn script. run_as og after nota líka snake_case. after er ein systemd einingarstrengur, ekki fylki.
Skema tekur að hámarki 32 færslur og takmarkaða skipunarstærð. Staðfesting hafnar tómum skipunum og NUL bætum, en gerir ekki shell innihald öruggt eða idempotent.
Hönnun fyrir endurtekningar og hlutbundna bilun
Ræsing getur verið rofin eftir að hluti af aukaverkunum hefur átt sér stað. Skrifaðu skriftir þannig að næsta keyrsla annað hvort klárar örugglega eða hættir með skýru, skoðanlegu ástandi.
Góð mynstur:
- skrifa í tímabundna skrá, staðfesta, síðan endurnefna atomískt;
- athuga hvort notendur, möppur eða stillingarfærslur séu þegar til;
- nota
installfyrir skýran eiganda og ham; - beita
set -Eeuo pipefailog meðhöndla væntanlegar ekki-núll niðurstöður markvisst; - nota takmarkaða net-tímamörk og endanlegan fjölda tilrauna; og
- skrifa tilbúnaðarmerki aðeins eftir að allir nauðsynlegir þrep hafa tekist.
Treystu ekki sleep sem tilbúnaðarathugun. Athugaðu raunverulega háðleika.
Ytri niðurhal
Forðastu curl ... | sh. Ef fyrsta ræsing verður að sækja gagnahlut:
- nota HTTPS með vottorðsathugun;
- festa væntanlegan gagnahlut eða upprunaútgáfu;
- staðfesta dulmálsgagnasöfnun eða samþykkta undirskrift áður en keyrt er;
- setja tengingar- og heildartímamörk;
- ef staðfesting mistekst, hættu keyrslu; og
- skrá ekki credentials eða undirritaðar URL-slóðir.
Fyrir raunverulega offline eða endurtekjanlega hegðun, settu yfirfarinn efni í myndina eða samþykktan pakka geymslu í stað niðurhals við fyrstu ræsingu.
Leyndarmál
Settu aldrei credentials í ódulritaðan texta í uppskrift, skipun, URL eða myndað merki. Recipe JSON og build logar eru geymd sem sönnunargögn og geta verið sýnileg rekstraraðilum. Notaðu samþykkta skráningu við dreifingu eða leynileg afhendingarferla og takmarkaðu útkomu credential við markmiðið.
Keyrsluauðkenni
Veldu óforréttaðan þjónustureikning. Ef root þarf, minnkaðu skipunina í minnsta forgangsþrep og settu skýran skráeign. Staðfestu að run_as nefni reikning sem var búinn til áður en einingin ræsist.
Staðfesting
Prófaðu niðurstöður frekar en aðeins exit status einingarinnar:
{
"type": "file_contains",
"description": "The startup unit wrote its readiness marker.",
"params": {
"path": "/var/lib/example/build-ready",
"content": "ready"
}
}Prófaðu líka annað boot, óaðgengilegan háðleika og endurheimt eftir rofna fyrstu keyrslu. Skoðaðu systemctl status og einingarannál við bilun.