我正在使用Hashicorp Packer构建AMI,这是其中一个步骤:
{
"type": "shell",
"script": "scripts/apt.sh"
},
{
"type": "shell",
"inline": ["sudo reboot"],
"inline_shebang": "/bin/bash -e",
"expect_disconnect": true
},
{
"type": "shell",
"script": "scripts/sysctl.sh",
"pause_before": "10s"
},
这里的结果是:
Provisioning with shell script: scripts/apt.sh
==> amazon-ebs: Provisioning with shell script: /tmp/packer-shell376239929
==> amazon-ebs: Pausing 10s before the next provisioner...
==> amazon-ebs: Provisioning with shell script: scripts/sysctl.sh
amazon-ebs: net.ipv4.ip_forward = 0
amazon-ebs: net.ipv4.conf.all.send_redirects = 0
amazon-ebs: net.ipv4.conf.default.send_redirects = 0
很明显,Packer不会以某种方式解释reboot命令,但是即使我把pause属性放在那里,也会立即运行下一个命令。它会等待10秒,但不会重启。
amazon-ebs: + sudo reboot now
2018/01/31 20:54:34 ui: amazon-ebs: + sudo reboot now
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 Remote command exited without exit status or exit signal.
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 [INFO] RPC endpoint: Communicator ended with: 2300218
2018/01/31 20:54:34 [INFO] 0 bytes written for 'stdout'
2018/01/31 20:54:34 [INFO] 18 bytes written for 'stderr'
2018/01/31 20:54:34 [INFO] RPC client: Communicator ended with: 2300218
2018/01/31 20:54:34 [INFO] RPC endpoint: Communicator ended with: 2300218
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 [INFO] 0 bytes written for 'stdout'
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 [INFO] 18 bytes written for 'stderr'
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 [INFO] RPC client: Communicator ended with: 2300218
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 opening new ssh session
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 ssh session open error: 'EOF', attempting reconnect
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 reconnecting to TCP connection for SSH
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 handshaking with SSH
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 handshake complete!
2018/01/31 20:54:34 packer: 2018/01/31 20:54:34 [INFO] no local agent socket, will not connect agent
2018/01/31 20:54:35 packer: 2018/01/31 20:54:35 starting remote command: rm -f /tmp/script_5069.sh
2018/01/31 20:54:35 packer: 2018/01/31 20:54:35 [INFO] RPC endpoint: Communicator ended with: 0
2018/01/31 20:54:35 [INFO] RPC client: Communicator ended with: 0
2018/01/31 20:54:35 [INFO] RPC endpoint: Communicator ended with: 0
2018/01/31 20:54:35 packer: 2018/01/31 20:54:35 [INFO] RPC client: Communicator ended with: 0
2018/01/31 20:54:35 [INFO] (telemetry) ending shell
2018/01/31 20:54:35 [INFO] (telemetry) Starting provisioner file
2018/01/31 20:54:35 ui: ==> amazon-ebs: Pausing 10s before the next provisioner...
==> amazon-ebs: Pausing 10s before the next provisioner...
2018/01/31 20:55:05 ui: ==> amazon-ebs: Uploading conf => /tmp
==> amazon-ebs: Uploading conf => /tmp
2018/01/31 20:55:05 packer: 2018/01/31 20:55:05 Upload dir 'conf' to '/tmp'
2018/01/31 20:55:05 packer: 2018/01/31 20:55:05 opening new ssh session
2018/01/31 20:55:32 packer: 2018/01/31 20:55:32 ssh session open error: 'ssh: unexpected packet in response to channel open: <nil>', attempting reconnect
2018/01/31 20:55:32 packer: 2018/01/31 20:55:32 reconnecting to TCP connection for SSH
2018/01/31 20:55:32 packer: 2018/01/31 20:55:32 reconnection error: dial tcp 10.211.207.8:22: getsockopt: connection refused
2018/01/31 20:55:32 [INFO] (telemetry) ending file
2018/01/31 20:55:32 [INFO] (telemetry) found error: dial tcp 10.211.207.8:22: getsockopt: connection refused
==> amazon-ebs: Terminating the source AWS instance...