2016-05-18 21 views
2

Ich benutze Packer 0.9.0 und als Post-Prozessor "Shell-local", um ein Skript auszuführen. Das Problem ist, dass das Shell-Skript für jedes generierte Artefakt (.vmdk, .vmx usw.) ausgeführt wird und ich den Grund nicht kenne.Fügen Sie einen "Shell-lokalen" Post-Prozessor hinzu, aber führen Sie oft

Der Quellcode:

{ 
    "variables": { 
     "root_password": "pass", 
     "output_directory": "output/centos6-aufs-master-slave-vmw" 
    }, 
    "builders": [ 
     { 
      "type": "vmware-iso", 
      "name": "centos6-aufs-master-slave-vmw", 

      "iso_url": "http://myrepo/software/isos/CentOS-6.5-x86_64-minimal.iso", 
      "iso_checksum": "ee3c7e96ad0a33d8af787acbf6d54e56", 
      "iso_checksum_type": "md5", 

      "ssh_username": "root", 
      "ssh_password": "{{user `root_password`}}", 
      "ssh_port": 22, 
      "ssh_wait_timeout": "10000s", 

      "shutdown_command": "shutdown -P now", 
      "boot_command": [ 
       "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/al-master-slave-ks.cfg<enter><wait>" 
      ], 

      "boot_wait": "10s", 

      "disk_size": 51200, 
      "disk_type_id": "0", 

      "format": "ovf", 

      "guest_os_type": "rhel6-64", 
      "tools_upload_flavor": "linux", 

      "http_directory": "http", 

      "output_directory": "{{user `output_directory`}}", 

      "vmx_data": { 
       "memsize": "2048", 
       "numvcpus": "1", 
       "cpuid.coresPerSocket": "1" 
      } 
     } 
    ], 
    "post-processors": [ 
     { 
      "type": "shell-local", 
      "only": ["centos6-aufs-master-slave"], 
      "inline": ["cd scripts","./vmx-to-ova.sh"], 
      "environment_vars": ["PACKER_OUTPUT_DIRECTORY=/home/myuser/projects/IT/packer-project/output/centos6-aufs-master-slave-vmw"] 
     } 
    ] 
} 

Antwort

1

Ihr Postprozessor pro Artefakt einmal ausgeführt wird. Verwenden Sie artifice Postprozessor, um die Artefaktliste zu überschreiben, wodurch der Shell-lokale Postprozessor gezwungen wird, das ausgewählte Artefakt zu verwenden. Zum Beispiel:

"post-processors": [ 
    [ 
    { 
     "type": "artifice", 
     "only": ["centos6-aufs-master-slave-vmw"], 
     "files": ["{{user `output_vmw_directory`}}/centos6-aufs-master-slave-vmw.vmx"] 
    }, 
    { 
     "type": "shell-local", 
     "only": ["centos6-aufs-master-slave-vmw"], 
     "scripts": [ 
     "scripts/vmx-to-ova.sh" 
     ], 
     "environment_vars": ["PACKER_OUTPUT_DIRECTORY=/home/myuser/projects/IT/packer-project/centos6-aufs-master-slave/{{user `output_vmw_directory`}}"] 
    } 
    ] 
] 

Der Doc: https://www.packer.io/docs/post-processors/artifice.html