Spec-Zone.ru › Ansible 2.11

ansible.builtin.blockinfile – Вставка/обновление/удаление блока текста, окружённого метками

Примечание

Этот модуль входит в ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля blockinfile даже без указания ключевого слова collections:. Несмотря на это, мы рекомендуем использовать полное имя класса (FQCN) для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.

Введено в версии 2.0: ansible.builtin

  • Описание
  • Параметры
  • Примечания
  • Примеры

Описание

  • Этот модуль вставляет/обновляет/удаляет блок многострочного текста, окружённый настраиваемыми метками.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
строка
добавлен в 2.3 ansible.builtin
Атрибуты, которые должны быть у результирующего файла или директории.
Чтобы получить поддерживаемые флаги, см. страницу справки для chattr на целевой системе.
Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr.
Оператор = используется по умолчанию, в противном случае необходимо включить операторы + или - в строку.

псевдонимы: attr
backup
логическое значение
    Варианты:
  • нет ←
  • да
Создать резервную копию файла, включая информацию о времени создания, чтобы вы могли восстановить исходный файл, если вы его случайно повредили.
block
строка
Значение по умолчанию:
""
Текст для вставки внутри меток.
Если он отсутствует или пустая строка, блок будет удалён, как если бы state было указано для absent.

псевдонимы: content
create
логическое значение
    Варианты:
  • нет ←
  • да
Создать новый файл, если он не существует.
group
строка
Имя группы, которая должна владеть файлом/каталогом, как если бы это было передано в chown.
insertafter
строка
    Варианты:
  • EOF ←
  • *регулярное выражение*
Если указано и начальные/конечные marker строки не найдены, блок будет вставлен после последнего совпадения указанного регулярного выражения.
Доступно специальное значение; EOF для вставки блока в конец файла.
Если указанное регулярное выражение не находит совпадений, будет использоваться EOF.
insertbefore
строка
    Варианты:
  • BOF
  • *регулярное выражение*
Если указано и начальные/конечные marker строки не найдены, блок будет вставлен перед последним совпадением указанного регулярного выражения.
Доступно специальное значение; BOF для вставки блока в начало файла.
Если указанное регулярное выражение не находит совпадений, блок будет вставлен в конец файла.
marker
строка
Значение по умолчанию:
"# {mark} ANSIBLE MANAGED BLOCK"
Шаблон строки метки.
{mark} будет заменено значениями в marker_begin (по умолчанию "BEGIN") и marker_end (по умолчанию "END").
Использование настраиваемой метки без переменной {mark} может привести к повторной вставке блока при последующих запусках плейбука.
marker_begin
строка
добавлен в 2.5 ansible.builtin
Значение по умолчанию:
"BEGIN"
Это будет вставлено в {mark} в открывающей метке блока Ansible.
marker_end
строка
добавлен в 2.5 ansible.builtin
Значение по умолчанию:
"END"
Это будет вставлено в {mark} в закрывающей метке блока Ansible.
mode
сырые данные
Разрешения, которые должны быть у результирующего файла или директории.
Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую ноль, чтобы Ansible's YAML-парсер знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777') так, чтобы Ansible получил строку и мог самостоятельно преобразовать её в число.
Передача Ansible числа без одного из этих правил приведёт к десятичному числу, что приведёт к непредсказуемым результатам.
Начиная с Ansible 1.8, режим может быть указан в символьной форме (например, u+rwx или u=rw,g=r,o=r).
Если mode не указан, и целевой файл не существует, то по умолчанию будет использоваться значение umask на системе при установке режима для вновь созданного файла.
Если mode не указан, и целевой файл существует, то будет использован режим существующего файла.
Указание mode является лучшим способом гарантировать, что файлы будут создаваться с правильными разрешениями. См. CVE-2020-1736 для получения дополнительных сведений.
owner
строка
Имя пользователя, который должен владеть файлом/каталогом, как если бы это было передано в chown.
path
путь / обязательно
Файл для изменения.
До Ansible 2.3 этот параметр был доступен только как dest, destfile и name.

