Назад | Перейти на главную страницу

Ошибка установки OKD при предварительных настройках SELinux с помощью docker

Сейчас это произошло более чем на 12 машинах. Установлены как старые сконфигурированные машины CentOS7, так и новый ISO.

Когда я запускаю установку предварительных требований OKD, перейдите release-3.11, У меня все работает нормально, пока я не займусь задачей

TASK [container_runtime : Fixup SELinux permissions for docker]

где это не удается с этим

{
    "changed": true,
    "cmd": "semanage fcontext -a -e /var/lib/docker/overlay2 \"/var/lib/docker/overlay2\"\n restorecon -R -v \"/var/lib/docker/overlay2\"",
    "delta": "0:00:00.005386",
    "end": "2019-03-22 15:52:19.990999",
    "invocation": {
        "module_args": {
            "_raw_params": "semanage fcontext -a -e /var/lib/docker/overlay2 \"/var/lib/docker/overlay2\"\n restorecon -R -v \"/var/lib/docker/overlay2\"",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "warn": true
        }
    },
    "msg": "non-zero return code",
    "rc": 127,
    "start": "2019-03-22 15:52:19.985613",
    "stderr": "/bin/sh: semanage: command not found\n/bin/sh: line 1: restorecon: command not found",
    "stderr_lines": [
        "/bin/sh: semanage: command not found",
        "/bin/sh: line 1: restorecon: command not found"
    ],
    "stdout": "",
    "stdout_lines": []
}

Я застрял в этом почти месяц. Я сделал все, включая удаление нашего образа corp centos7 (он был построен с отключенным SELinux) и построил новый с нуля. Кажется, ничего не работает. Что меня действительно раздражает больше всего, это если я возьму эти две командные строки, ssh в целевое поле и сделаю

sudo semanage fcontext -a -e /var/lib/docker/overlay2 "/var/lib/docker/overlay2"
sudo restorecon -R -v "/var/lib/docker/overlay2"

он работает отлично.

Вот мой инвентарный файл

all:
  children:
    etcd:
      hosts:
        cent1.lab.mycompany.com:

    masters:
      hosts:
        cent1.lab.mycompany.com:

    nodes:
      hosts:
        cent1.lab.mycompany.com:
          openshift_node_group_name: node-config-master-infra
        cent2.lab.mycompany.com:
          openshift_node_group_name: node-config-compute
          openshift_schedulable: True
    OSEv3:
      children:
        etcd:
        masters:
        nodes:
      vars:
        openshift_deployment_type: origin
        openshift_master_cluster_method: native
        openshift_master_cluster_hostname: console.lab.mycompany.com
        openshift_master_default_subdomain: apps.lab.mycompany.com

        ansible_ssh_user: automation_user
        ansible_become_method: sudo
        ansible_become: true
        ansible_become_flags: '-S'

Кажется, это проблема с разрешением или PATH для доступного пользователя, это должно быть исправлено с помощью --become флаг для выполнения доступного playbook с использованием --become или -b с согласно --become-method=sudo и --become-user=root. Это должно правильно настроить PATH, чтобы restorecon и semanage может быть найден.

https://docs.ansible.com/ansible/2.4/become.html

restorecon и semanage обычно хранятся в /sbin или /usr/sbin которого нет в $ PATH для обычного пользователя. С помощью sudo и become с участием root должен правильно настроить $ PATH, чтобы можно было найти исполняемые файлы.