Je veux que ~/.bashrc
soit source
à chaque fois que son contenu change. J'ai créé une classe bashrc avec quelque chose comme ceci :
file { "/root/.bashrc":
ensure => present,
owner => root,
group => root,
mode => 0644,
source => "puppet:///bashrc/root/.bashrc"
}
exec { "root_bashrc":
command => "source /root/.bashrc",
subscribe => File["/root/.bashrc"],
}
mais comme vous le savez, source
est une commande intégrée au shell, c'est pourquoi j'ai reçu l'erreur suivante lors de l'exécution de l'agent :
# puppet agent --no-daemonize --verbose
notice: Starting Puppet client version 2.7.1
info: Caching catalog for svr051-4170
info: Applying configuration version '1311563901'
err: /Stage[main]/Bashrc/Exec[root_bashrc]/returns: change from notrun to 0 failed: Could not find command 'source'
notice: Finished catalog run in 2.28 seconds
notice: Caught INT; calling stop
Y a-t-il une solution de contournement pour cela ?
2 votes
Veuillez nous aider à comprendre ce que vous demandez; est-ce que vous voulez que Puppet inclue le contenu de "/root/.bashrc" chaque fois qu'il utilise la ressource
exec
pour effectuer des changements? Je pense que vous devez ajouter plus de détails sur l'objectif global que vous essayez d'accomplir; la manière dont vous procédez actuellement ne va probablement pas fonctionner.0 votes
+1 pour ce que dit handyman5
0 votes
Désolé si mon message n'est pas assez clair. Je veux dire que je veux exécuter
source ~/.bashrc
lorsque son contenu est modifié (comme lorsque un fichier de configuration est mis à jour, vous voulez redémarrer le service correspondant).0 votes
Il n'a pas de sens de faire cela - vous devrez redémarrer le service qui utilise l'environnement de toute façon (car son environnement est déjà chargé avec l'ancien bashrc)