我正在尝试使用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剧本时,这些etcd所需的证书tarball被导出到触发了剧本的主机形式的/tmp
路径。由于我正在使用具有无密码sudo访问权限的其他用户运行Ansible,因此这些tarball文件仅通过/tmp
访问权限导出到root
。因此,我遇到了这个[[权限被拒绝问题。
我该如何克服这个问题?
到目前为止我已经尝试过什么?我已经尝试给出
chmod -R 777 /tmp
,但这不起作用,因为那些tarball文件是在只有根访问权限的ansible剧本运行时导出的。
任何帮助将不胜感激!谢谢
我在“堡垒/启动”节点上执行了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。(这是导致拒绝的原因)