gpt4 book ai didi

ruby-on-rails - 我正在尝试使用 Ansible 编写部署规则以克隆存储库

转载 作者:行者123 更新时间:2023-12-04 01:27:23 25 4
gpt4 key购买 nike

我遵循的步骤是:

  • 以根用户身份安全登录
  • 更新服务器包
  • 创建一个名为 deploy 的用户
  • 从 bitbucket.org 克隆一个 Git 存储库

我想使用 ssh 转发方法将存储库作为部署用户克隆到他的主目录中。

但问题是,即使通过 ssh 转发我也无法获得权限,错误返回为:没有访问存储库的权限。

我的库存文件:

[production]
rails ansible_host=(my host ip) ansible_user=ubuntu

我的 ansible.cfg 文件如下所示:

[ssh_connection]
pipelining=True
ssh_args = -o ForwardAgent=true

我的剧本是这样的:

---
- hosts: production
remote_user: root
become: yes
tasks:
- name: Update all packages to latest version
apt:
upgrade: dist
- add deploy user tasks here
(deploy user add task)
- name: APP | Clone repo
git:
repo: git@github.com:e911/Nepali-POS-Tagger.git
dest: home/deploy/myproject
accept_hostkey: true
force: true
become: yes
become_user: deploy
tags: app

我的部署用户已创建,但由于某种原因我无法将该用户克隆为部署用户。它没有访问权限。我研究过并认为这似乎是因为未附加 ssh key 。当我以 ubuntu 身份登录并在部署时切换用户时,附加 key 不会转发到部署。但我无法解决这个问题。你如何解决这个问题?或者我在这里做错了什么?

这是错误片段:

fatal: [rails]: FAILED! => {
"changed": false,
"cmd": "/usr/bin/git clone --origin origin '' /home/deploy/myproject",
"invocation": {
"module_args": {
"accept_hostkey": true,
"archive": null,
"bare": false,
"clone": true,
"depth": null,
"dest": "/home/deploy/myproject",
"executable": null,
"force": true,
"gpg_whitelist": [],
"key_file": null,
"recursive": true,
"reference": null,
"refspec": null,
"remote": "origin",
"repo": "git@github.com:e911/Nepali-POS-Tagger.git",
"separate_git_dir": null,
"ssh_opts": null,
"track_submodules": false,
"umask": null,
"update": true,
"verify_commit": false,
"version": "HEAD"
}
},
"msg": "",
"rc": 128,
"stderr": "Cloning into '/home/deploy/myproject'...\ngit@github.com: Permission denied (publickey).\r\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists.\n",
"stderr_lines": [
"Cloning into '/home/deploy/myproject'...",
"git@github.com: Permission denied (publickey).",
"fatal: Could not read from remote repository.",
"",
"Please make sure you have the correct access rights",
"and the repository exists."
],
"stdout": "",
"stdout_lines": []
}

我已经尝试过这里的解决方案:Ansible and Git Permission denied (publickey) at Git Clone但这无济于事。

最佳答案

我们有替代解决方案,使用 HTTP而不是 SSH :

对于 GitHub:

  • 生成 Token来自链接:https://github.com/settings/tokens
  • 授予权限 scope: repo (完全控制私有(private)存储库)
  • 使用该 token git+https://<TOKEN>:x-oauth-basic@github.com/<ORGANIZATION>/<REPO>.git#<BRANCH>

对于 BitBucket:

  • 生成随机Password来自链接的 repo :https://bitbucket.org/account/settings/app-passwords
  • 授予范围 Repositories: Read 的权限
  • 使用该密码将您的存储库克隆为:git clone https://<USERNAME>:<GENERATED_PASSWORD>@bitbucket.org/<ORGANIZATION>/<REPO>.git

希望这可以成为解决方案的替代方案。

关于ruby-on-rails - 我正在尝试使用 Ansible 编写部署规则以克隆存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61650791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com