J'ai du mal à passer le paramètre d'entrée au script de provisionnement du packer. J'ai essayé différentes options mais pas de joie.
L'objectif est mon provision.sh devrait accepter le paramètre d'entrée que j'envoie lors de la construction du packer.
packer build -var role = abc test.json
Je peux obtenir la variable utilisateur dans le fichier json mais je ne peux pas lui transmettre le script de provision. Je dois prendre une décision basée sur le paramètre d'entrée.
J'ai essayé quelque chose comme
"provisioners":
{
"type": "Shell",
"scripts": [
"provision.sh {{user `role`}}"
]
}
Mais la validation du packer lui-même a échoué sans un tel message d'erreur de fichier/répertoire.
Ce serait vraiment utile si quelqu'un pouvait m'aider à ce sujet.
Merci d'avance.
Vous devez utiliser le environment_vars
option, voir la documentation Shell Provisioner - environment_vars .
Exemple:
"provisioners": [
{
"type": "Shell"
"environment_vars": [
"HOSTNAME={{user `vm_name`}}",
"FOO=bar"
],
"scripts": [
"provision.sh"
],
}
]
Si votre script est déjà configuré pour utiliser des arguments; vous devez simplement l'exécuter en tant que inline
plutôt que dans le tableau scripts
.
Pour ce faire, le script doit déjà exister sur le système - vous pouvez le faire en le copiant sur le système avec le provisionneur file
.
"provisioners": [
{
"type": "file",
"source": "scripts/provision.sh",
"destination": "/tmp/provision.sh"
},
{
"type": "Shell",
"inline": [
"chmod u+x /tmp/provision.sh",
"/tmp/provision.sh {{user `vm_name`}}"]
}
]