Ansible: lineinfile продолжает сдавливать мою существующую строку вместо добавления текста к ней - PullRequest
0 голосов
/ 06 ноября 2019

Я видел пару постов с похожими проблемами, и, похоже, у меня ничего не работает. Некоторые упоминали о необходимости использовать группы в моем регулярном выражении, поэтому я добавил их и все еще есть проблемы. Другие говорят, что просто добавьте 'backrefs: yes' в мой lineinfile, и об этом позаботятся, пока что не повезло.

Существующая строка:

PATH=$PATH:$HOME/.local/bin:$HOME/bin

Ожидаемая строка после выполнения:

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/somedir

Фактическая строка после выполнения:

:/opt/somedir

Мой ответ:

     - name: update ~/.bash_profile
       lineinfile:
         backup: yes
         backrefs: yes
         path: ~/.bash_profile
         regexp: '^(PATH=.*)$'
         line: ':/opt/somedir'

Чего мне не хватает?

1 Ответ

1 голос
/ 06 ноября 2019

Вам необходимо добавить обратную ссылку на строку, которая будет вставлена.

Например:

- name: update ~/.bash_profile
  lineinfile:
    backup: yes
    backrefs: yes
    path: ~/.bash_profile
    regexp: '^(PATH=.*)$' # PATH=.* is inside group 1 because of the parentheses
    line: '\1:/opt/somedir' # group 1 can be referenced with \1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...