#ssh #ansible
#ssh #ansible
Вопрос:
Я создал два контейнера Ubuntu docker, один с управляющим узлом, а другой с подчиненным. Я запустил
ansible all -m service -a "name=ssh state=stopped"
и это показывает
172.18.0.3 | CHANGED => {
"changed": true,
"name": "ssh",
"status": {
"enabled": {
"changed": false,
"rc": null,
"stderr": null,
"stdout": null
},
"stopped": {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": " * Stopping OpenBSD Secure Shell server sshdn ...done.n"
}
}
}
Затем я попытался подключиться к ssh вручную, это не удалось, потому что сервер openssh остановился, и это нормально. Затем я запустил другую команду ansible для его запуска.
# ansible all -m service -a "name=ssh state=started"
172.18.0.3 | CHANGED => {
"changed": true,
"name": "ssh",
"status": {
"enabled": {
"changed": false,
"rc": null,
"stderr": null,
"stdout": null
},
"started": {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": " * Starting OpenBSD Secure Shell server sshdn ...done.n"
}
}
}
Я тихо поражен, как ansible смог подключиться к узлу, когда я уже остановил службу ssh узла? Существует ли какой-либо альтернативный метод, которым ansible подключается к узлу, отличному от ssh?
Комментарии:
1. Вероятно, для этого используется Docker Python SDK, который, в свою очередь, использует REST API сервера Docker. SSH здесь не задействован, поскольку ни к одному внешнему серверу не осуществляется доступ в соответствии с предоставленной информацией.
2. Когда оба являются просто контейнером docker, могут ли они использовать docker api внутри контейнера?
3. вы можете запустить свою команду, добавив ‘-vvvvvv’, и, надеюсь, увидите больше информации о том, как она подключается к узлам.
Ответ №1:
Ansible может подключаться к целевым объектам через множество протоколов.
Взгляните на список подключаемых модулей
В вашем случае для контейнеров Docker он использует Docker API.