Spec-Zone.ru › Ansible 2.6

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

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

  • Обзор
  • Параметры
  • Примечания
  • Примеры
  • Статус
  • Техническое обслуживание
    • Поддержка
    • Автор

Обзор

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

Параметры

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

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

псевдонимы: content
create
bool
    Варианты:
  • нет ←
  • да
Создать новый файл, если он не существует.
group
Имя группы, которая должна владеть файлом/каталогом, как будет передано в chown.
insertafter
    Варианты:
  • EOF ←
  • *regexp*
Если указано, блок будет вставлен после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки блока в конец файла. Если указанное регулярное выражение не имеет совпадений, будет использоваться EOF.
insertbefore
    Варианты:
  • BOF
  • *regexp*
Если указано, блок будет вставлен перед последним совпадением указанного регулярного выражения. Доступно специальное значение; 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, помните, что режимы фактически являются восьмеричными числами. Вы должны указать ведущую нуль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '0644'), чтобы 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
bool

(добавлен в 2.2)
    Варианты:
  • нет ←
  • да
Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов. Иногда системы настроены или просто неисправны так, что это невозможно. Примером являются файлы, смонтированные с помощью docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот булевый параметр позволяет 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. Подробнее см. Техническое обслуживание и поддержка модулей.

Список других модулей, которые также поддерживаются ядром Ansible, см. здесь.

Поддержка

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

Spec-Zone.ru

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