Spec-Zone.ru › Ansible 2.8

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

Новое в версии 2.0.

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

Описание

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

Параметры

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

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

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

псевдонимы: dest, destfile, name
selevel
строка
Значение по умолчанию:
"s0"
Часть уровня контекста файла SELinux.
Это атрибут MLS/MCS, иногда известный как range.
При установке в _default, он будет использовать часть политики level, если она доступна.
serole
строка
Часть роли контекста файла SELinux.
Если установлено _default, будет использоваться часть политики role, если она доступна.
setype
строка
Часть типа контекста файла SELinux.
При установке в _default, будет использоваться часть политики type, если она доступна.
seuser
строка
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system, где это применимо.
Если установлено _default, будет использоваться часть политики user, если она доступна.
state
строка
    Варианты:
  • отсутствует
  • есть ←
Необходимо ли наличие блока.
unsafe_writes
логическое
добавлен в 2.2
    Варианты:
  • нет ←
  • да
Влияние на использование атомарной операции для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто не работают таким образом, что это не позволяет. Одним из примеров являются файлы, смонтированные в 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/ssh_config') }}"
    dest: /etc/ssh/ssh_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 }}"
  with_items:
  - { name: host1, ip: 10.10.1.10 }
  - { name: host2, ip: 10.10.1.11 }
  - { name: host3, ip: 10.10.1.12 }

Статус

  • Этот модуль не гарантирует обратную совместимость интерфейса. [preview]
  • Этот модуль поддерживается командой разработчиков Ansible Core. [core]

Поддержка Red Hat

Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.

Авторы

  • Yaegashi Takeshi (@yaegashi)

Подсказка

Если вы заметите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.

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

Spec-Zone.ru

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