Вы можете передавать переменные в свою игровую книгу во время выполнения, используя аргумент -e
. Например:
ansible-playbook playbook.yml -e mode=start
Учитывая приведенную выше командную строку, внутри книги воспроизведения вы можете просмотреть переменную mode
:
- hosts: localhost
tasks:
- name: start something
command: echo do you want to be starting something
when: "mode|default('') == 'start'"
Вы можете использовать столько аргументов -e
, сколько вы хотите, и вы можете включать переменные из файла, а не включать их в командной строке. Например, если у вас есть файл vars.yml
, вы можете запустить:
ansible-playbook playbook.yml -e @vars.yml
Таким образом, с одной точки зрения, вам нужно будет выполнить три разные задачи, каждая из которых будет иметь свою инструкцию when
справьтесь с тремя start
/ stop
/ restart
условиями.
Но в зависимости от того, что вы пытаетесь сделать, может быть более простое решение. Если вы просто пытаетесь вызвать сценарий инициализации из задачи, вместо этого вы можете сделать следующее:
- hosts: localhost
tasks:
- name: start something
command: /etc/init.d/SCRIPT {{ mode }}