Arquivo de Configuração de Implantação
O arquivo de configuração de implantação define os artefatos a serem baixados na instância e o local onde os artefatos devem ser copiados. O arquivo de configuração também especifica a sequência de comandos para implantação.
O arquivo de configuração é escrito em YAML. O arquivo pode ser definido em linha ou fornecido como referência de artefato genérico durante a implantação do grupo de instâncias.
Os administradores do DevOps podem usar o arquivo de configuração de implantação para as seguintes ações:
- Especificar pacotes de aplicativos e seus locais de armazenamento na instância de computação de destino.
- Especificar as etapas necessárias para implantar um aplicativo.
- Especificar variáveis de ambiente incorporadas ou definidas pelo usuário necessárias para implantação.
Estrutura do Arquivo de Configuração de Implantação
Veja a seguir a estrutura básica do arquivo de configuração de implantação:
{
version:
component:
env:
variables:
timeoutInSeconds:
files:
- source:
destination:
steps:
- stepType: Command
name:
command:
runAs:
timeoutInSeconds:
- stepType: Command
}
Veja a seguir os parâmetros de configuração de implantação e seus detalhes:
Parâmetro | Descrição |
---|---|
version |
Número da versão do arquivo de especificação. O valor deve ser 1.0. |
component |
Valor do componente. O único valor suportado é deployment . |
shell |
Opcional. Especifica o shell a ser usado no nível global da especificação de implantação. O valor pode ser substituído no nível da 'etapa'. Os valores permitidos são /bin/sh e bash . Se não for especificado, o valor padrão bash será usado. |
env: variables |
Variáveis de ambiente definidas pelo usuário que estão disponíveis para os executáveis ou o comando bash que são executados como parte da implantação. Exemplos: Também é possível usar variáveis incorporadas. Para evitar conflitos, as variáveis incorporadas são prefixadas com As variáveis incorporadas são:
|
env: vaultVariables |
Opcional. A chave deve ser compatível com variáveis de ambiente de string e POSIX. O valor deve ser um OCID (Oracle Cloud Identifier) do segredo do vault. O vault e o pipeline de implantação devem ser da mesma tenancy. A tenancy deve ter uma política apropriada para permitir que recursos do pipeline de implantação acessem o segredo. O escopo dessa variável é a execução do arquivo de especificação de implantação e está disponível para todas as etapas do arquivo. O valor dessas variáveis é recuperado do vault e disponibilizado como variáveis de ambiente para todas as etapas do arquivo de especificação de implantação. |
files |
Especifica os artefatos definidos no pipeline de implantação que devem ser copiados e o local da instância de computação de destino para o qual copiá-los. Esse parâmetro é opcional. O usuário configurado, Por exemplo, se você designar o diretório de destino no arquivo de configuração de implantação como |
files: source |
Especifica o local de origem dos artefatos. A origem pode se referir a um arquivo ou pasta. Se a origem for um arquivo, esse arquivo será copiado para a pasta definida no destino. Se for uma pasta, todo o conteúdo dessa pasta será copiado para o destino. A origem usa caminho relativo, cuja raiz é a pasta raiz de um ou mais artefatos. Especifique o nome completo do artefato, incluindo a extensão do tipo de arquivo. Por exemplo, se o arquivo na origem for Por exemplo, se o artefato geral especificar um único arquivo, |
files: destination |
Especifica a pasta de destino na qual o arquivo ou a pasta de origem deve ser copiado. O OCI DevOps recomenda considerar o destino como um diretório de preparação para o código de produção, pois o conteúdo do diretório de destino é substituído durante cada implantação. No exemplo de especificação de implantação a seguir, dois diretórios são mencionados. O diretório de destino é |
steps |
Especifica a lista de etapas que são executadas sequencialmente durante a implantação. Cada etapa é executada como outro processo na instância. Todas as variáveis de ambiente incorporadas e definidas pelo usuário especificadas são transmitidas ao processo. |
steps: name |
Nome definido pelo usuário para a etapa. |
steps: command |
Comando shell ou arquivo executável shell. Se o parâmetro Há suporte para comandos de linha única e de várias linhas. Todos os comandos especificados em uma etapa são executados na mesma sessão de shell. Com base no valor steps/*/shell, os comandos podem ser Por exemplo, se você especificar o comando |
steps: runAs |
Execute a etapa como usuário especificado. Por padrão, todas as etapas são executadas como usuário ocarun . |
steps: timeoutInSeconds |
Especifica o período de timeout para finalizar uma etapa. |
steps: shell |
Opcional. Especifica o tipo de shell da etapa atual. Se não for especificado, o valor será herdado do parâmetro shell global. Os valores permitidos são /bin/sh e shell . |
steps: onFailure |
Uma lista de etapas que devem ser executadas em caso de falha para saída normal do estágio de implantação. Os comandos na seção onFailure só serão executados se a etapa correspondente falhar e, após a execução, a especificação de implantação for encerrada. O tratamento da falha não afeta o status do estágio de implantação. Se qualquer uma das etapas falhar, o status do estágio de implantação permanecerá com falha. |
Veja a seguir um exemplo de arquivo de configuração de implantação:
version: 1.0
component: deployment
runAs: ocarun
env:
variables:
version: ${appVersion}
vaultVariables:
SECRET_ID: "OCID of the secret in the vault"
files:
- source: /
destination: /var/ocarun_staging/app1_staging_folder
steps:
- stepType: Command
name: Validate Variables
command: echo "Version = ${version}: Secret = ${SECRET_ID}"
timeoutInSeconds: 60
- stepType: Command
name: Stop currently-running application
command: cd /var/ocarun_prod/main_app; ./stop.sh
timeoutInSeconds: 600
- stepType: Command
name: Clean old version of source code in prod directory
command: echo "Perform suitable cleanup"
timeoutInSeconds: 600
- stepType: Command
name: Copy new version of source code from staging directory to prod directory
command: cp -R /var/ocarun_staging/app1_staging_folder/main_app /var/ocarun_prod/
timeoutInSeconds: 600
- stepType: Command
name: Install application
command: cd /var/ocarun_prod/main_app; ./install.sh
timeoutInSeconds: 600
- stepType: Command
name: Run application
command: cd /var/ocarun_prod/main_app; ./start.sh
timeoutInSeconds: 600
Exemplo de um arquivo cloud-init para configurar os dois diretórios (preparação e produção):
#cloud-config
users:
- default
- name: ocarun
sudo: ALL=(ALL) NOPASSWD:ALL
# Create two directories, one for staging and one for production.
runcmd:
- [mkdir, -p, /var/ocarun_staging]
- [mkdir, -p, /var/ocarun_prod]
- [chown, ocarun, /var/ocarun_staging]
- [chown, ocarun, /var/ocarun_prod]
Exemplo para entender várias entradas para origem e destino:
version: 1.0
component: deployment
runAs: root
shell: bash
env:
variables:
version: ${appVersion}
vaultVariables:
docker_registry_password : <secret-ocid>
files:
# This section is to define how the files in the artifact is put on the compute instance.
# Multiple entires are supported using a separate source destination section for every entry.
- source: /
destination: /genericArtifactDemo
- source: /tmp/file1
destination: /var/applicationPath/someDir1
- source: /tmp/file2
destination: /var/applicationPath/someDir2
steps:
# This section is to define the scripts that each step runs on the instance after file copy.
- stepType: Command
name: Install Apache Web Server
command: /genericArtifactDemo/install_dependencies.sh
runAs: root
timeoutInSeconds: 600
- stepType: Command
name: Stop Web Server
command: /genericArtifactDemo/stop.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: Install New Version of Software
command: /genericArtifactDemo/install.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: Start Web Server
command: /genericArtifactDemo/start.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: stop and install
command: |
/scripts/stop.sh
echo "Done stop.sh.."
/scripts/install_dependencies.sh
echo "Done install_dependencies.sh.."
/scripts/install.sh
echo "Done install.sh.."
timeoutInSeconds: 1200
runAs: root
shell: /bin/sh
onFailure:
- stepType: Command
command: /scripts/recovery_steps.sh
name:"OnFailure step"
timeoutInSeconds: 1200
Executando o Arquivo de Configuração de Implantação
O serviço DevOps usa o agente RunCommand para executar os comandos especificados no arquivo de configuração da instância de computação de destino. Para obter mais informações sobre como ativar o plug-in RunCommand, consulte a seção "Pré-requisitos" em Implantando em um Grupo de Instâncias. Se o arquivo de configuração de implantação contiver placeholders, eles serão substituídos pelos valores definidos na lista de parâmetros da implantação. Consulte Configurando Parâmetros.