Как я могу заставить Ansible обновлять все строки после строки 9 с изменениями моего файла, оставив только предыдущие строки?
Я использую Ansible, чтобы файлы на моих серверах были единообразными. Я собрал удобный файл, который можно развернуть на сервере, чтобы быстро получить настройки и конфигурации. Этот файл используется несколькими пользователями, и каждый пользователь имеет свою уникальную информацию в файле.
В настоящее время я раздаю всем свою копию файла. Затем я использую задачи lineinfile, чтобы заменить мою информацию конкретной информацией пользователя. Однако это означает, что я должен поддерживать информацию о пользователе не только в файле, но и в моей книге воспроизведения, что вызывает некоторые головные боли.
Кроме того, если есть способ не переопределять информацию, специфичную для пользователя, я могу создать функцию bash, позволяющую мне указать, каких пользователей я хочу обновить.
Вот моя текущая инструкция:
---
- hosts: dmz
vars:
curUser: "{{ ansible_ssh_user }}"
allUsers:
- { name: johnDoe, gecos: "John D, XXXX S Sad Ln" }
- { name: janeFrank, gecos: "Jane F, XXXX W Happy Dr" }
tasks:
## =============== Updates the user's /foo/bar/user/FILE with the /foo/bar/FILE
- name: distribute_File
sudo: yes
template: src=/home/{{ curUser }}/FILE dest=/home/{{ item.name }}/FILE owner={{ item.name }} backup=yes
with_items: allUsers
ignore_errors: true
## ===================================== Update user specific information
- name: updateName
sudo: yes
lineinfile: dest=/home/{{ item.name }}/FILE regexp="^username=" line="username={{ item.name }}"
with_items: allUsers
- name: updateGecos
sudo: yes
lineinfile: dest=/home/{{ item.name }}/FILE regexp="^usergecos=" line="usergecos=\"{{ item.gecos }}\""
with_items: allUsers
lineinfile
записать и ваш базовый шаблон. Я еще не пробовал, но в Galaxy естьblockinfile
модуль: galaxy.ansible.com / list # / roles / 1475 - что ускорит вашу игру, если вы напишете несколько строк. - person udondan   schedule 06.06.2015