title: AWS user_data with Packer
body: <p>So I'm trying to use Packer to create an AWS image and specify some user data via user_data_file. The contents of this file needs to be run when the instance boots as it will be unique each time. I can't bake this into the AMI. </p>
  
  <p>Using packer I have the following:</p>
  
  <pre><code>{
    "variables": {
    "ami_name": ""
    },
    "builders": [
    {
      "type": "amazon-ebs",
      "region": "us-east-1",
      "source_ami": "ami-c8580bdf",
      "instance_type": "t2.micro",
      "ssh_username": "ubuntu",
      "ami_name": "{{ user `ami_name` }}-{{ isotime | clean_ami_name }}",
      "user_data_file": "user_data.sh",
      "tags": {
        "os_version": "ubuntu",
        "built_by": "packer",
        "build_on": "{{ isotime | clean_ami_name }}",
        "Name": "{{ user `ami_name` }}"
      }
    }],
    "provisioners": [
    {
      "type": "ansible",
      "playbook_file": "playbook.yml",
      "user": "ubuntu"
    }]
  }
  </code></pre>
  
  <p>The contents of my user_data shell script are just a few basic config lines for a package that was installed via the ansible scripts that were run in the provisioners step. Watching the output of Packer I can confirm that the ansible scripts all run. </p>
  
  <p>Packer completes and creates the AMI, but the user data piece is never executed. No record of it exists in resulting image. There is no /userdata.log file and <code>/var/lib/cloud/instance/user-data.txt</code> is empty I feel like I missing something basic as this should be a very simple thing to do with Packer. </p>