Ответ 1
Если вы хотите запустить свою роль на всех хостах, а только одну задачу, ограниченную группой webservers
, то, как вы уже сказали, when
вы друг.
Вы можете определить условие типа:
when: inventory_hostname in groups['webservers']
содержимое моего инвентаря -
[webservers]
x.x.x.x ansible_ssh_user=ubuntu
[dbservers]
x.x.x.x ansible_ssh_user=ubuntu
в моем файле задач, который является общей ролью, то есть он будет работать на обоих узлах, но я хочу запустить следующую задачу на веб-серверах хоста, а не в dbservers, которая определена в файле инвентаря
- name: Install required packages
apt: name={{ item }} state=present
with_items:
- '{{ programs }}'
become: yes
tags: programs
когда модуль полезен или есть какой-либо другой способ? Как я могу это сделать?
Если вы хотите запустить свою роль на всех хостах, а только одну задачу, ограниченную группой webservers
, то, как вы уже сказали, when
вы друг.
Вы можете определить условие типа:
when: inventory_hostname in groups['webservers']
Спасибо, это тоже помогает.
[production]
host1.dns.name
[internal]
host2.dns.name
- name: install the sphinx-search rpm from a remote repo on x86_64 - internal host
when: inventory_hostname in groups['internal']
yum:
name: http://sphinxsearch.com/files/sphinx-2.2.11-1.rhel7.x86_64.rpm
state: present
- name: install the sphinx-search rpm from a remote repo on i386 - Production
when: inventory_hostname in groups['production']
yum:
name: http://sphinxsearch.com/files/sphinx-2.2.11-2.rhel6.i386.rpm
state: present