Skip to Content
Building OsRæsingarskriftir

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 install fyrir skýran eiganda og ham;
  • beita set -Eeuo pipefail og 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:

  1. nota HTTPS með vottorðsathugun;
  2. festa væntanlegan gagnahlut eða upprunaútgáfu;
  3. staðfesta dulmálsgagnasöfnun eða samþykkta undirskrift áður en keyrt er;
  4. setja tengingar- og heildartímamörk;
  5. ef staðfesting mistekst, hættu keyrslu; og
  6. 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.