OpenShift Origin - 无法获取文件:[Errno 13]对ETCD Certificartes的权限被拒绝

时间:2017-10-03 07:42:50

标签: kubernetes openshift redhat openshift-origin

我正在尝试使用Ansible playbook安装 OpenShift Origin

我有3个Master,3个外部ETCD主机。因此,在运行剧本时,我收到以下错误:

  1. Hosts:    etcd_host1_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-94b5HdP/etcd-dts-etcd-3.fcxlocal.tgz'

  2. Hosts:    etcd_host2_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-liHJ5gz/etcd-dts-etcd-1.fcxlocal.tgz'

  3. Hosts:    etcd_host3_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-A9PENQO/etcd-dts-etcd-2.fcxlocal.tgz'
  

我在Ansible清单文件中设置了以下变量:

# Set variables common for all OSEv3 hosts
[OSEv3:vars]
ansible_become=true
ansible_ssh_user=nonroot_user
openshift_deployment_type=origin
  

在主人oc version上,提供以下信息:

oc v3.6.0+c4dd4cf
kubernetes v1.6.1+5115d708d7
features: Basic-Auth GSSAPI Kerberos SPNEGO

据我了解,当我运行Ansible playbook时,这些etcd所需的证书tarball正被导出到主机机器表格的/tmp路径,其中正在触发playbook。由于我使用具有无密码sudo访问权限的其他用户运行Ansible,因此这些tarball文件仅导出/tmp访问root。因此,我得到了权限被拒绝问题。

我如何克服这个问题?

  

到目前为止我尝试了什么?

     

我试图给chmod -R 777 /tmp,但是这不起作用,因为那些tarball文件是在ansible playbook运行时期间导出的,只有root访问权限。

任何帮助将受到高度赞赏!感谢

1 个答案:

答案 0 :(得分:0)

我遇到的错误几乎与您的错误相同。 就我而言,该错误发生在“检索etcd cert tarball”任务上。 错误消息:无法创建本地目录(/ tmp / {Master-hostname} / etc / etcd / generated_certs):[Errno 13]权限被拒绝/ tmp / {Master-hostname}

我在“堡垒/启动”节点上执行了deploy-cluster.yaml剧本。 (此节点与其他OpenShift群集节点分开)。 我检查了我的OpenShift节点(3Master,3Infra,3Worker)的权限,它们显示的预期权限为777。 但是,我注意到“堡垒/启动”节点上的/ tmp目录已更改为755(root:root)。其他用户无法写入此文件夹。 在OpenShift安装期间,Ansible在/ tmp上创建临时目录(用于etcd证书)。由于没有其他用户写入/ tmp的权限,该过程终止。 (就我而言,Ansible剧本是在Bastion / Boot节点上作为Ansible服务器执行的)

我通过将其他用户设置为777来授予其写权限,从而解决了该问题。 重新运行deploy-cluster.yaml,应该没问题。

还有一个大问题,为什么我的堡垒/启动节点上的/ tmp更改为755。我确定我的/ tmp目录以前设置为777,但是(奇怪地?)更改为755。(即导致拒绝的原因)