Hey Folks,

Is there some action we should take to deal with this - in which case can
we raise an lp bug for it. Or do we think there's no action needed?

Matty

On Tue, Oct 6, 2015 at 3:55 PM, Matt Bruzek <[email protected]>
wrote:

> Merlijn,
>
> Now that I see more of what you are doing I have an alternate suggestion.
>
> When you are running 'juju init' use the su command to run as the "ubuntu"
> user.
>
> su - ubuntu -c 'juju init'
>
> Using the su command in this way gives a "login" environment for the user
> "ubuntu".  I wrote a charm (named merlijn) to test this and I saw the error
> you are reporting:
> unit-merlijn2-0[2994]: 2015-10-06 14:35:26 INFO
> unit.merlijn2/0.config-changed logger.go:40 + echo /root
> unit-merlijn2-0[2994]: 2015-10-06 14:35:26 INFO
> unit.merlijn2/0.config-changed logger.go:40 /root
> unit-merlijn2-0[2994]: 2015-10-06 14:35:26 INFO
> unit.merlijn2/0.config-changed logger.go:40 + juju init
> unit-merlijn2-0[2994]: 2015-10-06 14:35:26 INFO
> unit.merlijn2/0.config-changed logger.go:40 error: cannot determine juju
> home, required environment variables are not set
>
> What you were trying to do is create a juju environment for the root user
> (which is not advised) rather you want to create a juju environment for the
> normal (ubuntu) user.
>
> Using the su command I was able to create a juju configuration file:
> 2015-10-06 14:47:10 INFO config-changed + echo /root
> 2015-10-06 14:47:10 INFO config-changed /root
> 2015-10-06 14:47:10 INFO config-changed + su - ubuntu -c 'juju init'
> 2015-10-06 14:47:11 INFO config-changed A boilerplate environment
> configuration file has been written to /home/ubuntu/.juju/environments.yaml.
>
> Likewise if you want to create artifacts for the ubuntu user, use the "su
> - ubuntu" command.
>
> Hope that helps.
>
>
>    - Matt Bruzek <[email protected]>
>
> On Tue, Oct 6, 2015 at 9:30 AM, Cory Johns <[email protected]>
> wrote:
>
>> Merlijn,
>>
>> That is an annoying inconsistency.  It's probably related to debug-hooks
>> bootstrapping itself via `juju ssh` which logs in as the ubuntu user since
>> root ssh is disabled, as well as it being unlikely that the actual hook
>> context is a login shell.
>>
>> I imagine the generate-config error is due to the lack of either $HOME or
>> $JUJU_HOME being set.  I would recommend trying explicitly setting
>> JUJU_HOME=/home/ubuntu before calling generate-config and see if that works
>> around it.
>>
>> I've also created a bug against juju-core for this:
>> https://github.com/juju/juju/issues/3449
>>
>> On Tue, Oct 6, 2015 at 10:06 AM, Merlijn Sebrechts <
>> [email protected]> wrote:
>>
>>>
>>> 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 <[email protected]>:
>>>
>>>> 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 <[email protected]>
>>>>
>>>> On Tue, Oct 6, 2015 at 5:07 AM, Merlijn Sebrechts <
>>>> [email protected]> 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
>>>>> [email protected]
>>>>> Modify settings or unsubscribe at:
>>>>> https://lists.ubuntu.com/mailman/listinfo/juju
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Juju mailing list
>>> [email protected]
>>> Modify settings or unsubscribe at:
>>> https://lists.ubuntu.com/mailman/listinfo/juju
>>>
>>>
>>
>> --
>> Juju mailing list
>> [email protected]
>> Modify settings or unsubscribe at:
>> https://lists.ubuntu.com/mailman/listinfo/juju
>>
>>
>
> --
> Juju mailing list
> [email protected]
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju
>
>
-- 
Juju mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju

Reply via email to