Spec-Zone.ru › Ansible 2.11

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

Примечание

Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля shell даже без указания ключевого слова collections:. Несмотря на это, мы рекомендуем использовать FQCN для лёгкой ссылки на документацию по модулю и для избежания конфликтов с другими коллекциями, которые могут иметь то же имя модуля.

Введено в версии 0.2: of ansible.builtin

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

Описание

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

Примечание

Этот модуль имеет соответствующий плагин действий.

Параметры

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

Примечания

Примечание

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

См. также

См. также

ansible.builtin.command

Официальная документация по модулю ansible.builtin.command.

ansible.builtin.raw

Официальная документация по модулю ansible.builtin.raw.

ansible.builtin.script

Официальная документация по модулю ansible.builtin.script.

ansible.windows.win_shell

Официальная документация по модулю ansible.windows.win_shell.

Примеры

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

- name: Change the working directory to somedir/ before executing the command
  ansible.builtin.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
  ansible.builtin.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/
  ansible.builtin.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)
  ansible.builtin.shell: cat < /tmp/*txt
  args:
    executable: /bin/bash

- name: Run a command using a templated variable (always use quote filter to avoid injection)
  ansible.builtin.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
  ansible.builtin.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
  ansible.builtin.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
булево
всегда
changed

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

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

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

Пример:
ls: cannot access foo: No such file or directory
stderr_lines
список / элементы=строка
всегда
Стандартная ошибка команды, разбитая на строки.

Пример:
[{"u'ls cannot access foo": "No such file or directory'"}, "u'ls …'"]
stdout
строка
всегда
Стандартный вывод команды.

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

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


Авторы

  • Команда Ansible Core
  • Michael DeHaan

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

Spec-Zone.ru

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