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

Ansible Task-clone private git无需SSH转发

裴金鑫
2023-03-14

如果有人需要,这是我现在的剧本:

- name: Create SSH directory
  file: path=/root/.ssh state=directory

- name: Copy SHH key for Git access
  copy:
    content: "{{ git_ssh_key }}"
    dest: /root/.ssh/id_rsa
    owner: root
    group: root
    mode: 0600

# Also tried this, but it also hangs
#- name: Start SSH agent and add SSH key
#  shell: eval `ssh-agent -s` && ssh-add

- name: Get new source from GIT
  git: 
    key_file: /root/.ssh/id_rsa
    repo: "git@gitlab.com:user/repo.git"
    dest: "{{ staging_dir }}"
    depth: 1
    accept_hostkey: yes
    clone: yes

我使用的是Ansible 2.3.1.0,python版本=2.7.12

共有1个答案

商骞仕
2023-03-14

以下是使其工作的步骤(在MacOS、Ubuntu LTS上用Ansible 2.3.1和Python 2.7.10测试):

>

  • 生成不带密码短语的新SSH密钥对ssh-keygen-f my_ssh_key-n“

    my_ssh_key.pub添加到存储库服务器用户配置文件中

      null
    ---
    - hosts: localhost
      gather_facts: no
      vars:
        git_ssh_public_key: "Your public ssh key"
        git_ssh_key: |
                  -----BEGIN RSA PRIVATE KEY-----
                  .... actual key here ....
                  -----END RSA PRIVATE KEY-----
      tasks:
      - name: Copy SSH public key file
        copy: 
          content: "{{ git_ssh_public_key }}"
          dest: /root/.ssh/id_rsa.pub
          mode: 0644
    
      - name: Copy SSH private key file
        copy: 
          content: "{{ git_ssh_key }}"
          #src: id_rsa
          dest: /root/.ssh/id_rsa
          mode: 0600
    
      - name: Get new source from GIT
        git: 
          repo: "git@gitlab.com:user/repo.git"
          dest: "/var/www/"
          depth: 1
          accept_hostkey: yes
          clone: yes
    

    重要保安通告

    如果你想在现实世界中使用这个例子,请不要用明文保存你的私钥--使用Ansible Vault。

    您也不应该使用root作为ansible用户。在没有sudo权限的情况下创建新用户会更加安全。

  •  类似资料:
    • 问题内容: 如何使用XMLStreamWriter确切地编写我输入的内容?例如,如果我创建脚本标签并用javascript填充,我不希望我所有的单引号都以‘ 这是我编写的一个小测试,它没有使用我已经使用的任何抽象,只是调用了writeCharacters。 这会为围绕hello world的两个单引号生成一个apos实体。 问题答案: 无法逃脱 。只逃脱 , 并且 和 也逃脱 (见的javadoc

    • 我正在尝试使用模块:ping ping远程主机。我的主机文件如下所示: 命令:手动我可以在主机上使用相同的用户A成功地进行ssh,但不能通过ansible 调试日志: 找不到配置文件;使用默认值 加载类型为stdout的最小回调,v2.0 为用户建立SSH连接:userA SSH:EXEC ssh-c-vvv-o strithostkeychecking=no-o kbdinteractiveau

    • 问题内容: 我有这两个容器,例如(CentOs)和。我想拥有的是,可以从容器中连接到mongo数据库,就像它在本地运行一样, 无论如何,据我所知,您可以像这样将端口localhost:27017映射到mongo:27017 但是,如果执行此操作,则必须提供root密码,然后它会将我登录到容器中,并且不会发生端口转发 背景:我想这样做是因为我正在运行一个Java程序,该程序连接到localhost上

    • 但是现在要通过Java的JSch库来完成,怎么做呢?第一次尝试了portforwarding,但在终端上我没有这样做(没有在中设置参数)。 然后我遇到了一个问题,如何使用JSCH SSH到另一个SSH服务器后面的服务器?,但我不明白如何创建tcp隧道!

    • 问题内容: 给定代码: 输出如下: 调试大型json文档时,很难读懂- 使用Newtonsoft.Json的内置功能(不是正则表达式或可能会破坏事情的hack),可以通过任何方式使输出字符串成为有效值: 问题答案: 查看值时,在调试器中看到的是应该在C#文件中使用以获得相同值的字符串值。 确实可以替换 与 而不更改程序的行为。 因此,要获得不同的值,您应该更改JsonConvert的工作方式,但是

    • 我希望能够远程连接到公开了JMX的Java服务,但它被防火墙阻止了。我尝试使用ssh本地端口转发,但是连接失败了。查看wireshark,当您试图与jconsole连接时,它似乎希望在连接到端口9999后通过一些短暂的端口进行连接,这些端口被防火墙阻止。 有没有什么方法可以让jconsole只通过9999连接或者使用代理?这篇文章还是最好的解决方案吗?或者,我是不是漏掉了什么?