

# Definições de tarefas para tarefas de inicialização do EC2Launch v2
<a name="ec2launch-v2-task-definitions"></a>

Cada tarefa que o EC2Launch v2 inicia durante a inicialização ou startup tem seu próprio conjunto de propriedades e requisitos. Os detalhes da tarefa incluem configurações da frequência com que uma tarefa é executada: uma vez ou sempre, em qual estágio do processo de inicialização do agente ela é executada, a sintaxe e exemplos de documentos YAML. Para obter mais informações, revise os detalhes da tarefa mostrados nesta referência.

**Topics**
+ [activateWindows](#ec2launch-v2-activatewindows)
+ [enableJumboFrames](#ec2launch-v2-enablejumboframes)
+ [enableOpenSsh](#ec2launch-v2-enableopenssh)
+ [executeProgram](#ec2launch-v2-executeprogram)
+ [executeScript](#ec2launch-v2-executescript)
+ [extendRootPartition](#ec2launch-v2-extendrootpartition)
+ [initializeVolume](#ec2launch-v2-initializevolume)
+ [optimizeEna](#ec2launch-v2-optimizeena)
+ [setAdminAccount](#ec2launch-v2-setadminaccount)
+ [setDnsSuffix](#ec2launch-v2-setdnssuffix)
+ [setHostName](#ec2launch-v2-sethostname)
+ [setWallpaper](#ec2launch-v2-setwallpaper)
+ [startSsm](#ec2launch-v2-startssm)
+ [sysprep](#ec2launch-v2-task-sysprep)
+ [writeFile](#ec2-launch-v2-writefile)

## activateWindows
<a name="ec2launch-v2-activatewindows"></a>

Ativa o Windows em relação a um conjunto de servidores de AWS KMS. A ativação será ignorada se a instância for detectada como traga a sua própria licença (BYOL).

*Frequência* — uma vez

*AllowedStages* — `[PreReady]`

*Entradas* — 

`activation`: (mapa)

`type`: (string) tipo de ativação a usar, defina como `amazon`

*Exemplo*

```
task: activateWindows
  inputs:
    activation:
    type: amazon
```

## enableJumboFrames
<a name="ec2launch-v2-enablejumboframes"></a>

Habilita frames jumbo, que aumentam a MTU (unidade de transmissão máxima) do adaptador de rede. Para obter mais informações, consulte [Frames jumbo (9001 MTU)](network_mtu.md#jumbo_frame_instances).

*Frequência* — sempre

*AllowedStages* — `[PostReady, UserData]`

*Entradas* — nenhuma

*Exemplo*

```
task: enableJumboFrames
```

## enableOpenSsh
<a name="ec2launch-v2-enableopenssh"></a>

Habilita o Windows OpenSSH e adiciona a chave pública da instância à pasta de chaves autorizadas.

*Frequência* — uma vez

*AllowedStages* — `[PreReady, UserData]`

*Entradas* — nenhuma

*Exemplo*

O exemplo a seguir mostra como habilitar o OpenSSH em uma instância e adicionar a chave pública da instância à pasta de chaves autorizadas. Essa configuração funciona somente em instâncias que executam o Windows Server 2019 e versões posteriores.

```
task: enableOpenSsh
```

## executeProgram
<a name="ec2launch-v2-executeprogram"></a>

Executa um programa com argumentos opcionais e uma frequência especificada.

**Estágios:** você pode executar a tarefa `executeProgram` durante os estágios `PreReady`, `PostReady` e `UserData`.

**Frequência:** configurável. Consulte *Entradas*.

**Entradas**  
Esta seção contém um ou mais programas para a tarefa **executeProgram** executar (entradas). Cada etapa pode incluir as seguintes definições configuráveis:    
**frequência (string)**  
(Obrigatório) Especifique exatamente um dos seguintes valores:  
+ `once`
+ `always`  
**caminho (string)**  
(Obrigatório) O caminho do arquivo para que o executável seja executado.  
**argumentos (lista de strings)**  
(Opcional) Uma lista de argumentos separados por vírgula para fornecer ao programa como entrada.  
**runAs (string)**  
(Obrigatório) Deve ser definido como `localSystem`

**Output**  
Todas as tarefas gravam entradas do arquivo de log no arquivo `agent.log`. A saída adicional da tarefa `executeProgram` é armazenada separadamente em uma pasta com nome dinâmico, da seguinte forma:  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.tmp`  
O caminho exato para os arquivos de saída está incluído no arquivo `agent.log`, por exemplo:  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\ExecuteProgramInputs.tmp
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**Arquivos de saída para a tarefa `executeProgram`**    
`ExecuteProgramInputs.tmp`  
Contém o caminho para o executável e todos os parâmetros de entrada que a tarefa `executeProgram` transmite para ele quando é executada.  
`Output.tmp`  
Contém a saída de runtime do programa que a tarefa `executeProgram` executa.  
`Err.tmp`  
Contém as mensagens de erro de runtime do programa que a tarefa `executeProgram` executa.

**Exemplos**  
Os exemplos a seguir mostram como executar um arquivo executável de um diretório local em uma instância com a tarefa `executeProgram`.  
**Exemplo 1: configurar executável com um argumento**  
Este exemplo mostra uma tarefa `executeProgram` que executa um executável de configuração no modo silencioso.

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\Users\Administrator\Desktop\setup.exe
      arguments: ['-quiet']
```
**Exemplo 2: VLC executável com dois argumentos**  
Este exemplo mostra uma tarefa `executeProgram` que executa um arquivo VLC executável com dois argumentos transmitidos como parâmetros de entrada.

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\vlc-3.0.11-win64.exe 
      arguments: ['/L=1033','/S']
      runAs: localSystem
```

## executeScript
<a name="ec2launch-v2-executescript"></a>

Executa um script com argumentos opcionais e uma frequência especificada. O comportamento do script depende do modo em que o agente executa os scripts: em linha ou desanexados.

Em linha (padrão)  
O agente EC2Launch v2 executa os scripts um de cada vez (`detach: false`) Essa é a configuração padrão.  
Quando seu script em linha emite um  comando **reset** ou **sysprep**, ele é executado imediatamente e redefine o agente. A tarefa atual é concluída e, em seguida, o agente é desligado sem executar mais nenhuma tarefa.  
Por exemplo, se a tarefa que emite o comando tivesse sido seguida por uma tarefa `startSsm` (incluída por padrão após a execução dos dados do usuário), a tarefa não executaria e o serviço Systems Manager nunca seria iniciado.

Desanexados  
O agente do EC2Launch v2 executa scripts simultaneamente com outras tarefas (`detach: true`).  
Quando seu script desanexado emite um comando **reset** ou **sysprep**, esses comandos aguardam a conclusão do agente antes de serem executados. As tarefas após executeScript ainda serão executadas.

**Estágios:** você pode executar a tarefa `executeScript` durante os estágios `PreReady`, `PostReady` e `UserData`.

**Frequência:** configurável. Consulte *Entradas*.

**Entradas**  
Esta seção contém um ou mais scripts para a tarefa **executeScript** executar (entradas). Cada etapa pode incluir as seguintes definições configuráveis:    
**frequência (string)**  
(Obrigatório) Especifique exatamente um dos seguintes valores:  
+ `once`
+ `always`  
**tipo (string)**  
(Obrigatório) Especifique exatamente um dos seguintes valores:  
+ `batch`
+ `powershell`  
**argumentos (lista de strings)**  
(Opcional) Uma lista de argumentos de string a serem transmitidos ao shell (não ao script do PowerShell). Esse parâmetro não é compatível com `type: batch`. Se nenhum argumento for passado, o EC2Launch v2 adicionará o seguinte argumento por padrão: `-ExecutionPolicy Unrestricted`.  
**conteúdo (string)**  
(Obrigatório) Conteúdo de script  
**runAs (string)**  
(Obrigatório) Especifique exatamente um dos seguintes valores:  
+ `admin`
+ `localSystem`  
**desanexar (booleano)**  
(Opcional) O agente do EC2Launch v2 assume como padrão a execução de um script por vez (`detach: false`). Para executar o script simultaneamente com outras tarefas, defina o valor como `true` (`detach: true`).  
Os códigos de saída de script (incluindo `3010`) não têm efeito quando `detach` é definido como `true`.

**Output**  
Todas as tarefas gravam entradas do arquivo de log no arquivo `agent.log`. A saída adicional do script que a tarefa `executeScript` executa é armazenada separadamente em uma pasta com nome dinâmico, da seguinte forma:  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.ext`  
O caminho exato para os arquivos de saída está incluído no arquivo `agent.log`, por exemplo:  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\UserScript.ps1
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**Arquivos de saída para a tarefa `executeScript`**    
`UserScript.ext`  
Contém o script que a tarefa `executeScript` executou. A extensão do arquivo depende do tipo de script especificado no parâmetro `type` da tarefa `executeScript`, da seguinte forma:  
+ Se o tipo for `batch`, então a extensão do arquivo será `.bat`.
+ Se o tipo for `powershell`, então a extensão do arquivo será `.ps1`.  
`Output.tmp`  
Contém a saída de runtime do script que a tarefa `executeScript` executa.  
`Err.tmp`  
Contém as mensagens de erro de runtime do script que a tarefa `executeScript` executa.

**Exemplos**  
Os exemplos a seguir mostram como executar um script em linha com a tarefa `executeScript`.  
**Exemplo 1: arquivo de texto de saída Hello world**  
Este exemplo mostra uma tarefa `executeScript` que executa um script do PowerShell para criar um arquivo de texto "Hello world" na unidade `C:`.

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: admin
      content: |-
        New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
        Set-Content 'C:\PowerShellTest.txt' "Hello world"
```
**Exemplo 2: execução de dois scripts**  
Este exemplo mostra que a tarefa `executeScript` pode executar mais de um script, e o tipo de script não precisa necessariamente corresponder.
O primeiro script (`type: powershell`) grava um resumo dos processos atualmente em execução na instância em um arquivo de texto localizado na unidade `C:`.  
O segundo script (`batch`) grava as informações do sistema no arquivo `Output.tmp`.  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |
        Get-Process | Out-File -FilePath C:\Process.txt
    - frequency: always
      type: batch
      runAs: localSystem
      content: |
        systeminfo
```
**Exemplo 3: configuração do sistema idempotente com reinicializações**  
Este exemplo mostra uma tarefa `executeScript` que executa um script idempotente para realizar a seguinte configuração do sistema com uma reinicialização entre cada etapa:
+ Renomear o computador.
+ Juntar o computador ao domínio.
+ Habilitar Telnet.
O script garante que cada operação seja executada apenas uma vez. Isso evita um loop de reinicialização e torna o script idempotente.  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |-
        $name = $env:ComputerName
        if ($name -ne $desiredName) {
          Rename-Computer -NewName $desiredName
          exit 3010
        }
        $domain = Get-ADDomain
        if ($domain -ne $desiredDomain) 
        {
          Add-Computer -DomainName $desiredDomain
          exit 3010
        }
        $telnet = Get-WindowsFeature -Name Telnet-Client
        if (-not $telnet.Installed)
        {
          Install-WindowsFeature -Name "Telnet-Client"
          exit 3010 
        }
```

## extendRootPartition
<a name="ec2launch-v2-extendrootpartition"></a>

Estende o volume raiz para usar todo o espaço disponível no disco.

*Frequência* — uma vez

*AllowedStages* — `[Boot]`

*Entradas* — nenhuma

*Exemplo* 

```
task: extendRootPartition
```

## initializeVolume
<a name="ec2launch-v2-initializevolume"></a>

Inicializa volumes vazios que estão anexados à instância para que eles sejam ativados e particionados. O agente de inicialização ignorará a inicialização se detectar que o volume não está vazio. Um volume será considerado vazio se os primeiros 4 KiB estiverem vazios ou se o volume não tiver um [layout de unidade reconhecível pelo Windows](https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-drive_layout_information_ex).

O parâmetro de entrada `letter` sempre é aplicado quando essa tarefa é executada, quer a unidade tenha sido inicializada ou não.

A tarefa `initializeVolume` realiza as ações a seguir.
+ Defina os atributos de disco `offline` e `readonly` como falsos.
+ Crie uma partição. Se nenhum tipo de partição for especificado no parâmetro de entrada `partition`, os seguintes padrões serão aplicados:
  + Se o tamanho do disco for menor do que 2 TB, defina o tipo de partição com `mbr`.
  + Se o tamanho do disco for 2 TB ou mais, defina o tipo de partição com `gpt`.
+ Formate o volume como NTFS.
+ Defina o rótulo do volume como se segue:
  + Use o valor `name` do parâmetro de entrada, se especificado.
  + Se o volume for efêmero e nenhum nome estiver especificado, defina o rótulo do volume como `Temporary Storage Z`.
+ Se o volume for efêmero (SSD ou HDD, não Amazon EBS), crie um arquivo `Important.txt` na raiz do volume com o seguinte conteúdo:

  ```
  This is an 'Instance Store' disk and is provided at no additional charge.
  
  *This disk offers increased performance since it is local to the host
  *The number of Instance Store disks available to an instance vary by instance type
  *DATA ON THIS DRIVE WILL BE LOST IN CASES OF IMPAIRMENT OR STOPPING THE INSTANCE. PLEASE ENSURE THAT ANY IMPORTANT DATA IS BACKED UP FREQUENTLY
  
  For more information, please refer to: Armazenamento em bloco temporário do armazenamento de instância para instâncias do EC2.
  ```
+ Defina a letra da unidade como o valor especificado no parâmetro de entrada `letter`.

**Estágios:** você pode executar a tarefa `initializeVolume` durante os estágios `PostReady` e `UserData`.

**Frequência:** sempre.

**Entradas**  
Você pode configurar os parâmetros de runtime seguinte forma:    
**dispositivos (lista de mapas)**  
(Condicional) Configuração de cada dispositivo iniciado pelo agente de inicialização. É obrigatório quando o parâmetro de entrada `initialize` está definido como `devices`.  
+ **dispositivo (string, obrigatório)**: identifica o dispositivo durante a criação da instância. Por exemplo, `xvdb`, `xvdf` ou `\dev\nvme0n1`.
+ **letra (string, opcional)**: um caractere. A letra de unidade a ser atribuída.
+ **nome (string, opcional)**: o nome do volume a ser atribuído.
+ **partição (string, opcional)**: especifique um dos seguintes valores para o tipo de partição a ser criada ou deixe o agente de inicialização usar o padrão de acordo com o tamanho do volume:
  + mbr
  + gpt  
**inicializar (string)**  
(Obrigatório) Especifique exatamente um dos seguintes valores:  
+ `all`
+ `devices`

**Exemplos**  
Os exemplos a seguir mostram exemplos de configurações de entrada para a tarefa `initializeVolume`.  
**Exemplo 1: inicializar dois volumes em uma instância**  
Este exemplo mostra uma tarefa `initializeVolume` que inicializa dois volumes secundários em uma instância. O dispositivo denominado `DataVolume2` no exemplo é efêmero.

```
task: initializeVolume
inputs:
  initialize: devices
  devices:
  - device: xvdb
    name: DataVolume1
    letter: D
    partition: mbr
  - device: /dev/nvme0n1
    name: DataVolume2
    letter: E
    partition: gpt
```

**Exemplo 2: inicializar volumes do EBS anexados a uma instância**  
Este exemplo mostra uma tarefa `initializeVolume` que inicializa todos os volumes vazios do EBS que estão conectados à instância.

```
task: initializeVolume
inputs:
  initialize: all
```

## optimizeEna
<a name="ec2launch-v2-optimizeena"></a>

Otimiza as configurações do ENA com base no tipo de instância atual; pode reinicializar a instância.

*Frequência* — sempre

*AllowedStages* — `[PostReady, UserData]`

*Entradas* — nenhuma

*Exemplo* 

```
task: optimizeEna
```

## setAdminAccount
<a name="ec2launch-v2-setadminaccount"></a>

Define atributos para a conta de administrador padrão criada na máquina local.

*Frequência* — uma vez

*AllowedStages* — `[PreReady]`

*Entradas* — 

`name`: (string) nome da conta de administrador

`password`: (mapa)

`type`: (string) estratégia para definir a senha como `static`, `random` ou `doNothing`

`data`: (string) armazena dados se o campo `type` for estático

*Exemplo*

```
task: setAdminAccount
inputs:
  name: Administrator
  password:
  type: random
```

## setDnsSuffix
<a name="ec2launch-v2-setdnssuffix"></a>

Adiciona sufixos DNS à lista de sufixos de pesquisa. Somente sufixos que ainda não existem são adicionados à lista. Para obter mais informações sobre como os agentes de inicialização definem os sufixos DNS, consulte [Configurar o sufixo DNS para agentes de execução do EC2 Windows](launch-agents-set-dns.md).

*Frequência* — sempre

*AllowedStages* — `[PreReady]`

*Entradas* — 

`suffixes`: (lista de strings) lista de um ou mais sufixos DNS válidos; variáveis de substituição válidas são `$REGION` e `$AZ`

*Exemplo*

```
task: setDnsSuffix
inputs:
  suffixes:
  - $REGION.ec2-utilities.amazonaws.com
```

## setHostName
<a name="ec2launch-v2-sethostname"></a>

Define o nome do host do computador como uma string personalizada ou, se o `hostName` não for especificado, o endereço IPv4 privado.

*Frequência* — sempre

*AllowedStages* — `[PostReady, UserData]`

*Entradas* — 

`hostName`: (string) nome do host opcional, que deve ser formatado conforme o seguinte.
+ Ele deve ter 15 caracteres ou menos
+ Ele deve conter apenas caracteres alfanuméricos (a-z, A-Z, 0-9) e hífen (-).
+ Ele não deve consistir inteiramente em caracteres numéricos.

`reboot`: (booliano) indica se uma reinicialização é permitida quando o nome de host é alterado

*Exemplo*

```
task: setHostName
inputs:
  reboot: true
```

## setWallpaper
<a name="ec2launch-v2-setwallpaper"></a>

Cria o arquivo de atalho `setwallpaper.lnk` na pasta de startup de cada usuário existente, exceto para `Default User`. Esse arquivo de atalho é executado quando o usuário faz login pela primeira vez após a inicialização da instância. Ele configura a instância com um papel de parede personalizado que exibe os atributos da instância.

O caminho de arquivo de atalho é:

```
$env:SystemDrive/Users/<user>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/setwallpaper.lnk
```

**nota**  
Quando você remover a tarefa `setWallpaper`, não exclua esse arquivo de atalho. Para obter mais informações, consulte [`setWallpaper`A tarefa não está ativada, mas o papel de parede é redefinido na reinicialização](ec2launchv2-troubleshooting.md#ec2launchv2-troubleshooting-wallpaper-resets).

**Estágios**: é possível configurar o papel de parede durante os estágios `PreReady` e `UserData`.

**Frequência:** `always`

**Configuração do papel de parede**  
Você pode usar as definições a seguir para configurar o papel de parede.

**Entradas**  
Parâmetros de entrada que você fornece e atributos que você pode definir para configurar o papel de parede:    
**caminho (string)**  
(Obrigatório) O caminho do nome do arquivo da imagem local no formato .jpg a ser usada como imagem do papel de parede.  
**atributos (lista de strings)**  
(Opcional) Você pode adicionar um ou mais dos seguintes atributos ao papel de parede:  
+ `architecture`
+ `availabilityZone`
+ `hostName`
+ `instanceId`
+ `instanceSize`
+ `privateIpAddress`
+ `publicIpAddress`
+ `ipv6Address`  
**instanceTags**  
(Opcional) Você pode usar exatamente uma das seguintes opções para essa configuração.  
+ **AllTags** (string): adicione todas as tags de instância ao papel de parede.

  ```
  instanceTags: AllTags
  ```
+ **InstanceTags** (lista de strings): especifique uma lista de nomes de tags de instância para adicionar ao papel de parede. Por exemplo:

  ```
  instanceTags:
    - Tag 1
    - Tag 2
  ```

**Exemplo**  
O exemplo a seguir mostra as entradas da configuração do papel de parede que definem o caminho do arquivo da imagem de fundo do papel de parede, junto com as tags de instância denominadas `Tag 1` e `Tag 2`, e os atributos que incluem o nome do host, o ID da instância e os endereços IP públicos e privados da instância.

```
task: setWallpaper
inputs:
  path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
  attributes:
  - hostName
  - instanceId
  - privateIpAddress
  - publicIpAddress
  instanceTags:
  - Tag 1
  - Tag 2
```

**nota**  
Você deve habilitar as tags nos metadados para mostrá-las no papel de parede. Para obter mais informações sobre tags e metadados da instância, consulte [Visualizar tags para as instâncias do EC2 usando os metadados de instância](work-with-tags-in-IMDS.md).

## startSsm
<a name="ec2launch-v2-startssm"></a>

Iniciar o serviço Systems Manager (SSM) após o Sysprep.

*Frequência* — sempre

*AllowedStages* — `[PostReady, UserData]`

*Entradas* — nenhuma

*Exemplo*

```
task: startSsm
```

## sysprep
<a name="ec2launch-v2-task-sysprep"></a>

Redefine o estado do serviço, atualiza `unattend.xml`, desativa o RDP e executa Sysprep. Esta tarefa só é executada depois que todas as outras tarefas forem concluídas

*Frequência* — uma vez

*AllowedStages* — `[UserData]`

*Entradas* — 

`clean`: (booliano) limpa os logs de instância antes de executar o Sysprep

`shutdown`: (booliano) desliga a instância depois de executar o Sysprep

*Exemplo*

```
task: sysprep
inputs:
clean: true
shutdown: true
```

## writeFile
<a name="ec2-launch-v2-writefile"></a>

Grava um arquivo em um destino.

*Frequência* — visualizar *Entradas*

*AllowedStages* — `[PostReady, UserData]`

*Entradas* — 

`frequency`: (string) `once` ou `always`

`destination`: (string) caminho no qual gravar o conteúdo

`content`: (string) texto a gravar no destino

*Exemplo*

```
task: writeFile
inputs:
  - frequency: once
  destination: C:\Users\Administrator\Desktop\booted.txt
  content: Windows Has Booted
```