Spec-Zone.ru › Ansible 2.10

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

Примечание

Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать сокращённое имя модуля blockinfile, даже не указывая collections: ключевое слово. Несмотря на это, мы рекомендуем использовать полное имя класса (FQCN) для удобной ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.

Добавлена в версии 2.0: of ansible.builtin

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

Описание

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

Параметры

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

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

алиасы: content
create
булево
    Варианты:
  • нет ←
  • да
Создать новый файл, если он не существует.
group
строка
Имя группы, которая должна владеть файлом/каталогом, как это подаётся в chown.
insertafter
строка
    Варианты:
  • EOF ←
  • *regex*
Если указано и не найдены начальные/конечные marker строки, блок будет вставлен после последнего совпадения указанного регулярного выражения.
Доступно специальное значение; EOF для вставки блока в конец файла.
Если указанное регулярное выражение не находит совпадений, EOF будет использоваться вместо этого.
insertbefore
строка
    Варианты:
  • BOF
  • *regex*
Если указано и не найдены начальные/конечные marker строки, блок будет вставлен перед последним совпадением указанного регулярного выражения.
Доступно специальное значение; BOF для вставки блока в начало файла.
Если указанное регулярное выражение не находит совпадений, блок будет вставлен в конец файла.
marker
строка
Значение по умолчанию:
"# {mark} ANSIBLE MANAGED BLOCK"
Шаблон метки строки.
{mark} будет заменён значениями в marker_begin (по умолчанию "BEGIN") и marker_end (по умолчанию "END").
Использование пользовательской метки без переменной {mark} может привести к повторной вставке блока при последующих запусках playbook.
marker_begin
строка
добавлена в 2.5 of ansible.builtin
Значение по умолчанию:
"BEGIN"
Это будет вставлено в {mark} в открывающей метке блока ansible.
marker_end
строка
добавлена в 2.5 of ansible.builtin
Значение по умолчанию:
"END"
Это будет вставлено в {mark} в закрывающей метке блока ansible.
mode
raw
Права доступа, которые должен иметь результирующий файл или каталог.
Для тех, кто привык к /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
строка
Часть уровня контекста файла SELinux.
Это атрибут MLS/MCS, иногда называемый range.
При установке в _default, он будет использовать часть политики level, если она доступна.
serole
строка
Часть роли контекста файла SELinux.
При установке в _default, он будет использовать часть политики role, если она доступна.
setype
строка
Часть типа контекста файла SELinux.
При установке в _default, он будет использовать часть политики type, если она доступна.
seuser
строка
Часть пользователя контекста файла SELinux.
По умолчанию используется политика system (если применимо).
При установке в _default, он будет использовать часть политики user, если она доступна.
state
строка
    Варианты:
  • отсутствует
  • наличие ←
Нужно ли оставлять этот блок в файле.
unsafe_writes
булево
добавлена в 2.2 of ansible.builtin
    Варианты:
  • нет ←
  • да
Влияет на использование атомарной операции для предотвращения повреждения данных или несогласованного чтения из целевого файла.
По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это предотвращает. Одним примером являются файлы с монтированием 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') }}"
    path: /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 }

Авторы

  • 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.10/collections/ansible/builtin/blockinfile_module.html

Spec-Zone.ru

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