knife ssh
Используйте подкоманду knife ssh для вызова команд SSH (параллельно) на подмножестве узлов в организации на основе результатов запроса поиска, выполненного на сервере Chef Infra.
Синтаксис
Эта подкоманда имеет следующий синтаксис:
knife ssh SEARCH_QUERY SSH_COMMAND (options)
Параметры
Примечание
Эта подкоманда имеет следующие параметры:
-
-a SSH_ATTR,--attribute SSH_ATTR -
Атрибут, используемый при открытии подключения SSH. По умолчанию используется FQDN хоста. Другие возможные значения включают общедоступный IP-адрес, частный IP-адрес или имя хоста.
-
-A,--forward-agent -
Включить перенаправление агента SSH.
-
-C NUM,--concurrency NUM -
Количество разрешенных одновременных подключений.
-
-e,--exit-on-error -
Немедленно завершить выполнение при ошибке.
-
-G GATEWAY,--ssh-gateway GATEWAY -
SSH-туннель или шлюз, используемый для выполнения действия bootstrap на машине, недоступной с рабочей станции.
--ssh-gateway-identity SSH_GATEWAY_IDENTITY-
Файл идентификатора SSH, используемый для подключения к SSH-шлюзу.
Новое в Chef Client 13.0.
-
-i IDENTITY_FILE,--ssh-identity-file IDENTIFY_FILE -
Файл идентификатора SSH, используемый для аутентификации. Рекомендуется аутентификация на основе ключей.
-
-m,--manual-list -
Определите запрос поиска как список серверов, разделенных пробелами. Если в списке более одного элемента, поместите кавычки вокруг всего списка. Например:
--manual-list "server01 server02 server03" --[no-]host-key-verify-
Используйте
--no-host-key-verifyдля отключения проверки ключа хоста. Значение по умолчанию:--host-key-verify. OTHER-
Тип оболочки. Возможные значения:
interactive,screen,tmux,macterm, илиcssh. (csshxустарел в пользуcssh.) -
-p PORT,--ssh-port PORT -
Порт SSH.
-
-P PASSWORD,--ssh-password PASSWORD -
Пароль SSH. Это можно использовать для передачи пароля непосредственно в командной строке. Если этот параметр не указан (и требуется пароль), knife запросит пароль.
SEARCH_QUERY-
Запрос поиска, используемый для возврата списка серверов, к которым будет осуществляться доступ с помощью SSH и указанного
SSH_COMMAND. Этот параметр использует тот же синтаксис, что и подкоманда поиска. ЕслиSEARCH_QUERYне содержит двоеточия (:), то по умолчанию используется шаблон запросаtags:*#{@query}* OR roles:*#{@query}* OR fqdn:*#{@query}* OR addresses:*#{@query}*, что означает, что следующие два запроса поиска фактически эквивалентны:
knife search ubuntu
или:
knife search node "tags:*ubuntu* OR roles:*ubuntu* OR fqdn:*ubuntu* (etc.)"
SSH_COMMAND-
Команда, которая будет выполнена на основе результатов запроса поиска.
-
-t SECONDS,--ssh-timeout SECONDS -
Время (в секундах) ожидания таймаута подключения SSH.
--tmux-split-
Разделить окно Tmux. Значение по умолчанию:
false. -
-x USER_NAME,--ssh-user USER_NAME -
Имя пользователя SSH.
Примечание
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Определение времени работы сервера
Чтобы определить время работы всех веб-серверов, работающих под Ubuntu на платформе Amazon EC2, введите:
knife ssh "role:web" "uptime" -x ubuntu -a ec2.public_hostname
для возврата данных, похожих на:
ec2-174-129-127-206.compute-1.amazonaws.com 13:50:47 up 1 day, 23:26, 1 user, load average: 0.25, 0.18, 0.11
ec2-67-202-63-102.compute-1.amazonaws.com 13:50:47 up 1 day, 23:33, 1 user, load average: 0.12, 0.13, 0.10
ec2-184-73-9-250.compute-1.amazonaws.com 13:50:48 up 16:45, 1 user, load average: 0.30, 0.22, 0.13
ec2-75-101-240-230.compute-1.amazonaws.com 13:50:48 up 1 day, 22:59, 1 user, load average: 0.24, 0.17, 0.11
ec2-184-73-60-141.compute-1.amazonaws.com 13:50:48 up 1 day, 23:30, 1 user, load average: 0.32, 0.17, 0.15
Запуск клиента Chef Infra на всех узлах
knife ssh 'name:*' 'sudo chef-client'
Вынужденный запуск клиента Chef Infra
Чтобы принудительно запустить клиент Chef Infra на всех веб-серверах, работающих под Ubuntu на платформе Amazon EC2, введите:
knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname
для возврата данных, похожих на:
ec2-67-202-63-102.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:37 +0000] INFO: Starting Chef Run (Version 0.9.10)
ec2-174-129-127-206.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:37 +0000] INFO: Starting Chef Run (Version 0.9.10)
ec2-184-73-9-250.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:38 +0000] INFO: Starting Chef Run (Version 0.9.10)
ec2-75-101-240-230.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:38 +0000] INFO: Starting Chef Run (Version 0.9.10)
ec2-184-73-60-141.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:38 +0000] INFO: Starting Chef Run (Version 0.9.10)
ec2-174-129-127-206.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Chef Run complete in 1.419243 seconds
ec2-174-129-127-206.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: cleaning the checksum cache
ec2-174-129-127-206.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Running report handlers
ec2-174-129-127-206.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Report handlers complete
ec2-67-202-63-102.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Chef Run complete in 1.578265 seconds
ec2-67-202-63-102.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: cleaning the checksum cache
ec2-67-202-63-102.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Running report handlers
ec2-67-202-63-102.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:39 +0000] INFO: Report handlers complete
ec2-184-73-9-250.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Chef Run complete in 1.638884 seconds
ec2-184-73-9-250.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: cleaning the checksum cache
ec2-184-73-9-250.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Running report handlers
ec2-184-73-9-250.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Report handlers complete
ec2-75-101-240-230.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Chef Run complete in 1.540257 seconds
ec2-75-101-240-230.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: cleaning the checksum cache
ec2-75-101-240-230.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Running report handlers
ec2-75-101-240-230.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Report handlers complete
ec2-184-73-60-141.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Chef Run complete in 1.502489 seconds
ec2-184-73-60-141.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: cleaning the checksum cache
ec2-184-73-60-141.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Running report handlers
ec2-184-73-60-141.compute-1.amazonaws.com [Fri, 22 Oct 2010 14:18:40 +0000] INFO: Report handlers complete
Выполнение команды на основе запроса поиска
Для поиска всех узлов, имеющих роль webserver, и последующего выполнения команды sudo chef-client через SSH, введите:
knife ssh "role:webserver" "sudo chef-client"
Обновление всех узлов
knife ssh name:* "sudo aptitude upgrade -y"
Указание типа оболочки
Для указания типа оболочки, используемой на узлах, возвращаемых запросом поиска:
knife ssh roles:opscode-omnitruck macterm
где screen — одно из следующих значений: cssh, interactive, macterm, screen, или tmux. Если на узле не установлен тип оболочки, knife вернёт ошибку, похожую на следующую:
you need the rb-appscript gem to use knife ssh macterm.
`(sudo) gem install rb-appscript` to install
ERROR: LoadError: cannot load such file -- appscript
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/knife_ssh/