class Kitchen::Yansible::Tools::Install::RHEL

Public Instance Methods

install_python() click to toggle source
# File lib/kitchen-yansible/tools/install/rhel.rb, line 125
def install_python
  """
    installPython () {
      echo 'Checking Python installation.'
      searchAlternatives 'python'
      #{command_exists('python')} || {
        echo 'Python is not installed, attempt to use package manager.'
        package=$(#{package_manager} search -q python|grep '^python\\([0-9\\.]\\+\\)\\?\\.'|sort -r|head -n1|awk '{print $1}')
        echo \"Will try to install '${package}' package.\"
        #{install_package} ${package}
        echo 'Checking for installed alternatives.'
        #{command_exists('python')} || {
          searchAlternatives 'python'
        }
      }
      #{command_exists('python')} || {
        echo \"===> Couldn't determine Python executable - exiting now! <===\"
        exit 1
      }
    }
  """
end
install_ruby() click to toggle source
# File lib/kitchen-yansible/tools/install/rhel.rb, line 148
def install_ruby
  """
    installRuby () {
      echo 'Checking Ruby installation.'
      searchAlternatives 'ruby'
      #{command_exists('ruby')} || {
        echo 'Ruby is not installed, attempt to use package manager.'
        package=$(#{package_manager} search -q ruby 2> /dev/null|grep '^ruby\\([0-9\\.]\\+\\)\\?\\.'|sort -r|head -n1|awk '{print $1}')
        echo \"Will try to install '${package}' package.\"
        #{install_package} ${package}
        echo 'Checking for installed alternatives.'
        #{command_exists('ruby')} || {
          searchAlternatives 'ruby'
        }
        grep 'gem: --no-rdoc --no-ri -​-no-document' /etc/gemrc &> /dev/null || {
          #{sudo('echo')} 'gem: --no-rdoc --no-ri -​-no-document' | #{sudo('tee')} /etc/gemrc
        }
      }
      #{command_exists('ruby')} || {
        echo \"===> Couldn't determine Ruby executable - exiting now! <===\"
        exit 1
      }
      echo 'Install Busser'
      #{command_exists('gem')} || {
        #{install_package} rubygems
      }
      #{command_exists('rdoc')} || {
        #{install_package} rubygem-rdoc
      }
      #{sudo('gem')} list | grep busser || {
        #{sudo('gem')} install busser
      }
      test -d /opt/chef/embedded/bin || {
        #{sudo('mkdir')} -p /opt/chef/embedded/bin
      }
      echo 'Making links for Chef'
      for binary in ruby gem busser; do
        test -L /opt/chef/embedded/bin/${binary} || {
          #{sudo('ln')} -sf \"$(command -v ${binary})\" /opt/chef/embedded/bin/${binary}
        }
      done
    }
  """
end
install_virtualenv() click to toggle source
# File lib/kitchen-yansible/tools/install/rhel.rb, line 193
def install_virtualenv
  """
    installVirtualenv () {
      echo 'Checking Virtualenv installation.'
      searchAlternatives 'virtualenv'
      #{command_exists('virtualenv')} || {
        echo 'Virtualenv is not installed, will try to guess its name.'
        if [ $(#{package_manager} search virtualenv|grep '^python.*-virtualenv'|wc -l) -gt 1 ]; then
          venvPackage=python$(#{get_python_version})-virtualenv
          echo \"Will try to install '${venvPackage}' package.\"
          #{install_package} ${venvPackage}
        else
          echo \"Installing via virtual package.\"
          #{install_package} python-virtualenv
        fi

        echo 'Checking for installed alternatives.'
        #{command_exists('virtualenv')} || {
          searchAlternatives 'virtualenv'
        }
      }
      #{command_exists('virtualenv')} || {
        echo \"===> Couldn't install Virtualenv - exiting now! <===\"
        exit 1
      }
    }
  """
