Spec-Zone.ru › Ansible 2.4

shell - Выполнение команд в узлах.

  • Описание
  • Параметры
  • Примеры
  • Возвращаемые значения
  • Примечания
    • Статус
    • Информация о техническом обслуживании

Описание

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

Параметры

параметр обязательный по умолчанию возможные значения комментарии
chdir
нет
Перейти в указанный каталог перед выполнением команды
creates
нет
имя файла; если файл уже существует, этот шаг не будет выполнен.
executable
нет
изменить оболочку, используемую для выполнения команды. Должен быть абсолютный путь к исполняемому файлу.
free_form
да
Модуль оболочки принимает свободную форму команды для выполнения в виде строки. Нет фактического параметра с именем «free form». Смотрите примеры!
removes
нет
имя файла; если файл не существует, этот шаг не будет выполнен.
stdin
(добавлен в 2.4)
нет
Установить стандартный ввод команды непосредственно на указанное значение.
warn
(добавлен в 1.8)
нет True
если в ansible.cfg включены предупреждения о командах, не выводить предупреждения об этой конкретной строке, если установлено no/false.

Примеры

- 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

- 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

Возвращаемые значения

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

имя описание возвращается тип пример
cmd
Команда, выполненная задачей
всегда строка rabbitmqctl join_cluster rabbit@master
delta
Время выполнения команды
всегда строка 0:00:00.325771
end
Время завершения выполнения команды
всегда строка 2016-02-25 09:18:26.755339
msg
изменено
всегда булево True
rc
Код возврата команды (0 означает успех)
всегда целое число 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 ...'"]

Примечания

Примечание

  • Для безопасного и предсказуемого выполнения команд рекомендуется использовать модуль command вместо этого. Лучшие практики при написании playbook будут следовать тенденции использования модуля command, если модуль shell не требуется явно. При выполнении произвольных команд используйте здравый смысл.
  • Для очистки любых переменных, передаваемых модулю shell, используйте «{{ var | quote }}» вместо «{{ var }}», чтобы убедиться, что они не содержат вредоносного кода, например, точки с запятой.
  • Для целевых систем Windows используйте модуль win_shell вместо этого.
  • Вместо использования документов «here» для создания многострочных скриптов в playbooks используйте модуль script.

Статус

Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют отсутствие несовместимых изменений интерфейса.

Информация о техническом обслуживании

Для получения дополнительной информации о поддержке этого модуля компанией Red Hat, обратитесь к knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>

Для получения помощи в разработке модулей, если это необходимо, ознакомьтесь с Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.

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

Spec-Zone.ru

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