概要
Packer で Ubuntu AMI を作成しようとしたら、 apt-get -y upgrade
で処理が止まって困った時の解決方法。
もしかしたら Docker や Ansible でも出るのではないか。
{ "variables": { "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}", "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}", "region": "ap-northeast-1" }, "builders": [{ "type": "amazon-ebs", "access_key": "{{user `aws_access_key`}}", "secret_key": "{{user `aws_secret_key`}}", "region": "{{user `region`}}", "source_ami_filter": { "filters": { "virtualization-type": "hvm", "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", "root-device-type": "ebs" }, "owners": ["099720109477"], "most_recent": true }, "instance_type": "m3.medium", "ssh_username": "ubuntu", "ssh_timeout": "5m", "ami_name": "AMI/ubuntu/{{isotime | clean_ami_name}}" }], "provisioners": [{ "type": "shell", "inline": [ "sudo apt-get update", "sudo apt-get upgrade -y", # ここで止まる "sudo apt-get install -y python3-pip", "(略)" ] }] }
確かにサーバーに直接ログインし、 apt-get upgrade -y
したらインタラクティブな画面になってしまい、コマンド操作不能な状況になっていた。
これはヒドい。
対応方法
sudo apt-get upgrade -y
ではなく、 sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq
を使う。
参考: