当前位置: 首页 > 知识库问答 >
问题:

如何在使用github操作执行ansible命令时管理ssh密钥文件

阎知
2023-03-14

我有一个github存储库、一个docker存储库和一个Amazon ec2实例。我正试图用这些工具创建一个CI/CD管道。这个想法是,当github存储库主分支发生推送时,将docker容器部署到ec2实例。我已经使用github操作来构建代码,构建docker图像并将docker图像推送到docker Hub。现在,我要将最新的映像从docker hub拉到远程ec2实例,并运行相同的映像。为此,我试图从github Actions中执行ansible命令。但是我需要指定。pem文件作为ansible命令的参数。我试着保存。pem文件在github secrets,但它不起作用。我真的很困惑如何进行这件事。下面是我的github工作流文件

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

但那没用。解决这个问题的最好办法是什么

共有1个答案

谷梁煌
2023-03-14

我猜您所说的“它不起作用”是指Ansible希望私钥是一个文件,而您提供的是一个字符串。

这个关于github操作的页面展示了如何在github操作上使用秘密文件。对于您的情况,相当于执行以下步骤:

>

  • gpg--对称--cipher-algo AES256 my_private_key.pem

    选择一个强密码,并将此密码保存为github Secrets中的秘密。称之为large_secret_passphrase

    在git中提交加密的my_private_key.pem.gpg

    - name: Decrypt Pem
      run: gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output $HOME/secrets/my_private_key.pem my_private_key.pem.gpg
      env:
       LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
    

  •  类似资料:
    • 我试图使用提供的ssh密钥在远程服务器上运行我的Anable剧本。 我已将以下配置添加到我的清单文件: 我在我的剧本中引用了以下内容: 我使用以下命令运行脚本: 我得到的错误如下: 致命:[server1]:无法访问= 我的在我的库存文件中是错误的还是我称之为错误的?帮助会很好

    • 问题内容: 我正在编写一个脚本来自动化Python中的某些命令行命令。目前,我正在打电话: 但是我需要在远程计算机上运行一些命令。手动地,我将使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知)密码登录到远程计算机,所以我不能只使用,我想知道是否应该使用一个模块? 问题答案:

    • Ansible提供了一个命令行工具,在官方文档中起给命令行起了一个名字叫Ad-Hoc Commands。 ansible命令的格式是: ansible <host-pattern> [options] ansible命令功能有哪些 先不用深纠命令的语法,讲完module那节,就可以理解语法。先从感官上,通过下面的命令认识下ansible的命令行都可以做什么。 检查ansible安装环境 检查所有的

    • 我试图在unix中使用JSCHSSH类(com.jcraft.jsch)执行一些工具。我的工具有一个选择菜单。我需要转到工具所在的文件夹,执行它并选择请求的选项。在每个命令之后,(cd,execute,…)我希望检查输出并检查状态代码(0/1)。我有下面的代码按预期执行它,但在这段代码中,我找不到一种方法来检查每个命令后的输出。 我无法找到一种方法,但我怎么能分开的命令,并打印他们一个接一个(在同

    • 我想使用java中的参数执行一些管理命令。 这些命令是: 我怎么能从java驱动程序做到这一点? 以下代码不起作用:

    • 问题内容: 我正在尝试使用GitHub托管存储库(使用Jenkins Git插件)启动Jenkins并使其运行。该存储库具有多个git子模块,因此我不确定我是否想尝试和管理多个部署密钥。 我的个人GitHub用户帐户是我希望与Jenkins进行的每个项目的合作者,因此我在其中生成了一个SSH密钥并将其添加到我的个人GitHub帐户中。 但是,当我尝试将存储库URL添加到我的Jenkins项目配置中