Kirjoitat skriptin, joka suorittaa scutil --nc start yhteyden nimellä, se toimii Macillasi ja epäonnistuu jokaisella äskettäin asennetulla toimiston koneella. Skripti ei ole rikki. Siltä pyydetään jotain, mitä se ei koskaan pystynyt tekemään: olemassa olevan yhteyden käynnistäminen ei ole sama toimenpide kuin uuden luominen.

Valmistelu ja istunnon hallinta ovat kaksi työtä, joilla on kaksi omistajaa, ja työnkulku, joka olettaa muuta, läpäisee jokaisen testin koneella, jolla se kirjoitettiin.

Minkä kanssa käynnistyskomento todella puhuu

Istunnon hallintakomento osoittaa kokoonpanon, joka on jo olemassa ja jo hyväksytty. Se pyytää järjestelmää nostamaan kyseisen nimetyn yhteyden käyttäen aiemmin tallennettuja palvelinasetuksia, identiteettiviittauksia ja käytäntöä. Jos niitä ei koskaan asennettu, ei ole mitään käynnistettävää.

Siksi vika ilmenee uudella laitteistolla eikä ylläpitäjän kannettavalla. Kannettava valmisteltiin kuukausia sitten henkilön toimesta, joka on sittemmin unohtanut tehneensä sen. Ajattele käynnistyskomentoa ovikellona, jonka joku johdotti viime neljänneksellä. Sen painaminen ei ole sama kuin johdotuksen asentaminen.

VPN-kokoonpanon kolme omistajaa

Organisaation hallitsema profiili tulee laitehallinnasta. Profiili kantaa palvelimen osoitteet, todennuksen järjestelyn ja käytännön, jota organisaatio vaatii, ja VPN-ylläpitäjä on henkilö, joka ne toimittaa. Skriptin ei pitäisi rakentaa näitä asetuksia uudelleen luettelosta löytämänsä näyttönimen perusteella.

Natiivi henkilökohtainen VPN-kokoonpano luodaan Applen Network Extension API:n kautta, joka kattaa sisäänrakennetut IPsec- ja IKEv2-protokollat. Se on sovellusrajapinta, jossa on tallennusvaihe ja käyttäjän hyväksyntä, ei komentotulkin komento, joka hiljaa luo minkä tahansa tunnelityypin, jota toimittaja toimittaa.

Kolmannen osapuolen asiakasohjelma on kolmas tapaus, jolla on oma tuontimuotonsa, oma hallintatyökalunsa ja usein oma etuoikeutettu avustajansa. Sen istunnon omistaa kyseisen toimittajan prosessi. Samannimisen järjestelmäpalvelun löytäminen ei ole todiste siitä, että järjestelmäkomento hallitsee tunnelia, ja sen olettaminen tuottaa skriptejä, jotka näyttävät toimivan, kunnes toimittaja päivittää asiakasohjelman.

Natiivissa valmistelussa on tallennus ja hyväksyntä

Applen malli on lataa, muuta, tallenna. Sovellus lataa olemassa olevat asetukset ennen ensimmäistä tallennustaan käynnistyksen jälkeen, muuttaa kokoonpanon ja tallentaa sen sitten. Tallennus ilmoittaa virheestä, kun se ei voi säilyä, ja tuloksen huomiotta jättäminen muuttaa valmisteluvirheen yhteysvirheeksi kolme askelta myöhemmin.

Ensimmäinen tallennus edellyttää myös, että käyttäjä hyväksyy sovelluksen. Se on tarkoituksellinen turvaraja, ja se tarkoittaa, että ensimmäinen ajo uudella Macilla on vuorovaikutteinen, vaikka jokainen myöhempi yhteys ja katkaisu voitaisiin automatisoida. Suunnittele ensimmäinen ajo ihmistehtäväksi, jossa ihminen on paikalla. Automatisoi toinen ajo ja siitä eteenpäin, ja kerro se runbookissa, jotta kukaan ei lupaa mahdotonta. Käyttöönottosuunnitelma, joka lupaa täysin valvomattoman ensimmäisen ajon, lupaa jotain, mitä alusta ei tarjoa.

Apple suosittelee myös palvelimen yhteensopivuuden vahvistamista kokoonpanoprofiililla ennen API:in luottamista. Tämän tarkistuksen tekeminen ensin erottaa «palvelin ei hyväksy tätä asiakasohjelmaa» tilanteesta «asiakasohjelma ei koskaan tallentanut asetuksia», jotka ovat eri tiketit eri tiimeille.

Mitä toistettava käynnistyskomento voi olettaa

Valmistelun jälkeen skripti voi turvallisesti kohdistaa olemassa olevaan yhteyteen omistajansa rajapinnan kautta. Anna sille yhteyden vakaa identiteetti sekä haluamasi toiminto, eikä mitään muuta. Sen ei pitäisi lukea arvattua asetusten polkua eikä olettaa, että valikossa näkyvä nimi on järjestelmänlaajuisesti ainutkertainen.

Natiiveille yhteyksille nimetty istuntopyyntö kuten scutil --nc start on hallintatoimenpide. Se ei asenna palvelinasetuksia, tuo tunnuksia eikä suorita ensimmäisen tallennuksen valtuutusta. Kohtele sitä ketjun viimeisenä askeleena, älä koskaan koko ketjuna.

Pidä salaisuudet poissa komentoriviltä ja tavallisesta diagnostiikkatulosteesta. Minkä tahansa identiteettimekanismin käyttöönotto valitsi, juuri siihen käynnistyskomennon pitäisi luottaa, ja komentotulkin historiaan liitetty salasana on löydös missä tahansa katselmoinnissa.

Kaksi hyväksyntätarkistusta

Ensimmäinen tarkistus on valmistelu: ota äskettäin asennettu Mac ja todista, että kokoonpano on olemassa, oikean hallitsijan omistuksessa ja täysin hyväksytty. Tee tämä ennen yhteyden testaamista, koska yhteystesti valmistelemattomalla koneella ei todista skriptistä mitään.

Toinen tarkistus on istunto: yhdistä, saavuta valtuutettu resurssi ja katkaise puhtaasti. Jokaisella virheellä on nyt omistaja, ja se on kahden työn erottamisen käytännön hyöty. Puuttuva profiili on toimitusongelma, tallennusvirhe on hyväksyntäongelma, hylätty kirjautuminen on todennusongelma ja aikakatkaisu onnistuneen käynnistyksen jälkeen on istuntokerros. Mikään niistä ei ole «skripti on rikki».

Aiheeseen liittyvät artikkelit