Docker 当我们想要使用github操作执行ansible命令时,如何管理ssh密钥文件
我有一个github存储库、一个docker存储库和一个AmazonEC2实例。我正在尝试使用这些工具创建CI/CD管道。想法是在github存储库主分支发生推送时,将docker容器部署到ec2实例。我已经使用github操作来构建代码、构建docker映像并将docker映像推送到docker hub。现在,我想将最新的映像从docker hub拉到远程ec2实例,并运行相同的映像。为此,我尝试从github操作执行ansible命令。但是我需要指定.pem文件作为ansible命令的参数。我试图将.pem文件保存在github中,但没有成功。我真的不知道该怎么做。 这是我的github工作流文件Docker 当我们想要使用github操作执行ansible命令时,如何管理ssh密钥文件,docker,amazon-ec2,ansible,github-actions,Docker,Amazon Ec2,Ansible,Github Actions,我有一个github存储库、一个docker存储库和一个AmazonEC2实例。我正在尝试使用这些工具创建CI/CD管道。想法是在github存储库主分支发生推送时,将docker容器部署到ec2实例。我已经使用github操作来构建代码、构建docker映像并将docker映像推送到docker hub。现在,我想将最新的映像从docker hub拉到远程ec2实例,并运行相同的映像。为此,我尝试从github操作执行ansible命令。但是我需要指定.pem文件作为ansible命令的参数。
name: helloworld_cicd
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v1
- name: Go Build
run: go build
- name: Docker build
run: docker build -t helloworld .
- name: Docker login
run: docker login --username=${{ secrets.docker_username }} --password=${{ secrets.docker_password }}
- name: Docker tag
run: docker tag helloworld vijinvv/helloworld:latest
- name: Docker push
run: docker push vijinvv/helloworld:latest
我试着像这样跑
ansible all -i '3.15.152.219,' --private-key ${{ secrets.ssh_key }} -m rest of the command
但那没用。解决此问题的最佳方法是什么?我猜您所说的“它不起作用”的意思是,
ansible
希望私钥是一个文件,而您提供的是一个字符串
这个关于github的操作演示了如何在github操作中使用机密文件。对于您的案例,等效方法是执行以下步骤:
gpg——对称——密码算法AES256 my\u private\u key.pem
LARGE\u SECRET\u PASSPHRASE
my\u private\u key.pem.gpg
-名称:解密Pem
运行:gpg--quiet--batch--yes--decrypt--passphrase=“$LARGE\u SECRET\u passphrase”--输出$HOME/secrets/my\u private\u key.pem my\u private\u key.pem.gpg
环境:
大秘密密码:${secrets.大秘密密码}
ansible all-i'3.15.152.219'——private key$HOME/secrets/my_private_key.pem运行ansible
命令
您可以轻松地使用
webfactory/ssh agent
添加ssh私钥。在运行ansible
命令之前,您可以查看它并添加以下阶段
# .github/workflows/my-workflow.yml
jobs:
my_job:
...
steps:
- actions/checkout@v2
# Make sure the @v0.5.2 matches the current version of the
# action
- uses: webfactory/ssh-agent@v0.5.2
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- ... other steps
SSH\u PRIVATE\u KEY
必须是在存储库机密中注册的密钥。之后,在不传递私钥文件的情况下运行您的ansible
命令。请检查此项。阅读以下内容您可能会受益:虽然我相信您与其他评论者关系良好,但我想指出的是,包含“它不起作用”的问题永远不会为您提供所需的帮助。请特别注意这一页,它有一个明确的部分说,以避免这种模式,我一定会小心