псевдонимы: dest, destfile, name
selevel
строка
Часть уровня контекста файла SELinux.
Это атрибут MLS/MCS, иногда известный как range.
При установке в значение _default, будет использоваться часть политики level, если она доступна.
serole
строка
Часть роли контекста файла SELinux.
При установке в значение _default, будет использоваться часть политики role, если она доступна.
setype
строка
Часть типа контекста файла SELinux.
При установке в значение _default, будет использоваться часть политики type, если она доступна.
seuser
строка
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, если она доступна.
При установке в значение _default, будет использоваться часть политики user, если она доступна.
state
строка
    Варианты:
  • отсутствует
  • наличие ←
Необходимо ли наличие блока.
unsafe_writes
логическое значение
добавлен в 2.2 ansible.builtin
    Варианты:
  • нет ←
  • да
Влияние на использование атомных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Один из примеров — файлы, смонтированные через Docker, которые не могут быть обновлены атомно внутри контейнера и могут быть записаны только небезопасным способом.
Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомные операции терпят неудачу (однако, он не заставляет Ansible выполнять небезопасные записи).
ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных.
validate
строка
Команда валидации, которую необходимо выполнить перед копированием в место назначения.
Путь к файлу для валидации передаётся через '%s', который должен присутствовать, как в приведённых ниже примерах.
Команда передаётся безопасно, поэтому такие оболочки, как расширение и конвейеры, не будут работать.

Примечания

Примечание

  • Этот модуль поддерживает режим проверки.
  • При использовании циклов «with_*» имейте в виду, что если вы не зададите уникальную метку, блок будет перезаписываться на каждой итерации.
  • Начиная с Ansible 2.3, параметр dest по умолчанию изменён на path, но dest по-прежнему работает.
  • Параметр follow удалён в Ansible 2.5, потому что этот модуль изменяет содержимое файла, поэтому follow=no не имеет смысла.
  • Если в одном файле должно обрабатываться более одного блока, необходимо изменить marker в каждом задании.

Примеры

# Before Ansible 2.3, option 'dest' or 'name' was used instead of 'path'
- name: Insert/Update "Match User" configuration block in /etc/ssh/sshd_config
  blockinfile:
    path: /etc/ssh/sshd_config
    block: |
      Match User ansible-agent
      PasswordAuthentication no

- name: Insert/Update eth0 configuration stanza in /etc/network/interfaces
        (it might be better to copy files into /etc/network/interfaces.d/)
  blockinfile:
    path: /etc/network/interfaces
    block: |
      iface eth0 inet static
          address 192.0.2.23
          netmask 255.255.255.0

- name: Insert/Update configuration using a local file and validate it
  blockinfile:
    block: "{{ lookup('file', './local/sshd_config') }}"
    path: /etc/ssh/sshd_config
    backup: yes
    validate: /usr/sbin/sshd -T -f %s

- name: Insert/Update HTML surrounded by custom markers after <body> line
  blockinfile:
    path: /var/www/html/index.html
    marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
    insertafter: "<body>"
    block: |
      <h1>Welcome to {{ ansible_hostname }}</h1>
      <p>Last updated on {{ ansible_date_time.iso8601 }}</p>

- name: Remove HTML as well as surrounding markers
  blockinfile:
    path: /var/www/html/index.html
    marker: "<!-- {mark} ANSIBLE MANAGED BLOCK -->"
    block: ""

- name: Add mappings to /etc/hosts
  blockinfile:
    path: /etc/hosts
    block: |
      {{ item.ip }} {{ item.name }}
    marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}"
  loop:
    - { name: host1, ip: 10.10.1.10 }
    - { name: host2, ip: 10.10.1.11 }
    - { name: host3, ip: 10.10.1.12 }

Авторы

  • Yaegashi Takeshi (@yaegashi)

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/blockinfile_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API