Skip to content

Instantly share code, notes, and snippets.

@hoonetorg
Created July 18, 2018 12:58
Show Gist options
  • Save hoonetorg/d908ea1f22b79fe4d83890b36be92702 to your computer and use it in GitHub Desktop.
Save hoonetorg/d908ea1f22b79fe4d83890b36be92702 to your computer and use it in GitHub Desktop.
addon_installgems_script_for_opennebula_5_6_0
#!/bin/bash
#working for one 5.6.0 opennebula-ruby rpm package
# a repo named *opennebula* must exist containing opennebula-ruby-5.6.0
# oneadmin user must be available
# cleanup last build
rm /usr/share/one/Gemfile
yum -y autoremove opennebula-ruby
rm /etc/yum.localrepos.d/epel.repo
yum -y autoremove epel-release
yum -y autoremove rubygem-nokogiri rubygem-bundler
yum -y autoremove createrepo redhat-lsb rpm-build
yum -y autoremove ruby-devel gcc
yum -y autoremove gcc rubygem-rake libxml2-devel libxslt-devel patch gcc-c++ sqlite-devel curl-devel mysql-devel openssl-devel ruby-devel make
yum -y autoremove ruby\*
rm -Rf /etc/sudoers.d/oneadmin
rm -Rf /var/lib/one/addon-installgems /var/lib/one/bin /var/lib/one/.gem
#install deps
yum -y --disablerepo \*opennebula\* install git
#install nokogiri required for opennebula-ruby
yum -y --disablerepo \*opennebula\* install epel-release
#only required for local builds at hoonet.org, but doesnt hurt when it fails
cp /etc/yum.repos.d/epel.repo /etc/yum.localrepos.d/
yum -y --disablerepo \*opennebula\* install rubygem-nokogiri
rm /etc/yum.localrepos.d/epel.repo
yum -y autoremove epel-release
yum -y --disablerepo \*opennebula\* install rubygem-bundler
yum -y --disablerepo \*opennebula\* install createrepo redhat-lsb rpm-build
#install_gems and Gemfile
yum -y install opennebula-ruby
#fix f#!<ing nokogiri error - dirty hack
perl -pi -e "s/^(\s*)gem \'nokogiri\'\s*$/\1gem \'nokogiri\', \'< 1.6.9\'\n/g" /usr/share/one/Gemfile
#sudo rules for oneadmin
echo 'oneadmin ALL= (ALL) NOPASSWD: /usr/bin/yum install *' >/etc/sudoers.d/oneadmin
echo 'oneadmin ALL= (ALL) NOPASSWD: /usr/bin/apt-get install *' >>/etc/sudoers.d/oneadmin
echo 'oneadmin ALL= (ALL) NOPASSWD: /usr/bin/gem install fpm mini_portile2 pkg-config' >>/etc/sudoers.d/oneadmin
#clone addon-installgems
su - oneadmin -c 'cd ~ && git clone https://github.com/OpenNebula/addon-installgems.git'
# fix that created rpms do install binaries to /var/lib/one/bin, we want them in /usr/bin - dirty hack
su - oneadmin -c 'cd ~/addon-installgems && perl -pi -e "s#fpm --prefix#fpm --gem-bin-path /usr/bin --prefix#g" gem_packages.py'
#build
su - oneadmin -c 'cd ~/addon-installgems && python gem_packages.py -d' 2>&1 2>&1 |tee script.log
# cleanup last build
rm /usr/share/one/Gemfile
yum -y autoremove opennebula-ruby
rm /etc/yum.localrepos.d/epel.repo
yum -y autoremove epel-release
yum -y autoremove rubygem-nokogiri rubygem-bundler
yum -y autoremove createrepo redhat-lsb rpm-build
yum -y autoremove ruby-devel gcc
yum -y autoremove gcc rubygem-rake libxml2-devel libxslt-devel patch gcc-c++ sqlite-devel curl-devel mysql-devel openssl-devel ruby-devel make
yum -y autoremove ruby\*
rm -Rf /etc/sudoers.d/oneadmin
rm -Rf /var/lib/one/addon-installgems /var/lib/one/bin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment