2016-01-15 1 views
0

Je veux assigner une variable système dans la recette de chef
J'utilise le code suivant:Quelle est la meilleure façon d'affecter une variable d'environnement dans une recette de chef?

env 'DEF_ADDR' do 
    value "http://#{node['ipaddress']}" 
end 

Cependant, je reçois l'erreur ci-dessous sur l'exécution de la recette

ERROR: Cannot find a resource for env on redhat version 6.6

+0

Quel est le problème que vous voulez réellement atteindre? Vous voulez exécuter une commande? – StephenKing

+0

atteindre -> résoudre :-) – StephenKing

+0

oui - tout dépend de la façon dont vous voulez plus tard * utiliser * la variable d'environnement – gsaslis

Répondre

0

Le env resource semble être uniquement pour les environnements Windows:

Use the env resource to manage environment keys in Microsoft Windows.

Si vous souhaitez définir un environnement variables nnement seulement pour le chef Run, vous pouvez utiliser Ruby:

ENV['DEF_ADDR'] = "http://#{node['ipaddress']}" 

Mais ce ne sera accessible pendant le chef Run.

Si vous souhaitez définir une variable d'environnement système, peut-être le livre de recettes etc_environment pourrait vous aider avec ça:

node.default['etc_environment']['DEF_ADDR'] = "http://#{node['ipaddress']}" 
1

Il n'y a pas de manière cohérente pour définir les variables globales de l'environnement sous Unix. Certaines distributions supportent le shell de niveau global via des choses comme /etc/profile.d et autres, mais cela n'aura aucun effet sur les choses exécutées en dehors d'un shell comme l'exécution directe de SSH ou l'exécution en tant que service.