Spec-Zone.ru › Ansible 2.10

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
строка
Модуль shell принимает команду в свободной форме в виде строки.
Нет параметра с именем 'free form'.
См. примеры, как использовать этот модуль.
removes
путь
добавлен в 0.8 ansible.builtin
Имя файла. Если файл не существует, этот шаг не будет выполнен.
stdin
строка
добавлен в 2.4 ansible.builtin
Установить stdin команды непосредственно на указанное значение.
stdin_add_newline
булево
добавлен в 2.8 ansible.builtin
    Варианты:
  • no
  • да ←
Добавлять ли новую строку к данным stdin.
warn
булево
добавлен в 1.8 ansible.builtin
    Варианты:
  • no
  • да ←
Включить предупреждения задач.

Примечания

Примечание

  • Если вы хотите безопасно и предсказуемо выполнить команду, лучше использовать модуль ansible.builtin.command вместо этого. Лучшие практики при написании playbooks будут заключаться в использовании ansible.builtin.command, если модуль ansible.builtin.shell не требуется явно. При выполнении ad-hoc команд используйте здравый смысл.
  • Режим проверки поддерживается при передаче creates или removes. Если выполняется в режиме проверки, и указаны эти параметры, модуль проверит существование файла и сообщит правильное состояние изменения. Если эти параметры не указаны, задача будет пропущена.
  • Для очистки переменных, передаваемых модулю shell, следует использовать {{ 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
  • Michael DeHaan

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

Spec-Zone.ru

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