Spec-Zone.ru › Ansible 2.7

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

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

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

Обзор

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

Параметры

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

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

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

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

Примечания

Примечание

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

Примеры

# Before 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>"
    content: |
      <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 -->"
    content: ""

- 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 }

Статус

  • Гарантированно совместимый интерфейс этого модуля не гарантируется. [превью]
  • Этот модуль поддерживается командой разработчиков Ansible. [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.7/modules/blockinfile_module.html

Spec-Zone.ru

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