#ansible
#ansible
Вопрос:
У меня есть playbook, который устанавливает IIS, настраивает apppools, веб-сайты и развертывает приложение. Теперь у меня есть уникальное требование. Уникальный в том смысле, что я все еще не знаю, как это сделать :-). Требование состоит в том, чтобы распределить команду по переработке на 15 минут между кластером из 4 серверов. т. е. у 1-го сервера будет время переработки в 10: 00 вечера, у 2-го в 10: 15 вечера и так далее…
Любые указания на то, как этого достичь…
Я уже настроил пул приложений с приведенными ниже настройками
- name: Setup TestWorkerApi Apppool in IIS
win_iis_webapppool:
name: TestWorkerApi
state: started
attributes:
managedPipelineMode: Integrated
startMode: AlwaysRunning
processModel.identityType: SpecificUser
processModel.userName: '{{ Domain }}{{ Test_In_User }}'
processModel.password: "{{ Test_In_Pwd }}"
managedRuntimeVersion: v4.0
processModel.idleTimeout: 0
processModel.idleTimeoutAction: Suspend
recycling.periodicRestart.schedule: ["22:00:00"]
autoStart: yes
register: apppool_output-TestWorkerApi
tags:
- TestApp
Я ищу время переработки пула приложений как 10: 00 вечера на 1-м сервере, 10: 15 вечера на 2-м сервере, 10: 30 вечера на 3-м сервере и т.д…
Ответ №1:
Ansible позволяет устанавливать переменные, зависящие от хоста…
(а) в вашем инвентаре и (б) в файлах переменных внутри вашего host_vars
каталога.
В любом случае, вы могли бы установить recycle_time
переменную для каждого хоста с желаемым значением. Например, используя устаревший формат инвентаризации, это может выглядеть как:
server1 recycle_time=22:00:00
server2 recycle_time=22:15:00
server3 recycle_time=22:30:00
server4 recycle_time=22:45:00
Или используя формат инвентаризации YAML:
all:
hosts:
server1:
recycle_time: "22:00:00"
server2:
recycle_time: "22:15:00"
server3:
recycle_time: "22:30:00"
server4:
recycle_time: "22:45:00"
Или используя host_vars
каталог, который вы бы создали host_vars/server1.yml
с содержимым:
recycle_time: "22:00:00"
…и аналогично для других серверов.
В любом случае, вы бы затем ссылались на эту recycle_time
переменную в своем playbook:
- name: Setup TestWorkerApi Apppool in IIS
win_iis_webapppool:
name: TestWorkerApi
state: started
attributes:
managedPipelineMode: Integrated
startMode: AlwaysRunning
processModel.identityType: SpecificUser
processModel.userName: '{{ Domain }}{{ Test_In_User }}'
processModel.password: "{{ Test_In_Pwd }}"
managedRuntimeVersion: v4.0
processModel.idleTimeout: 0
processModel.idleTimeoutAction: Suspend
recycling.periodicRestart.schedule: [{{ recycle_time }}]
autoStart: yes
register: apppool_output-TestWorkerApi
tags:
- TestApp
Вы можете прочитать больше в разделе «Переменные» документации Ansible.
Комментарии:
1. Спасибо, Ларски, спасибо за информацию. я бы выбрал все, что содержится в playbook, поэтому 2-й вариант выглядит положительным для меня. У меня были другие сценарии, для которых ваше 2-е решение дало мне несколько указаний и выглядит подходящим. Еще раз спасибо.