我需要您的帮助。我是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
答案 0 :(得分:0)
请注意,您的第一个问题是您根本无法从Jenkins服务器访问主机。因此,您首先需要解决该问题,甚至不必担心设置密码。
密码应该是您的清单的一部分。您可以为所有计算机,特定组或特定主机设置密码。建议您深入阅读how to build your inventory,以更好地理解这些概念。在下面的示例中,我将为特定主机设置密码。
从上面的清单开始,IMHO最干净的方法是在同一级别上创建一个host_vars
目录,并在一个152.32.97.23.yml
文件内,该文件将包含:
---
ansible_password: yourpassword
从现在开始,密码将用于连接到主机。
如果您想对这个密码进行保险库加密(这是一个好主意),您有两种选择:
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
仅加密文件中的密码字符串。首先发出命令:
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,进行编辑,解密,重新加密...。
我不会在这里深入了解解决方案,但这是完全有可能的。您必须先创建一个保险库类型凭证,然后在您的作业中引用该凭证才能解密数据。