从 NodeJS 生成时的 Ansible 严格主机密钥检查
Ansible Strict Host Key Checking when spawned from NodeJS
我正在尝试 运行 ansible 作为 NodeJS 的派生进程。
我已经尝试了我在互联网和 Whosebug 上可以找到的所有方法来防止 ansible 在通过 SSH 登录时进行严格的主机密钥检查,但是 ansible 只是忽略了所有设置。
我已经设置了环境变量
export ANSIBLE_HOST_KEY_CHECKING=False
我已经添加到`~/.ssh/config
Host *
StrictHostKeyChecking no
我已将 ANSIBLE_HOST_KEY_CHECKING=False
添加到我的 nodejs .env 文件中。
作为我正在 运行ning 的命令示例,这是我的一些代码。
function runPlaybook(playbook, ip) {
return new Promise((resolve, reject) => {
let ansible = spawn('ansible-playbook', [`-i ${ip},`, playbook]);
ansible.stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
ansible.stdout.on('data', function (data) {
let stdoutData = data.toString();
console.log('stdout: ', stdoutData);
if (stdoutData.includes(`ok: [${ip}]`)) {
console.log('Clearning Interval');
clearInterval(interval);
}
if (stdoutData.startsWith(ip)) {
const re =
/^[0-9.]* *: *ok=([0-9])* *changed=([0-9])* *unreachable=([0-9])* *failed=([0-9])* *skipped=([0-9])* *rescued=([0-9])* *ignored=([0-9])*/gm;
var m;
while ((m = re.exec(stdoutData))) {
const result = {
ok: parseInt(m[1]),
changed: parseInt(m[2]),
unreachable: parseInt(m[3]),
failed: parseInt(m[4]),
skipped: parseInt(m[5]),
rescued: parseInt(m[6]),
ignored: parseInt(m[7]),
};
if (result.unreachable + result.failed == 0) {
return resolve(result);
} else {
return reject(result);
}
}
}
});
});
}
只是想不出还有什么可以尝试的。
我已经通过使用正确的密钥文件解决了这个问题,我知道这很尴尬,但是我从 SSH 得到的错误与主机发生变化时得到的错误即使不一样也非常相似。在这种情况下,它有。我正在删除我的虚拟服务器上的虚拟机并重新创建它们,我一定是目前唯一在工作的人,因为相同的 IP 地址可用并且一直被重新发布到新的虚拟机。但是同时由于重构,我也更改了我指向的密钥。
好的方面是,您可以在示例代码中随意使用我的正则表达式,将 Ansible 结果放入数组中。
我正在尝试 运行 ansible 作为 NodeJS 的派生进程。
我已经尝试了我在互联网和 Whosebug 上可以找到的所有方法来防止 ansible 在通过 SSH 登录时进行严格的主机密钥检查,但是 ansible 只是忽略了所有设置。
我已经设置了环境变量
export ANSIBLE_HOST_KEY_CHECKING=False
我已经添加到`~/.ssh/config
Host *
StrictHostKeyChecking no
我已将 ANSIBLE_HOST_KEY_CHECKING=False
添加到我的 nodejs .env 文件中。
作为我正在 运行ning 的命令示例,这是我的一些代码。
function runPlaybook(playbook, ip) {
return new Promise((resolve, reject) => {
let ansible = spawn('ansible-playbook', [`-i ${ip},`, playbook]);
ansible.stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
ansible.stdout.on('data', function (data) {
let stdoutData = data.toString();
console.log('stdout: ', stdoutData);
if (stdoutData.includes(`ok: [${ip}]`)) {
console.log('Clearning Interval');
clearInterval(interval);
}
if (stdoutData.startsWith(ip)) {
const re =
/^[0-9.]* *: *ok=([0-9])* *changed=([0-9])* *unreachable=([0-9])* *failed=([0-9])* *skipped=([0-9])* *rescued=([0-9])* *ignored=([0-9])*/gm;
var m;
while ((m = re.exec(stdoutData))) {
const result = {
ok: parseInt(m[1]),
changed: parseInt(m[2]),
unreachable: parseInt(m[3]),
failed: parseInt(m[4]),
skipped: parseInt(m[5]),
rescued: parseInt(m[6]),
ignored: parseInt(m[7]),
};
if (result.unreachable + result.failed == 0) {
return resolve(result);
} else {
return reject(result);
}
}
}
});
});
}
只是想不出还有什么可以尝试的。
我已经通过使用正确的密钥文件解决了这个问题,我知道这很尴尬,但是我从 SSH 得到的错误与主机发生变化时得到的错误即使不一样也非常相似。在这种情况下,它有。我正在删除我的虚拟服务器上的虚拟机并重新创建它们,我一定是目前唯一在工作的人,因为相同的 IP 地址可用并且一直被重新发布到新的虚拟机。但是同时由于重构,我也更改了我指向的密钥。
好的方面是,您可以在示例代码中随意使用我的正则表达式,将 Ansible 结果放入数组中。