Inicialização de instâncias de contêiner do Linux no Amazon ECS para transmitir dados
Ao iniciar uma instância do Amazon EC2, é possível transmitir dados do usuário para a instância do EC2. Os dados podem ser usados para realizar tarefas de configuração automatizadas em comum e até mesmo executar scripts na inicialização da instância. Para o Amazon ECS, os casos de uso mais comuns para dados de usuário devem transmitir informações de configuração para o daemon do Docker e o agente de contêiner do Amazon ECS.
É possível transmitir vários tipos de dados de usuário para o Amazon EC2, inclusive boothooks de nuvem, scripts de shell e diretivas cloud-init
. Para obter mais informações sobre esses e outros tipos de formato, consulte a documentação Cloud-Init
Para transmitir os dados do usuário ao usar o assistente de inicialização do Amazon EC2, consulte Iniciar uma instância de contêiner do Linux do Amazon ECS.
É possível configurar a instância de contêiner para transmitir dados na configuração do agente de contêiner ou na configuração do daemon do Docker.
Agente do contêiner do Amazon ECS
As variantes do Linux da AMI otimizada para Amazon ECS procuram os dados da configuração do agente no arquivo /etc/ecs/ecs.config
quando o agente de contêiner é iniciado. É possível especificar esses dados de configuração na inicialização com os dados de usuário do Amazon EC2. Para obter mais informações sobre as variáveis de configuração do agente de contêiner do Amazon ECS disponíveis, consulte Configuração do agente de contêiner do Amazon ECS.
Para definir apenas uma única variável de configuração do agente, como o nome do cluster, use echo a fim de copiar a variável para o arquivo de configuração:
#!/bin/bash echo "ECS_CLUSTER=
MyCluster
" >> /etc/ecs/ecs.config
Caso você tenha várias variáveis a serem gravadas em /etc/ecs/ecs.config
, use o formato heredoc
a seguir. Esse formato grava tudo entre as linhas que começam com cat e EOF
no arquivo de configuração.
#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}} ECS_LOGLEVEL=debug
ECS_WARM_POOLS_CHECK=true
EOF
Para definir atributos de instância personalizados, defina a variável de ambiente ECS_INSTANCE_ATTRIBUTES
.
#!/bin/bash cat <<'EOF' >> ecs.config ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"} EOF
Daemon do Docker
É possível especificar informações de configuração do daemon do Docker com os dados de usuário do Amazon EC2. Para mais informações sobre as opções de configuração, consulte a documentação de daemon do Docker
No exemplo abaixo, as opções personalizadas são adicionadas ao arquivo de configuração do daemon do Docker, /etc/docker/daemon.json
, que é então especificado nos dados de usuário quando a instância é iniciada.
#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"debug": true} EOF systemctl restart docker --no-block
No exemplo abaixo, as opções personalizadas são adicionadas ao arquivo de configuração do daemon do Docker, /etc/docker/daemon.json
, que é então especificado nos dados de usuário quando a instância é iniciada. Este exemplo mostra como desabilitar o docker-proxy no arquivo de configuração do daemon do Docker.
#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"userland-proxy": false} EOF systemctl restart docker --no-block