Spec-Zone.ru › Ansible 2.4

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

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

  • Описание
  • Параметры
  • Примеры
  • Примечания
    • Статус
    • Информация о техническом обслуживании

Описание

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

Параметры

параметр обязательно по умолчанию выбор комментарии
attributes
(добавлен в 2.3)
нет None
Атрибуты, которые должны иметь файл или директория. Для получения поддерживаемых флагов обратитесь к справке man для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr.
псевдонимы: attr
backup
нет нет
  • да
  • нет
Создать резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали.
block
нет
Текст для вставки внутри маркерных строк. Если его нет или он пустой, блок будет удалён, как если бы было указано state для absent.
псевдонимы: content
create
нет нет
  • да
  • нет
Создать новый файл, если он не существует.
follow
(добавлен в 2.1)
нет нет
  • да
  • нет
Этот флаг указывает, что при наличии файловых ссылок они должны быть пройдены.
group
нет
Имя группы, которая должна владеть файлом/каталогом, как это передаётся в chown.
insertafter
нет EOF
  • EOF
  • *regex*
Если указано, блок будет вставлен после последнего совпадения указанного регулярного выражения. Доступно специальное значение; EOF для вставки блока в конец файла. Если указанное регулярное выражение не найдено, будет использовано EOF.
insertbefore
нет None
  • BOF
  • *regex*
Если указано, блок будет вставлен перед последним совпадением указанного регулярного выражения. Доступно специальное значение; BOF для вставки блока в начало файла. Если указанное регулярное выражение не найдено, блок будет вставлен в конец файла.
marker
нет # {mark} ANSIBLE MANAGED BLOCK
Шаблон маркерной строки. "{mark}" будет заменён на "BEGIN" или "END".
mode
нет
Режим файла или директории. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644). Пропуск ведущей нули, скорее всего, приведёт к непредвиденным результатам. Начиная с версии 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
нет present
  • present
  • absent
Нужно ли оставить блок или нет.
unsafe_writes
(добавлен в 2.2)
нет
  • да
  • нет
Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Примером являются файлы, смонтированные в Docker; они не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот булевый параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Помните, что это подвержено гонкам и может привести к повреждению данных.
validate
нет None
Команда проверки, которую нужно выполнить перед копированием на место. Путь к файлу для проверки передаётся через '%s', который должен присутствовать, как в примере ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и конвейеры, не будут работать.

Примеры

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

Примечания

Примечание

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

Статус

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

Информация о техническом обслуживании

Для получения дополнительной информации о поддержке этого модуля компанией Red Hat обратитесь к этому knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>

Для получения помощи в разработке модулей, если у вас есть такое желание, пожалуйста, прочитайте Информацию о сообществе и участие в разработке, Тестирование Ansible и Разработка модулей.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/blockinfile_module.html

Spec-Zone.ru

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