Fwd: Inconsistencies between juju debug-hooks and "normal" hook environment

Merlijn Sebrechts merlijn.sebrechts at gmail.com
Tue Oct 6 14:06:44 UTC 2015


Hi Matt


Thank you for your response. It was nice seeing you too!

Let me explain my two, maybe related problems a bit more:


1. Home directory is different between debug and non-debug hook context.

   - Using the manual provider.
   - When deploying a Charm, the install hook is run as the "root" user.* "echo
   ~" prints "/root".*
   - When the install hook crashes, I connect to the unit using
   `debug-hooks` and restart the install hook as you described using  'juju
   resolved --retry unit/#'. After a while, tmux shows "[unit/0] 0:bash-
   1:install* " at the bottom and cwd is '/var/lib/juju/agents/unit-0/charm'.
   As I understand, I am now in the hook context, right? *However, "echo ~"
   prints "/home/ubuntu".* Even though the current user is root.



2. Something causes "juju init" to fail in non-debug hook context and
succeeds in debug hook context.


   - Using manual provider
   - Executing `juju init` or `juju generate-config` in a hook results in
   the error message `error: cannot determine juju home, required
   environment variables are not set`
   - Executing `juju init` or `juju generate-config` in the hook context
   using  `debug-hooks` and  'juju resolved --retry unit/#` succeeds.


My current workaround is to generate the initial juju config myself and not
use "juju generate-config". However, I'm not sure if this behavior is
intentional or a bug.


Thanks in advance!


2015-10-06 15:37 GMT+02:00 Matt Bruzek <matthew.bruzek at canonical.com>:

> Hell again Merlijn,
>
> It was nice to see you at the Charmer summit!  This is a very interesting
> use of Juju.
>
> What you are seeing is what we call a "hook context".  Hooks execute with
> root authority and have certain environment variables are set. This is so
> Juju commands and tools work correctly.  The debug-hooks command puts you
> into a "hook context" when you run  'juju resolved --retry unit/#'
>
> As I wrote all hooks are executed with these environment variables set.
> If you are running the install script manually outside of a hook context
> these environment variables would not be set.
>
> There is more information about the environment variables here:
>
> https://jujucharms.com/docs/devel/authors-hook-environment
>
> However, I don't see "JUJU_HOME" listed on this page. Perhaps you could
> give me more information on what variable is causing a problem and perhaps
> your hooks could set those values in the case where the script runs
> manually.
>
> Cheers!
>
>    - Matt Bruzek <matthew.bruzek at canonical.com>
>
> On Tue, Oct 6, 2015 at 5:07 AM, Merlijn Sebrechts <
> merlijn.sebrechts at gmail.com> wrote:
>
>> Hi
>>
>>
>> I'm developing a Charm that installs the Juju client, among other things.
>> I'm having some trouble getting this to work. When I use juju debug-hooks
>> and manually run the install hook, everything works fine. However, when the
>> hook is executed by Juju automatically, I get strange errors such as
>> "error: cannot determine juju home, required environment variables are not
>> set"
>>
>> Both the debug-hooks and the normal hook environment execute as root.
>> However, a lot of env vars are different, like the home dir.
>>
>> Debug-hooks:
>>     echo ~ : /home/ubuntu
>> hook env:
>>     echo ~: /root
>>
>> Is this intentional? This causes a lot of bugs that cannot be reproduced
>> by debug-hooks. Is there a way to solve  "error: cannot determine juju
>> home, required environment variables are not set"?
>>
>>
>>
>> Kind regards
>> Merlijn Sebrechts
>>
>> --
>> Juju mailing list
>> Juju at lists.ubuntu.com
>> Modify settings or unsubscribe at:
>> https://lists.ubuntu.com/mailman/listinfo/juju
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20151006/009d1bf1/attachment.html>


More information about the Juju mailing list