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: openshift-ansible-3.9.14-1.git.3.c62bc34.el7.noarch ansible-2.4.3.0-1.el7ae.noarch ansible 2.4.3.0 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 } ~~~
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.
Need to add this early in our prerequisites.yml
Users must run the prerequisites.yml playbook before running deploy cluster. We install that package there.
Link to installation instructions referencing the prerequities.yml playbook: https://docs.openshift.com/container-platform/3.9/install_config/install/advanced_install.html#running-the-advanced-installation-rpm 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.
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.