ansible-js-bindings
This library is a js bindings of ansible-playbook.
It provided two drop-in API of exec
and execFile
which are similiar to child_process.exec
/child_process.execFile
but will execute on remote nodes.
Prepare
git clone http://github.xsky.com/testing/ansible-js-bindings.git && cd ansible-js-bindings
Setup inventory
add nodes in inventory file
Run
Execute command
const path = require('path');
const Ansible = require('../src');
const ansible = new Ansible({
inventoryPath: path.resolve(__dirname, 'assets/inventory'),
});
(async function() {
try {
let res;
console.log('execute shell command');
res = await ansible.exec(
'echo "test ansible js bindings with execute inline shell"'
);
console.log('shell result:', res);
} catch (error) {
console.error(error);
}
})();
Execute file
const path = require('path');
const Ansible = require('../src');
const ansible = new Ansible({
inventoryPath: path.resolve(__dirname, 'assets/inventory'),
});
(async function() {
try {
let res;
console.log('execute shell script');
res = await ansible.execFile(path.resolve(__dirname, 'assets/example.sh'));
console.log('shell result:', res);
console.log('execute python script');
res = await ansible.execFile(path.resolve(__dirname, 'assets/example.py'));
console.log('python result:', res);
} catch (error) {
console.error(error);
}
})();