ansible.builtin.ini – Использует файл Ansible INI в качестве источника инвентаризации.
Примечание
Этот модуль входит в состав ansible-base и включён во все установки Ansible. В большинстве случаев, вы можете использовать короткое имя модуля ini даже без указания ключевого слова collections:. Несмотря на это, мы рекомендуем использовать FQCN для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь такое же имя модуля.
Добавлено в версии 2.4: ansible.builtin
Описание
- Инвентаризация, основанная на файлах INI, разделы являются группами или связаны с группами с помощью специальных
:modifiers. - Элементы в разделах
[group_1]являются хостами, членами группы. - Хосты могут иметь переменные, определённые inline как пары ключ/значение, разделённые
=. - Модификатор
childrenуказывает, что раздел содержит группы. - Модификатор
varsуказывает, что раздел содержит переменные, присвоенные членам группы. - Всё, что находится вне раздела, считается хостом без группы.
- Значения, переданные в формате INI с помощью синтаксиса
key=value, интерпретируются по-разному в зависимости от места их объявления в инвентаризации. - При объявлении inline с хостом, значения INI обрабатываются функцией Python’s ast.literal_eval (https://docs.python.org/2/library/ast.html#ast.literal_eval) и интерпретируются как структуры Python (строки, числа, кортежи, списки, словари, булевы значения, None). Строки хостов принимают несколько
key=valueпараметров в строке. Поэтому требуется способ указать, что пробел является частью значения, а не разделителем. - При объявлении в разделе
:vars, значения INI интерпретируются как строки. Например,var=FALSEсоздаст строку, равнуюFALSE. В отличие от строк хостов, разделы:varsпринимают только один элемент на строку, поэтому всё после=должно быть значением для этого элемента. - Не полагайтесь на типы, установленные во время определения. Всегда убеждайтесь, что вы указываете тип с фильтром при необходимости при использовании переменной.
- См. примеры для правильного использования кавычек, чтобы предотвратить изменение типа переменной.
Примечания
Примечание
- Включён в список разрешённых конфигураций по умолчанию.
- Рассмотрите возможность перехода к формату YAML для источников инвентаризации, чтобы избежать путаницы с фактическим типом переменной. Плагин инвентаризации YAML обрабатывает значения переменных последовательно и правильно.
Примеры
example1: |
# example cfg file
[web]
host1
host2 ansible_port=222 # defined inline, interpreted as an integer
[web:vars]
http_port=8080 # all members of 'web' will inherit these
myvar=23 # defined in a :vars section, interpreted as a string
[web:children] # child groups will automatically add their hosts to parent group
apache
nginx
[apache]
tomcat1
tomcat2 myvar=34 # host specific vars override group vars
tomcat3 mysecret="'03#pa33w0rd'" # proper quoting to prevent value changes
[nginx]
jenkins1
[nginx:vars]
has_java = True # vars in child groups override same in parent
[all:vars]
has_java = False # 'all' is 'top' parent
example2: |
# other example config
host1 # this is 'ungrouped'
# both hosts have same IP but diff ports, also 'ungrouped'
host2 ansible_host=127.0.0.1 ansible_port=44
host3 ansible_host=127.0.0.1 ansible_port=45
[g1]
host4
[g2]
host4 # same host as above, but member of 2 groups, will inherit vars from both
# inventory hostnames are unique
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/ansible/builtin/ini_inventory.html