通过詹金斯运行第一个剧本程序无法连接到主机

时间:2020-05-16 14:14:44

标签: ansible

我需要您的帮助。我是ansible的新手。我读了文档,但仍然不太清楚。我有下面的剧本和库存。当我执行它时出现错误

致命:[152.32.97.23]:无法达到! => {“ changed”:false,“ msg”:“数据无法发送到远程主机\” 152.32.97.23 \“。确保可以通过ssh到达此主机:ssh:连接到主机152.32.97.23端口22 :连接超时\ r \ n“,“无法访问”:true}

当连接到ssh时,我需要指定密码,但是在plabook中我应该在哪里指定密码,我希望通过使用Vault对密码进行加密。我真的不确定如何做到这一点。请朋友帮我。

my-firstplaybook.yml

---
- hosts: app-server-grp
  user: sshusername
  tasks:
    - name: Check configuration
      command: ifconfig

my-host-inventory.yml

[app-server-grp]
152.32.97.23

1 个答案:

答案 0 :(得分:0)

请注意,您的第一个问题是您根本无法从Jenkins服务器访问主机。因此,您首先需要解决该问题,甚至不必担心设置密码。


设置密码

密码应该是您的清单的一部分。您可以为所有计算机,特定组或特定主机设置密码。建议您深入阅读how to build your inventory,以更好地理解这些概念。在下面的示例中,我将为特定主机设置密码。

从上面的清单开始,IMHO最干净的方法是在同一级别上创建一个host_vars目录,并在一个152.32.97.23.yml文件内,该文件将包含:

---
ansible_password: yourpassword

从现在开始,密码将用于连接到主机。

加密密码

如果您想对这个密码进行保险库加密(这是一个好主意),您有两种选择:

  1. 加密完整的host_vars/152.32.97.23.yml文件。可以使用以下命令来完成此操作:
    ansible-vault encrypt host_vars/152.32.97.23.yml
    New Vault password: 
    Confirm New Vault password: 
    Encryption successful
    
  2. 仅加密文件中的密码字符串。首先发出命令:

    ansible-vault encrypt_string yourpassword
    New Vault password: 
    Confirm New Vault password: 
    !vault |
          $ANSIBLE_VAULT;1.1;AES256
          35653633333836356339363831653836313264356634316266376137356338653337373261323030
          6232613832633337383561313238383437303236396230660a663163363838626665356630363766
          61343265666337323935363063343537623137636330393762336234386339646663366135386561
          6366653738616563360a383138646439643436383366623236333334373466393036636263303035
          6331
    Encryption successful
    
    

    然后将加密的字符串复制到host_vars文件中,该文件现在看起来像这样:

    ---
    ansible_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          35653633333836356339363831653836313264356634316266376137356338653337373261323030
          6232613832633337383561313238383437303236396230660a663163363838626665356630363766
          61343265666337323935363063343537623137636330393762336234386339646663366135386561
          6366653738616563360a383138646439643436383366623236333334373466393036636263303035
          6331
    

    (注意:如果要使用该文件,我在上例中使用了保险库密码test

无论使用哪种解决方案,现在都可以使用加密密码,但是您需要提供保管库密码。最简单的方法是使用--ask-vault-pass参数以交互方式提供它。您还应该深入阅读the vault documentation,以了解提供密码的其他方式,如果需要,可以使用多个ID,进行编辑,解密,重新加密...。

使用来自jenkins的保管库加密数据

我不会在这里深入了解解决方案,但这是完全有可能的。您必须先创建一个保险库类型凭证,然后在您的作业中引用该凭证才能解密数据。