我正在尝试使用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访问权限。
任何帮助将受到高度赞赏!感谢
答案 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。(即导致拒绝的原因)