Bug 1569115 - 3.9 installer requires yum-utils on nodes
Summary: 3.9 installer requires yum-utils on nodes
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: Installer
Version: 3.9.0
Hardware: All
OS: Linux
Target Milestone: ---
: 3.9.z
Assignee: Michael Gugino
QA Contact: Johnny Liu
Depends On:
TreeView+ depends on / blocked
Reported: 2018-04-18 15:50 UTC by Brian J. Beaudoin
Modified: 2018-06-04 16:29 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2018-04-18 18:40:48 UTC
Target Upstream Version:

Attachments (Terms of Use)
Add the missing yum-utils package to the list of base packages to install (623 bytes, patch)
2018-04-18 16:06 UTC, Brian J. Beaudoin
no flags Details | Diff

Description Brian J. Beaudoin 2018-04-18 15:50:53 UTC
Description of problem:

When the package `yum-utils` is not included in the default or minimal install recommended by the prerequisites and is not covered in the host preparation steps. This leads to the deploy_cluster.yml playbook failing due to the `repoquery` command missing on the nodes.

Version-Release number of the following components:

  config file = /home/bbeaudoin/.ansible.cfg
  configured module search path = [u'/home/bbeaudoin/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Feb 20 2018, 09:19:12) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

How reproducible:

Deploy the base OS as recommended in the documenation: "RHEL 7.3 or 7.4 with the "Minimal" installation option and the latest packages from the Extras channel, or RHEL Atomic Host 7.4.5 or later." (https://docs.openshift.com/container-platform/3.9/install_config/install/prerequisites.html)

Then, follow the host-preparation steps as documented at https://docs.openshift.com/container-platform/3.9/install_config/install/host_preparation.html

Steps to Reproduce:
1. Deploy the base OS as recommended with the "Minimal" installation option
2. Follow the documented host-preparation steps according to the documentation
3. Start the installation using openshift-ansible/playbooks/deploy_cluster.yml

Actual results:
The installation fails due to /usr/bin/repoquery not being installed.

Expected results:
The `yum-utils` package would have been deployed as a dependency to `openshift-ansible`, or be in the documentation under the host prerequisites, or deployed as part of the installation prior to invocation.

Additional info:
TASK [openshift_version : Get available atomic-openshift version] ***********************************************************************
task path: /usr/share/ansible/openshift-ansible/roles/openshift_version/tasks/check_available_rpms.yml:2
Using module file /usr/share/ansible/openshift-ansible/roles/lib_utils/library/repoquery.py

From the module file, the following command was indicated:
    372     def _repoquery_cmd(self, cmd, output=False, output_type='json'):
    373         '''Base command for repoquery '''
    374         cmds = ['/usr/bin/repoquery', '--plugins', '--quiet']

The end result is failed unless `yum-utils` is installed and present on the machines.
fatal: [node1.example.com]: FAILED! => {
    "changed": false, 
    "module_stderr": "Shared connection to node1.example.com closed.\r\n", 
    "module_stdout": "Traceback (most recent call last):\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 642, in <module>\r\n    main()\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 632, in main\r\n    rval = Repoquery.run_ansible(module.params, module.check_mode)\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 588, in run_ansible\r\n    results = repoquery.repoquery()\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 547, in repoquery\r\n    rval = self._repoquery_cmd(repoquery_cmd, True, 'raw')\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 385, in _repoquery_cmd\r\n    returncode, stdout, stderr = _run(cmds)\r\n  File \"/tmp/ansible_mlSgM_/ansible_module_repoquery.py\", line 356, in _run\r\n    stderr=subprocess.PIPE)\r\n  File \"/usr/lib64/python2.7/subprocess.py\", line 711, in __init__\r\n    errread, errwrite)\r\n  File \"/usr/lib64/python2.7/subprocess.py\", line 1327, in _execute_child\r\n    raise child_exception\r\nOSError: [Errno 2] No such file or directory\r\n", 
    "msg": "MODULE FAILURE", 
    "rc": 0

Comment 1 Brian J. Beaudoin 2018-04-18 16:06:58 UTC
Created attachment 1423655 [details]
Add the missing yum-utils package to the list of base packages to install

As the @base group is not expected, the documentation enumerates base packages to install to the nodes. It may be easiest to update the host preparation document.

Comment 2 Scott Dodson 2018-04-18 18:19:44 UTC
Need to add this early in our prerequisites.yml

Comment 3 Michael Gugino 2018-04-18 18:40:48 UTC
Users must run the prerequisites.yml playbook before running deploy cluster.  We install that package there.

Comment 4 Brian J. Beaudoin 2018-04-18 19:21:37 UTC
Link to installation instructions referencing the prerequities.yml playbook:


As stands it's 2372 lines down in the unprocessed advanced_install.adoc. Admittedly it was my fault (TL;DR). Even the table of contents in that section is daunting.

We might want to reference the prerequisite playbook somewhat earlier.

Comment 5 Michael Gugino 2018-04-18 19:25:38 UTC
I agree, we need a page that is 1000's of lines long.  We need a 1 page, here's an inventory, here's what you need to run guide.

Note You need to log in before you can comment on or make changes to this bug.