Spec-Zone.ru › Ansible 2.9

shell – Выполнение команд оболочки на целевых узлах

  • Описание
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Значения возврата
  • Статус

Описание

  • Модуль shell принимает имя команды, за которым следует список аргументов, разделенных пробелами.
  • Требуется либо команда в свободном формате, либо параметр cmd, см. примеры.
  • Он почти идентичен модулю command, но запускает команду через оболочку (/bin/sh) на удалённом узле.
  • Для целевых узлов Windows используйте модуль win_shell.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
chdir
путь
Изменить текущую директорию перед выполнением команды.
cmd
строка
Команда для выполнения, за которой могут следовать необязательные аргументы.
creates
путь
Имя файла; если файл уже существует, этот шаг не выполняется.
executable
путь
Изменить оболочку, используемую для выполнения команды.
Ожидается абсолютный путь к исполняемому файлу.
free_form
строка
Модуль оболочки принимает команду в свободном формате в виде строки.
Нет параметра с именем "free form".
См. примеры для использования данного модуля.
removes
путь
Имя файла; если файл не существует, этот шаг не выполняется.
stdin
строка
добавлено в 2.4
Установить stdin команды напрямую на указанное значение.
stdin_add_newline
булево
добавлено в 2.8
    Варианты:
  • нет
  • да ←
Добавлять ли перевод строки к данным stdin.
warn
булево
    Варианты:
  • нет
  • да ←
Включить ли предупреждения задачи.

Примечания

Примечание

  • Для безопасного и предсказуемого выполнения команд лучше использовать модуль command. В лучших практиках playbook рекомендуется использовать command, если модуль shell не требуется явно. При выполнении ad-hoc команд используйте здравый смысл.
  • Режим проверки поддерживается при передаче creates или removes. Если выполняется в режиме проверки и указаны эти параметры, модуль проверит существование файла и сообщит правильный статус изменения. Если эти параметры не указаны, задача будет пропущена.
  • Для очистки переменных, передаваемых модулю оболочки, следует использовать {{ var | quote }}, а не просто {{ var }}, чтобы убедиться, что они не содержат вредоносного кода, например, точки с запятой.
  • Альтернативой использованию встроенных сценариев оболочки с этим модулем является использование модуля script, возможно, в сочетании с модулем template.
  • Для перезагрузки систем используйте модуль reboot или win_reboot.

См. также

См. также

command – Выполнение команд на целевых узлах
Официальная документация модуля command.
raw – Выполнение несложной и грязной команды
Официальная документация модуля raw.
script – Запуск локального сценария на удалённом узле после его передачи
Официальная документация модуля script.
win_shell – Выполнение команд оболочки на целевых хостах
Официальная документация модуля win_shell.

Примеры

- name: Execute the command in remote shell; stdout goes to the specified file on the remote.
  shell: somescript.sh >> somelog.txt

- name: Change the working directory to somedir/ before executing the command.
  shell: somescript.sh >> somelog.txt
  args:
    chdir: somedir/

# You can also use the 'args' form to provide the options.
- name: This command will change the working directory to somedir/ and will only run when somedir/somelog.txt doesn't exist.
  shell: somescript.sh >> somelog.txt
  args:
    chdir: somedir/
    creates: somelog.txt

# You can also use the 'cmd' parameter instead of free form format.
- name: This command will change the working directory to somedir/.
  shell:
    cmd: ls -l | grep log
    chdir: somedir/

- name: Run a command that uses non-posix shell-isms (in this example /bin/sh doesn't handle redirection and wildcards together but bash does)
  shell: cat < /tmp/*txt
  args:
    executable: /bin/bash

- name: Run a command using a templated variable (always use quote filter to avoid injection)
  shell: cat {{ myfile|quote }}

# You can use shell to run other executables to perform actions inline
- name: Run expect to wait for a successful PXE boot via out-of-band CIMC
  shell: |
    set timeout 300
    spawn ssh admin@{{ cimc_host }}

    expect "password:"
    send "{{ cimc_password }}\n"

    expect "\n{{ cimc_name }}"
    send "connect host\n"

    expect "pxeboot.n12"
    send "\n"

    exit 0
  args:
    executable: /usr/bin/expect
  delegate_to: localhost

# Disabling warnings
- name: Using curl to connect to a host via SOCKS proxy (unsupported in uri). Ordinarily this would throw a warning.
  shell: curl --socks5 localhost:9000 http://www.ansible.com
  args:
    warn: no

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:

Ключ Возвращаемое значение Описание
cmd
строка
всегда
Команда, выполненная задачей

Пример:
rabbitmqctl join_cluster rabbit@master
delta
строка
всегда
Время выполнения команды

Пример:
0:00:00.325771
end
строка
всегда
Время завершения выполнения команды

Пример:
2016-02-25 09:18:26.755339
msg
булево
всегда
изменено

Пример:
True
rc
целое число
всегда
Код возврата команды (0 означает успех)

start
строка
всегда
Время начала выполнения команды

Пример:
2016-02-25 09:18:26.429568
stderr
строка
всегда
Стандартная ошибка команды

Пример:
ls: cannot access foo: No such file or directory
stdout
строка
всегда
Стандартный вывод команды

Пример:
Clustering node rabbit@slave1 with rabbit@master ...
stdout_lines
список
всегда
Стандартный вывод команды, разделенный на строки

Пример:
["u'Clustering node rabbit@slave1 with rabbit@master ...'"]


Статус

  • Гарантируются изменения интерфейса обратной совместимости в будущем. [stableinterface]
  • Этот модуль поддерживается командой разработчиков Ansible. [core]

Поддержка Red Hat

Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.

Авторы

  • Команда разработчиков Ansible
  • Michael DeHaan
END_OF_DOCUMENT_MARKER

Подсказка

Если вы заметите какие-либо проблемы в этом руководстве, вы можете отредактировать этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/shell_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API