Criar um documento de componente YAML para componentes personalizados no Image Builder
Para compilar um componente, você deve fornecer um documento de componente de aplicação YAML ou JSON. O documento contém o código executado durante as fases e etapas que você define para tornar sua imagem personalizada.
Alguns exemplos nesta seção criam um componente de compilação que chama o módulo de ação UpdateOS
na aplicação de gerenciamento de componentes AWSTOE. O módulo atualiza o sistema operacional. Para obter mais informações sobre o módulo de ação UpdateOS
, consulte UpdateOS.
O exemplo do sistema operacional macOS usa o módulo de ação ExecuteBash
para instalar e verificar o utilitário wget
. O módulo de ação UpdateOS
não é compatível com o macOS. Para obter mais informações sobre o módulo de ação ExecuteBash
, consulte ExecuteBash. Para obter mais informações sobre as fases, as etapas e a sintaxe dos documentos de componente da aplicação AWSTOE, consulte Use documents in AWSTOE.
O Image Builder determina o tipo de componente com base nas fases definidas no documento do componente, conforme a seguir:
-
Compilação: esse é o tipo de componente padrão. Qualquer coisa que não seja classificada como componente de teste é um componente de compilação. Esse tipo de componente é executado durante o estágio de compilação da imagem. Se esse componente de compilação tiver uma fase de test
definida, essa fase será executada durante o estágio de teste.
-
Teste: para se qualificar como um componente de teste, o documento do componente deve incluir somente uma fase, denominada test
. Para testes relacionados às configurações de componentes de compilação, recomendamos que você não use um componente de teste independente. Em vez disso, use a fase test
no componente de compilação associado.
Para obter mais informações sobre como o Image Builder usa estágios e fases para gerenciar o fluxo de trabalho de componentes em seu processo de compilação, consulte Usar componentes para personalizar imagens do Image Builder.
Para criar um componente do aplicativo YAML para um aplicativo de amostra, siga as etapas que correspondem à sua plataforma de sistema operacional de imagem.
- Linux
-
Criar um arquivo de componente YAML
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado update-linux-os.yaml
, com o seguinte conteúdo:
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-linux-os
description: Updates Linux with the latest security updates.
schemaVersion: 1
phases:
- name: build
steps:
- name: UpdateOS
action: UpdateOS
# Document End
Use uma ferramenta como esse validador YAML on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.
- Windows
-
Criar um arquivo de componente YAML
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado update-windows-os.yaml
, com o seguinte conteúdo:
# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: update-windows-os
description: Updates Windows with the latest security updates.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: UpdateOS
action: UpdateOS
# Document End
Use uma ferramenta como esse validador YAML on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.
- macOS
-
Criar um arquivo de componente YAML
Use uma ferramenta de edição de arquivos para criar o documento do componente. Os exemplos de documentação usam um arquivo chamado wget-macos.yaml
, com o seguinte conteúdo:
name: WgetInstallDocument
description: This is wget installation document.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: WgetBuildStep
action: ExecuteBash
inputs:
commands:
- |
PATH=/usr/local/bin:$PATH
sudo -u ec2-user brew install wget
- name: validate
steps:
- name: WgetValidateStep
action: ExecuteBash
inputs:
commands:
- |
function error_exit {
echo $1
echo "{\"failureMessage\":\"$2\"}"
exit 1
}
type wget
if [ $? -ne 0 ]; then
error_exit "$stderr" "Wget installation failed!"
fi
- name: test
steps:
- name: WgetTestStep
action: ExecuteBash
inputs:
commands:
- wget -h
Use uma ferramenta como esse validador YAML on-line ou uma extensão lint YAML em seu ambiente de código para verificar se seu YAML está bem formado.