Вот парсер на основе PHP , который анализирует HTML с использованием некоторого нечестивого регулярного выражения. Как автор этого проекта, я могу сказать вам, что можно анализировать HTML с регулярным выражением, но не эффективно. Если вам нужно решение на стороне сервера (как и для моего плагина wp-Typography WordPress ), это работает.
Правильный способ сделать это - создать динамический хост с add_host и поместить его в новую группу, а затем запустить новую игру, предназначенную для этой группы. Таким образом, если у вас есть другие ключи подключения, которые необходимо установить заранее (учетные данные / ключи / etc), вы можете установить их в пустой группе в инвентаре, а затем добавить хост к ней динамически. Например:
- hosts: localhost
gather_facts: no
vars_prompt:
- name: target_host
prompt: please enter the target host IP
private: no
tasks:
- add_host:
name: "{{ target_host }}"
groups: dynamically_created_hosts
- hosts: dynamically_created_hosts
tasks:
- debug: msg="do things on target host here"
Отказ от ответственности: Принятый ответ предлагает наилучшее решение проблемы.
Я узнал, что можно использовать недокументированный hack в настоящее время (кредит для Bruce P для указания на сообщение), который превращает значение параметра -i
/ --inventory
в специальный список хостов (ссылка ).
Команда:
ansible-playbook -i "192.168.1.21," playbook.yml
И, соответственно, playbook.yml
можно запустить против всех хостов (которые в приведенном выше примере будут равны одному хосту 192.168.1.21
):
- hosts: all
В списке может быть более одного IP-адреса -i "192.168.1.21,192.168.1.22"
]
Добавление ответа Мэтта для нескольких хостов.
пример ввода будет 192.0.2.10,192.0.2.11
- hosts: localhost
gather_facts: no
vars_prompt:
- name: target_host
prompt: please enter the target host IP
private: no
tasks:
- add_host:
name: "{{ item }}"
groups: dynamically_created_hosts
with_items: "{{ target_host.split(',') }}"
- hosts: dynamically_created_hosts
tasks:
- debug: msg="do things on target host here"
Вместо этого вы можете передать его с помощью extra-vars
.
Просто сделайте раздел hosts
переменной, например {{ hosts_prompt }}
, а затем передайте хост в командной строке например:
ansible-playbook -i inventory/environment playbook.yml --extra-vars "hosts_prompt=192.168.1.10"
Или, если вы используете местоположение файла инвентаря по умолчанию в /etc/ansible/hosts
, вы можете просто использовать:
ansible-playbook playbook.yml --extra-vars "hosts_prompt=192.168.1.10"
inventory/environment
является всего лишь примером (как и для playbook.yml
). Если вы не предоставили файл инвентаря с помощью -i
, то Ansible просто подберет файл инвентаризации по умолчанию /etc/ansible/hosts
, который обычно не требуется, даже если вы указываете хосты с помощью extra-vars
– ydaetskcoR
14 October 2015 в 15:36
extra-vars
, а не «вот точная строка, которую вы должны ввести». И инвентарь является i> необходимым аргументом, он по умолчанию по умолчанию /etc/ansible/hosts
, и если этот файл не существует, он будет терпеть неудачу.
– ydaetskcoR
15 October 2015 в 06:40