Spec-Zone.ru › Ansible 2.9

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

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

Описание

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
attributes
строка
Атрибуты, которые должны иметь результирующий файл или директория.
Для получения поддерживаемых флагов обратитесь к странице справки для 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
логическое значение
    Варианты:
  • нет ←
  • да
Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Одним из примеров являются файлы, смонтированные в 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') }}"
    dest: /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 }

Статус

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

Поддержка Red Hat

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

Авторы

  • Такеси Яэгаси (@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.9/modules/blockinfile_module.html

Spec-Zone.ru

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