Spec-Zone.ru › Ansible 2.5

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

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

  • Описание
  • Параметры
  • Примечания
  • Примеры
  • Статус
    • Поддержка
    • Автор

Описание

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

Параметры

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

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

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

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

Примечания

Примечание

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

Примеры

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

Статус

Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость.

Поддержка

Для получения дополнительной информации о поддержке этого модуля компанией 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.5/modules/blockinfile_module.html

Spec-Zone.ru

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