marqueur de désactivation du fichier de blocage ansible


11

Je suis nouveau chez ansible, mais j'ai réussi à utiliser la fonction blockinfile . Cependant, je ne peux pas comprendre comment empêcher l'insertion de marqueurs. J'ai lu la documentation mais elle ne semble pas la décrire.

C'est ce qui apparaît dans chaque fichier dans lequel blockinfile écrit.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Réponses:


14

J'ai jeté un coup d'œil au blockinfilemodule d' origine sur github - avant Ansible 2, il n'était pas fourni avec Ansible. Il s'avère que les marqueurs sont en fait utilisés pour identifier le bloc :

Cela semble être un comportement voulu. Il remplace toutes les lignes entourées par les marqueurs de bloc par le contenu spécifié.

Cela signifie que si vous supprimez les marqueurs, vous blockinfilene pourrez plus identifier le bloc, ce qui entraînera le module à ajouter le bloc au fichier à chaque fois que vous exécutez le playbook.

Ainsi, les marqueurs avant et après le bloc écrit sont une exigence du module et ne peuvent pas être supprimés.

S'il s'agit d'un playbook à usage unique qui ne sera plus jamais exécuté, vous pouvez exécuter le lineinfilemodule avec l' state: absentoption par la suite.


Ancienne réponse:

Selon les documents, le blockinfilemodule a une markeroption.

Avez-vous essayé de le définir sur une chaîne vide ou sur False?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

ou

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
Désolé pour la déclaration incomplète ci-dessus, quelqu'un a frappé à la porte et j'ai dû courir. J'ai essayé ces idées hier. marker: "" - Ajoute une ligne en haut et en bas du fichier. Faux: - Ajoute simplement le mot faux en bas et en haut du fichier. D'autres idées?
Nik

2
J'ai mis à jour ma réponse. Les marqueurs sont en fait requis par le module lui-même et même si vous le pouvez, vous ne voudrez probablement pas les supprimer. Voir la réponse mise à jour pour plus de détails.
udondan

0

j'ai fait quelque chose comme ça ...

- name: Insert someline in somefile.sh
    blockinfile:
      path: /usr/share/somefile.sh
      block: -sometext
      insertafter: '-XX:originaltext'
      marker: ""
      backup: yes


 - name: Remove blank lines blockinfile put in
    lineinfile :
     path: /usr/share/somefile.sh
     state: absent
     regexp: '^$'
  • le marqueur "" insérera des lignes vides dans le fichier
  • lineinfile les supprimera (ainsi que toutes les autres lignes vierges) alors méfiez-vous !!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.