Náhled a schválení nasazení
Seznámili jste se s úlohami pracovního postupu a s tím, jak můžete přidat úlohu pracovního postupu k ověření kódu Bicep. Dalším krokem při budování spolehlivosti nasazení je přidání další úlohy, abyste přesně zkontrolovali, co se vaše nasazení změní.
V této lekci se dozvíte o použití příkazu what-if v pracovním postupu. Dozvíte se také o přidávání pravidel ochrany prostředí, abyste měli možnost ručně ověřit výstup příkazu před spuštěním nasazení.
Operace citlivostní operace
Soubor Bicep popisuje stav, ve který má být vaše prostředí Azure na konci nasazení. Když odešlete nasazení, Azure Resource Manager změní prostředí Azure tak, aby odpovídalo stavu popsanému v souboru Bicep.
Nasazení může mít za následek nasazení nových prostředků do vašeho prostředí nebo aktualizaci existujících prostředků. Když spustíte nasazení v úplném režimu, může dokonce vést k odstranění existujících prostředků.
Kdykoli se prostředky vytvářejí, aktualizují nebo odstraní, hrozí riziko, že se věci můžou změnit způsobem, který jste nečekali. Doporučujeme přidat další krok, abyste ověřili, co přesně se vytvoří, aktualizuje a odstraní. Toto ověření zvyšuje hodnotu procesu automatizace. Při nasazování do produkčního prostředí je důležité potvrdit všechny změny, které se ve vašem prostředí objeví.
Resource Manager poskytuje operaci citlivostní analýza, kterou můžete spustit v souboru Bicep v rámci úlohy pracovního postupu:
Akce arm-deploy
podporuje aktivaci operace citlivostní analýzy pomocí additionalArguments
vlastnosti:
jobs:
preview:
runs-on: ubuntu-latest
needs: [lint, validate]
steps:
- uses: azure/login@v1
name: Sign in to Azure
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
name: Run what-if
with:
failOnStdErr: false
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: deploy/main.bicep
parameters: >
environmentType=${{ env.ENVIRONMENT_TYPE }}
additionalArguments: --what-if
Zvýrazněný kód je ekvivalentem spuštění nasazení pomocí Azure CLI s zahrnutým argumentem --what-if
.
Operace citlivostní operace neprovádí žádné změny vašeho prostředí. Místo toho popisuje prostředky, které se vytvoří, vlastnosti prostředku, které budou aktualizovány, a prostředky, které budou odstraněny.
Co když někdy ukazuje, že se prostředek změní, když se skutečně žádná změna nestane. Tento typ výstupu se nazývá šum. Pracujeme na omezení těchto problémů, ale potřebujeme vaši pomoc. Nahlaste problémy citlivostní analýzy.
Jakmile se zobrazí výstup operace citlivostní operace, můžete určit, jestli se má pokračovat v nasazení. Tento krok obvykle zahrnuje lidskou kontrolu výstupu příkazu what-if a následné rozhodnutí o tom, jestli jsou zjištěné změny přiměřené. Pokud se kontrolor rozhodne, že změny jsou přiměřené, může ručně schválit spuštění pracovního postupu.
Další informace o příkazu what-if najdete v modulu Microsoft Learn ve verzi Preview změn nasazení Azure pomocí citlivostní citlivosti.
Prostředí
V GitHub Actions představuje prostředí místo, kde je vaše řešení nasazené. Prostředí poskytují funkce, které vám pomůžou při práci se složitými nasazeními. V budoucím modulu se dozvíte více o prostředích a jejich funkcích. Prozatím se zaměříme na jejich schopnost přidávat do pracovního postupu požadované revidujícím.
Prostředí vytvoříte pomocí webového rozhraní GitHubu. Prostředí můžete vytvářet při práci s veřejným úložištěm GitHub nebo při použití účtu GitHub Enterprise.
Po vytvoření prostředí na něj můžete odkazovat v libovolném pracovním postupu:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 'Lint Bicep template'
run: az bicep build --file deploy/main.bicep
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
deploymentName: ${{ github.run_number }}
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
deploymentMode: Validate
deploy:
runs-on: ubuntu-latest
environment: MyAzureEnvironment
needs: [lint, validate]
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
deploymentName: ${{ github.run_number }}
resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
template: ./deploy/main.bicep
parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Poznámka:
Když identita pracovního postupu nasazení komunikuje s Resource Managerem v rámci prostředí, potřebuje federované přihlašovací údaje nakonfigurované s názvem prostředí. Další informace o prostředích se dozvíte v budoucích modulech. Při spuštění cvičení pro tento modul vytvoříte potřebné federované přihlašovací údaje.
Pravidla ochrany prostředí
Po vytvoření prostředí můžete definovat pravidla ochrany. Pravidla ochrany se používají k ověření podmínek, které musí být splněny před tím, než může krok použít prostředí. Požadované pravidlo ochrany revidujících je typ kontroly, která vyžaduje, aby člověk poskytl ruční schválení.
Pravidla ochrany jsou definována v prostředí, nikoli v pracovním postupu. Autoři souboru YAML pracovního postupu nemůžou tato pravidla ochrany odebrat ani přidat. Prostředí a pravidla ochrany můžou spravovat jenom správci úložiště nebo vlastník účtu.
Pravidla ochrany prostředí pomáhají zajistit, aby se do procesu nasazení zapojili správní lidé.
Jak fungují pravidla ochrany prostředí?
Když prostředí přidružíte ke kroku, vyhodnotí se pravidla ochrany prostředí těsně před zahájením kroku.
Požadovaný kontrolor je jedním typem pravidla ochrany. Při konfiguraci požadovaného pravidla ochrany revidujících přiřadíte jednoho nebo více uživatelů GitHubu, kteří potřebují schválit pokračování pracovního postupu.
Prostředí také poskytují další typy pravidel ochrany. Můžete například omezit větve Gitu, které je možné nasadit do konkrétních prostředí. V tomto modulu probereme pouze pravidlo požadovaných kontrolorů, ale v souhrnu poskytujeme odkazy na další informace o dalších pravidlech ochrany.
Po zahájení pracovního postupu a dosažení kroku, který vyžaduje revidujícím, se pracovní postup pozastaví. Všem uživatelům, kteří jsou určeni jako revidujícím, se odešle zpráva v GitHubu a e-mailem.
Kontroloři můžou kontrolovat protokoly pracovního postupu, například změny, které operace citlivostní analýzy detekuje. Na základě těchto informací pak změnu schválí nebo odmítne. Pokud změnu schválí, pracovní postup se obnoví. Pokud je odmítne nebo pokud neodpoví během časového limitu, úloha selže.
Význam osvědčených postupů
Funkce prostředí na GitHubu umožňuje propojit nasazení s prostředím a potom nasazení dědí pravidla ochrany definovaná správcem prostředí. Není ale potřeba nic vyžadovat, aby nové pracovní postupy používaly prostředí.
Je důležité, aby organizace vytvořila osvědčené postupy pro kontrolu definic pracovních postupů. Nakonfigurujte například úložiště tak, aby vyžadovalo kontroly žádostí o přijetí změn u všech změn v hlavní větvi pomocí pravidel ochrany větví. Další informace o tomto konceptu se dozvíte v budoucím modulu.
Do prostředí můžete také přidat tajné kódy . Tímto způsobem lze tajný kód použít pouze v úloze, která také používá prostředí. Kombinací pravidel ochrany prostředí a tajných kódů můžete zajistit, aby se zachovalo zabezpečení pracovního postupu.