Olá. Aqui é a Komiya. Tentei evitar o reboot permitindo o resize2fs no hvm do packer.
Sinto que posso fazer a mesma coisa usando cloud-init. Configure o cloud-init no CentOS 6 (HVM) e use Amazon Linux | Developers.IO No entanto, como uso um packer, é mais fácil fazer lá. Eu não conseguiria fazer login se criasse uma AMI que só colocasse cloud-init sem configurar nada. Não quero fazer isso a menos que entenda o que escrevi no arquivo de configuração e o que ele fará nos bastidores, mas foi um transtorno procurar. Desculpe pela fraqueza.
・O começo do assunto Quando criei uma instância de hvm baseada no meu AMI no CentOS6.5, eu deveria rodá-la com a receita do chef e automaticamente o redimension2fs foi implementado no volume raiz, mas o tamanho não mudou. Deveria ser de 10 a 50GB, mas permaneceu em 10GB.
・Por enquanto, Guguru Aprenda sobre fenômenos e contramedidas semelhantes na URL abaixo Alterando o tamanho do disco com o CentOS-HVM do EC2 | Havia outras formas de expandir com o Hack fdisk. Mas eu estava travado achando que reiniciar era necessário! Eu pensei. Especificamente, o resize2fs é feito por receitas de chefs em streaming, então fazer login é um transtorno duas vezes.
・Levantei um problema ou consultei uma pessoa pontiaguda que sugeriu que, se houver um problema com a tabela de partições, por que não colocar algo como a seguinte URL no packer? O que fazer quando o tamanho do disco não muda no CentOS na Amazon EC2 | Developers.IO
・Na verdade, tentei e deu certo.
Adicione o seguinte ao script shell no packer
+# Instalar growroot, etc. a partir do EPEL
+yum -y --enablerepo=epel install dracut-modules-growroot cloud-utils
+
+# Tabela de partição raiz de redimensionamento
+dracut --force --add growroot /boot/initramfs-$(uname -r).img
Então, construí uma AMI com o packer e rodei a receita do chef na instância que criei a partir daquela AMI, e quando fiz o df, o disco foi expandido. Não precisei reiniciar! ! Uau! Parabéns.
・Como construir meu AMI com o packer Você pode conferir a instalação em Install Packer - Packer by HashiCorp. O template é o seguinte (se você usa um vpc, também precisa de vpc_id e sub-rede_id). Hoje em dia, talvez você não consiga usar vpc. )
{
"variáveis": {
"aws_access_key": "**AKB********",
"aws_secret_key": "Pga4**********",
"aws_source_ami": "ami-53**********",
"aws_region_name": "**ap-so********",
"aws_instance_type": "t2.small",
"aws_vpc_id": "vpc-0z**********",
"aws_subnet_id": "sub-net-0**********",
"aws_create_date": ""
},
"construtores": [{
"tipo": "amazon-ebs",
"access_key": "{{usuário 'aws_access_key'}}",
"secret_key": "{{usuário 'aws_secret_key'}}",
"região": "{{usuário 'aws_region_name'}}",
"source_ami": "{{usuário 'aws_source_ami'}}",
"instance_type": "{{usuário 'aws_instance_type'}}",
"ssh_username": "raiz",
"ssh_timeout": "10m",
"subnet_id": "{{usuário 'aws_subnet_id'}}",
"vpc_id": "{{usuário 'aws_vpc_id'}}",
"associate_public_ip_address": verdade,
"ami_name": "AMI_standard_{{usuário 'aws_create_date'}}",
"tags": {
"Nome": "AMI_standard_{{usuário 'aws_create_date'}}"
}
}],
"fornecedores": [{
"tipo": "concha",
"execute_command": "sh {{ . Caminho }} {{usuário 'aws_region_name'}}",
"roteiro": "ami-deploy.sh"
}]
}
*Especifique o script a ser executado nos provisioners Esta página [Boletim]Crie templates para várias máquinas virtuais com Packer | Ryuzee.com Também há uma explicação. É uma boa ideia preparar as configurações básicas que você faria ao criar sua própria AMI para o script. O conteúdo é como preparar no cloud-init, ou a configuração antes do chef ser ruim. Por exemplo, repositórios gerais e aqueles que estão absolutamente incluídos em tudo, como ssh, usuários mínimos, configurações de início automático, etc. *Em primeiro lugar, a AMI especificada no template precisa de hvm. Por favor, veja o artigo do Sr. Inada sobre como criá-la. ⇒ Converter de uma Instância PV para uma Instância HVM (CentOS6)
O comando build é executado da seguinte forma: (É melhor não passá-lo para segundo plano porque há vários status de execução na saída padrão)
CREATE_DATE='date +'%Y%m%d''
Packer build -var aws_create_date=${CREATE_DATE} templatefile.json
*Levou cerca de 20~30 minutos Parece que pode ser rodado pelo Windows, mas parece que o Linux que pode ser feito com Linux é melhor no processamento, então se eu fizer no Win, parece que fica travado. A barreira psicológica é alta e eu não me sinto motivado.
Por enquanto, consegui alcançar meu objetivo de uma forma que foi fácil para mim pessoalmente, então estou aqui. Gostaria de pesquisar sobre cloud-init em breve. Baixa prioridade das tarefas no cérebro (acho que vou ficar confuso se não tiver uma oportunidade forçada).
Obrigado por assistir.