- From: AJ Christensen <
>
- To: chef <
>
- Subject: [chef] Re: Re: Re: Re: How to I install a package as root
- Date: Mon, 27 May 2013 10:08:32 +1200
Hey David,
Have you considered splitting this script into multiple resources?
One to fetch the 'install-ubuntu-precise' script (remote_file), an
execute resource to invoke it; the python_pip resource and another
execute for fluentd?
Aside, it looks like the 'install-ubuntu-precise' script is doing some
kind of check (or something!) that the mixlib-shellout environment
that the shell command is executed with doesn't account for (phew)!
I checked the script itself and you should be able to model the entire
thing (correctly) as Chef resources.
Here is an example to get you started:
https://gist.github.com/fujin/29b14d15f318918c562d
Cheers,
AJ
On 27 May 2013 10:00, David Montgomery
<
>
wrote:
>
Hi,
>
>
I am running chef client as root else the entire bootstrap would fail.
>
>
>
On Mon, May 27, 2013 at 5:54 AM, Lamont Granquist
>
<
>
>
wrote:
>
>
>
>
>
> The user attribute just gets passed through to mixlib-shellout which sets
>
> Process.{euid,uid} to the user (most likely just setreuid(2) getting
>
> directly called by ruby). If chef-client itself is not running as root,
>
> this is unlikely to work -- it works going from root to other users because
>
> root can switch to anyone.
>
>
>
> The easiest solution is to run chef-client (or chef-solo) as root and to
>
> use sudo to invoke it: "sudo chef-client"
>
>
>
> If the client isn't running as root, then /etc/sudoers needs to be setup
>
> so that the user running chef-client can execute pip and fluentd as root
>
> with the NOPASSWD setting so that the user isn't prompted for a password.
>
> Trying to be this fine-grained is foolish, though, since once you've
>
> allowed
>
> 'pip install' you can probably backdoor python and get root on the box
>
> fairly easily. The user trying to do this install must, therefore,
>
> inherently be trusted, and so the easiest way to solve the problem is to
>
> run
>
> chef itself as root.
>
>
>
>
>
> On 5/26/13 2:36 PM, Cassiano Leal wrote:
>
>
>
> You should probably not use sudo in the script, and pass the user resource
>
> attribute to bash:
>
>
>
> bash "compile_td-agent" do
>
> cwd "#{Chef::Config[:file_cache_path]}"
>
> code <<-EOH
>
> curl -L http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh |
>
> sh
>
> pip install fluent-logger
>
> fluentd --setup /etc/fluent
>
> EOH
>
> user 'root'
>
> not_if
>
> {File.exists?("#{Chef::Config[:file_cache_path]}/fluent_install")}
>
> end
>
>
>
>
>
> - cassiano
>
>
>
> On Sunday, May 26, 2013 at 18:02, David Montgomery wrote:
>
>
>
> Hi,
>
>
>
> I am getting this error that is rather annoying.....
>
>
>
> Of course not using chef and I run the code ..yup install works. What to I
>
> have to do to get chef to install . I am running ubuntu on ec2.
>
>
>
>
>
>
>
> bash "compile_td-agent" do
>
> cwd "#{Chef::Config[:file_cache_path]}"
>
> code <<-EOH
>
> curl -L http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh |
>
> sh
>
> sudo pip install fluent-logger
>
> sudo fluentd --setup /etc/fluent
>
> EOH
>
> not_if
>
> {File.exists?("#{Chef::Config[:file_cache_path]}/fluent_install")}
>
> end
>
>
>
>
>
> ================================================================================
>
> Error executing action `run` on resource 'bash[compile_td-agent]'
>
>
>
> ================================================================================
>
>
>
>
>
> Mixlib::ShellOut::ShellCommandFailed
>
> ------------------------------------
>
> Expected process to exit with [0], but received '1'
>
> ---- Begin output of "bash" "/tmp/chef-script20130526-7026-1f02aju" ----
>
> STDOUT: This script requires superuser access to install apt packages.
>
> You will be prompted for your password by sudo.
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise Release.gpg
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates
>
> Release.gpg
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise Release
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates Release
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/main Sources
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/universe Sources
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/main amd64
>
> Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/universe amd64
>
> Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/main i386
>
> Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/universe i386
>
> Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/main
>
> TranslationIndex
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/universe
>
> TranslationIndex
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/main
>
> Sources
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/universe
>
> Sources
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/main
>
> amd64 Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/universe
>
> amd64 Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/main i386
>
> Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/universe
>
> i386 Packages
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/main
>
> TranslationIndex
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/universe
>
> TranslationIndex
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/main
>
> Translation-en
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise/universe
>
> Translation-en
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/main
>
> Translation-en
>
> Hit http://ap-southeast-1.ec2.archive.ubuntu.com precise-updates/universe
>
> Translation-en
>
> Hit http://security.ubuntu.com precise-security Release.gpg
>
> Hit http://security.ubuntu.com precise-security Release
>
> Ign http://packages.treasure-data.com precise Release.gpg
>
> Hit http://security.ubuntu.com precise-security/main Sources
>
> Hit http://packages.treasure-data.com precise Release
>
> Hit http://security.ubuntu.com precise-security/universe Sources
>
> Ign http://packages.treasure-data.com precise/contrib amd64
>
> Packages/DiffIndex
>
> Hit http://security.ubuntu.com precise-security/main amd64 Packages
>
> Ign http://packages.treasure-data.com precise/contrib i386
>
> Packages/DiffIndex
>
> Hit http://security.ubuntu.com precise-security/universe amd64 Packages
>
> Ign http://packages.treasure-data.com precise/contrib TranslationIndex
>
> Hit http://security.ubuntu.com precise-security/main i386 Packages
>
> Hit http://security.ubuntu.com precise-security/universe i386 Packages
>
> Hit http://security.ubuntu.com precise-security/main TranslationIndex
>
> Hit http://security.ubuntu.com precise-security/universe TranslationIndex
>
> Hit http://security.ubuntu.com precise-security/main Translation-en
>
> Hit http://security.ubuntu.com precise-security/universe Translation-en
>
> Hit http://packages.treasure-data.com precise/contrib amd64 Packages
>
> Hit http://packages.treasure-data.com precise/contrib i386 Packages
>
> Ign http://packages.treasure-data.com precise/contrib Translation-en
>
> Reading package lists...
>
> Reading package lists...
>
> Building dependency tree...
>
> Reading state information...
>
> td-agent is already the newest version.
>
> 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
>
> Requirement already satisfied (use --upgrade to upgrade): fluent-logger in
>
> /usr/local/lib/python2.7/dist-packages
>
> Requirement already satisfied (use --upgrade to upgrade): msgpack-python
>
> in /usr/local/lib/python2.7/dist-packages (from fluent-logger)
>
> Cleaning up...
>
> STDERR: % Total % Received % Xferd Average Speed Time Time
>
> Time Current
>
> Dload Upload Total Spent Left
>
> Speed
>
> 100 483 100 483 0 0 605 0 --:--:-- --:--:-- --:--:--
>
> 1568
>
> sudo: fluentd: command not found
>
> ---- End output of "bash" "/tmp/chef-script20130526-7026-1f02aju" ----
>
> Ran "bash" "/tmp/chef-script20130526-7026-1f02aju" returned 1
>
>
>
>
>
> Resource Declaration:
>
> ---------------------
>
> # In /var/chef/cache/cookbooks/fluentd/recipes/default.rb
>
>
>
> 10: bash "compile_td-agent" do
>
> 11: user "root"
>
> 12: cwd "#{Chef::Config[:file_cache_path]}"
>
> 13: code <<-EOH
>
> 14: curl -L
>
> http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh | sh
>
> 15: sudo pip install fluent-logger
>
> 16: sudo fluentd --setup /etc/fluent
>
> 17: EOH
>
> 18: not_if
>
> {File.exists?("#{Chef::Config[:file_cache_path]}/fluent_install")}
>
> 19: end
>
> 20:
>
>
>
>
>
>
>
> Compiled Resource:
>
> ------------------
>
> # Declared in /var/chef/cache/cookbooks/fluentd/recipes/default.rb:10:in
>
> `from_file'
>
>
>
> bash("compile_td-agent") do
>
> action "run"
>
> retries 0
>
> retry_delay 2
>
> command "\"bash\" \"/tmp/chef-script20130526-7026-1f02aju\""
>
> backup 5
>
> cwd "/var/chef/cache"
>
> returns 0
>
> user "root"
>
> code " curl -L
>
> http://toolbelt.treasure-data.com/sh/install-ubuntu-precise.sh | sh\n sudo
>
> pip install fluent-logger\n sudo fluentd --setup /etc/fluent\n"
>
> interpreter "bash"
>
> cookbook_name "fluentd"
>
> recipe_name "default"
>
> not_if { #code block }
>
> end
>
>
>
>
>
>
>
> [2013-05-26T20:55:07+00:00] INFO: Running queued delayed notifications
>
> before re-raising exception
>
> [2013-05-26T20:55:07+00:00] ERROR: Running exception handlers
>
> [2013-05-26T20:55:07+00:00] ERROR: Creating JSON exception report
>
> [2013-05-26T20:55:07+00:00] FATAL: Saving node information to
>
> /var/chef/cache/failed-run-data.json
>
> [2013-05-26T20:55:07+00:00] ERROR: Exception handlers complete
>
> Chef Client failed. 3 resources updated
>
> [2013-05-26T20:55:07+00:00] FATAL: Stacktrace dumped to
>
> /var/chef/cache/chef-stacktrace.out
>
> [2013-05-26T20:55:07+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed:
>
> bash[compile_td-agent] (fluentd::default line 10) had an error:
>
> Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0],
>
> but
>
> received '1'
>
>
>
>
>
>
>
>
>
Archive powered by MHonArc 2.6.16.