【发布时间】:2022-10-23 14:42:36
【问题描述】:
我编写了一个工作流文件,准备运行器使用 ssh 连接到所需的服务器,以便我可以运行 ansible 剧本。
ssh -t -v theUser@theHost 告诉我 SSH 连接有效。
然而,ansible sript 告诉我,缺少 sudo 密码。
如果我离开ssh -t -v theUser@theHost 行,ansible 会抛出连接超时并且无法连接到服务器。
=> fatal: [***]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host *** port 22: Connection timed out
首先我不明白,为什么ansible只有执行命令才能连接到服务器ssh -t -v theUser@theHost。
这下一个问题也就是说,用户不需要任何 sudo 密码即可拥有执行权限。相同的 ansible playbook 在我的本地机器上运行良好,无需使用 sudo 密码。我配置了服务器,以便用户递归地在所需文件夹中拥有足够的权限。
它根本不适用于我的 GithHub Action。 你能告诉我我做错了什么吗?
我的工作流程文件如下所示:
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "master" branch
push:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
run-playbooks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
token: ${{secrets.REPO_TOKEN}}
- name: Run Ansible Playbook
run: |
mkdir -p /home/runner/.ssh/
touch /home/runner/.ssh/config
touch /home/runner/.ssh/id_rsa
echo -e "${{secrets.SSH_KEY}}" > /home/runner/.ssh/id_rsa
echo -e "Host ${{secrets.SSH_HOST}}\nIdentityFile /home/runner/.ssh/id_rsa" >> /home/runner/.ssh/config
ssh-keyscan -H ${{secrets.SSH_HOST}} > /home/runner/.ssh/known_hosts
cd myproject-infrastructure/ansible
eval `ssh-agent -s`
chmod 700 /home/runner/.ssh/id_rsa
ansible-playbook -u ${{secrets.ANSIBLE_DEPLOY_USER}} -i hosts.yml setup-prod.yml
【问题讨论】:
标签: linux ssh ansible github-actions