User Tools

Site Tools


packages:chef-server

This is an old revision of the document!


Installing Opscode Chef Server via omnibus packaging

As prepackaged chef-server is not available for PLD Linux, let's try to build the omnibus package ourself.

Suggestion is to run this in a Vagrant box, that you can discard later as the gems are installed outside rpm package manager.

Pre-requisites

You need more space to build and install:

# lvextend --size=3G /dev/sys/rootfs
# xfs_growfs /

Install packages:

# poldek -u --noask ruby-bundler git-core ruby-devel glibc-devel libffi-devel libstdc++-devel patch bzip2 lsb-release rpm-build ncurses-devel 

Building

Checkout omnibus-chef-server:

$ git clone https://github.com/opscode/omnibus-chef-server.git
$ cd omnibus-chef-server

Bugfixes

Make bugfixes:

  1. libiconv
    sed -i -e 's,a1f25d7ab6930826822323b373b8298bff02fed1,4f2ee0a9d563acbeea14af3d8d84e2d2e0e53fb4,' Gemfile.lock
  2. makeself
        $ wget -O package-scripts/chef-server/makeselfinst https://raw.github.com/opscode/omnibus-chef/master/package-scripts/chef/makeselfinst
  3. patch omnibus gem with omnibus-pld.patch

Install bundle binstubs:

$ bundle install --binstubs

Make cachedir so could run as non-root:

$ sudo install -o $USER -d /var/cache/omnibus /opt/chef-server

Create a platform-specific package using the build project command:

$ bin/omnibus build project chef-server

You may later preserve cache dirs to be shared with OS, add the mappings to your Vagrantfile

config.vm.synced_folder "cache/omnibus", "/var/cache/omnibus"

Install

Currently the fpm produced .rpm does not package directories, so you should install rpm skipping directory deps:

# (umask 2; rpm -Uhv --define '_check_dirname_deps 0' chef-server-11.0.8+20130618223354.git.14.1853585-1.pld.3.0.x86_64.rpm)

You need to use shadow instead of pwdutils as gpasswd doesn't have -M option:

---- Begin output of gpasswd -M chef_server chef_server ----
STDOUT:
STDERR: gpasswd: invalid option -- 'M'
Try `gpasswd --help' or `gpasswd --usage' for more information.
---- End output of gpasswd -M chef_server chef_server ----

If using vserver without initstyle=plain, you need to make init q silent:

# init q
init: /dev/initctl: No such file or directory
# touch /dev/initctl
# init q

also, postgresql needs shared memory, so configure it fstab:

/etc/vservers/NAME/fstab
none    /dev/shm    tmpfs   mode=1777,nosuid,nodev,noexec       0 0 

and also:

mkdir -p /etc/vservers/chef-server/sysctl/{0,1}
echo kernel.shmall > /etc/vservers/chef-server/sysctl/0/setting
echo 600000000 > /etc/vservers/chef-server/sysctl/0/value
echo kernel.shmmax > /etc/vservers/chef-server/sysctl/1/setting
echo 600000000 > /etc/vservers/chef-server/sysctl/1/value

After that, follow onscreen instructions:

# sudo chef-server-ctl reconfigure

Meanwhile when the progress stops, it is expecting init to start /opt/chef-server/embedded/bin/runsvdir-start, but without init, nothing processes /etc/inittab, so start it manually or use initstyle=plain.

Configure

To change https certificate, have look into /var/opt/chef-server/nginx/ca

packages/chef-server.1373556286.txt.gz · Last modified: 2013-07-11 17:24 by glen