end
preinstall_command() click to toggle source
# File lib/kitchen-yansible/tools/install/rhel.rb, line 26
def preinstall_command
  """
    #{update_path}
    #{update_cache}

    installPackage () {
      package=$1
      #{package_manager} -q info ${package} 2>/dev/null|grep installed &>/dev/null || #{install_package} ${package}
    }

    enableSCLPackage () {
      package=$1
      echo \"Enable ${package}\"
      grep \"/opt/rh/${package}/enable\" /etc/profile.d/${package}.sh &> /dev/null || {
        #{sudo('echo')} \"source /opt/rh/${package}/enable\"| #{sudo('tee')} -a /etc/profile.d/${package}.sh
      }
      source /opt/rh/${package}/enable
    }

    installRubySCL () {
      RUBY_PACKAGE=$(#{package_manager} search -q ruby|grep '^rh-ruby\\([0-9\\.]\\+\\)\\?\\.'|sort -r|head -n1|awk '{print $1}'|awk -F'.' '{print $1}')
      installPackage ${RUBY_PACKAGE}
      RUBY_VERSION=\"$(#{package_manager} info ${RUBY_PACKAGE}|grep -i version|awk '{print $3}')\"
      test -L /usr/lib64/libruby.so.${RUBY_VERSION} || {
        #{sudo('ln')} -sf /opt/rh/${RUBY_PACKAGE}/root/usr/lib64/libruby.so.${RUBY_VERSION} \\
          /usr/lib64/libruby.so.${RUBY_VERSION}
      }
      #{ruby_alternatives('/usr/local/bin', "/opt/rh/${RUBY_PACKAGE}/root/usr/bin")}
      enableSCLPackage ${RUBY_PACKAGE}
    }

    installPythonSCL () {
      PYTHON_PACKAGE='python27 python27-python-virtualenv'
      installPackage ${PYTHON_PACKAGE}

      #{alternatives_command} --install /usr/local/bin/python python /opt/rh/python27/root/usr/bin/python 100
      #{alternatives_command} --set python /opt/rh/python27/root/usr/bin/python

      #{sudo('grep')} 'ANSIBLE_PYTHON_INTERPRETER' /etc/profile.d/ansible.sh &> /dev/null || {
        #{sudo('echo')} \"export ANSIBLE_PYTHON_INTERPRETER=/usr/local/bin/python\"| #{sudo('tee')} -a /etc/profile.d/ansible.sh
      }
      #{sudo('grep')} XDG_DATA_DIRS /etc/sudoers.d/ansible &> /dev/null || {
        #{sudo('echo')} 'Defaults    env_keep += \"XDG_DATA_DIRS PKG_CONFIG_PATH ANSIBLE_PYTHON_INTERPRETER\"' | #{sudo('tee')} -a /etc/sudoers.d/ansible
      }

      test -L /usr/lib64/libpython2.7.so.1.0 || {
        #{sudo('ln')} -sf /opt/rh/python27/root/usr/lib64/libpython2.7.so.1.0 \\
          /usr/lib64/libpython2.7.so.1.0
      }
      test -L /usr/lib64/libpython2.7.so || {
        #{sudo('ln')} -sf /usr/lib64/libpython2.7.so.1.0 /usr/lib64/libpython2.7.so
      }

      enableSCLPackage 'python27'
    }

    preInstall () {
      RHEL_VERSION=$(test -f /etc/system-release-cpe && awk -F':' '{print $5}' /etc/system-release-cpe || echo '0')
      RHEL_DISTR=$(test -f /etc/system-release-cpe && awk -F':' '{print $3}' /etc/system-release-cpe || echo '0')

      # Sanitize CPE Info
      case ${RHEL_DISTR} in
        amazon)
          RHEL_VERSION=6
          ;;
        o)
          RHEL_DISTR=amazon
          RHEL_VERSION=7
          ;;
        *)
          ;;
      esac

      if [[ ${RHEL_VERSION} -eq 6 || ${RHEL_VERSION} -eq 7 ]]; then
        echo \"We are going to use SCL repository for Python and Ruby installation\"
        echo \"Working with ${RHEL_DISTR} ${RHEL_VERSION}\"
        case ${RHEL_DISTR} in
          centos)
            installPackage centos-release-scl-rh
            installPythonSCL
            installRubySCL
            ;;
          oracle)
            installPackage oracle-softwarecollection-release-el${RHEL_VERSION}
            installRubySCL
            if [[ ${RHEL_VERSION} -eq 6 ]]; then
              installPythonSCL
            fi
            ;;
          *)
            echo \"Unsupported RHEL SCL family distribution - ${RHEL_DISTR} ${RHEL_VERSION}\"
            ;;
        esac
      fi
      updatePath
    }
  """
end