2016-11-10 1 views
1

Ich habe eine var, ich möchte Inhalt von var zu einer Zeile in Datei schreiben.Ansible-playbook: wie man Inhalt von var in Datei schreibt

Beispiel: var: TEXT_NEED_TO_ADD

Datei vor hinzugefügt:
some_line
Text Textzeichen Text Text
some_line

Datei nach hinzugefügt:
some_line
Text Textmarke TEXT_NEED_TO_ADD Text Text
some_line

Was soll ich tun?
Entschuldigung für mein Englisch.

+0

Diese Frage etwas verbessert werden muss, ist es nicht wirklich eine Frage gelesen, Sie haben uns nicht gesagt, welche Sprache Sie dies in erreichen möchten, ist es benötigt viel mehr Informationen, bevor jemand Ihnen eine konstruktive Antwort geben kann. –

+0

Erstellen Sie ein Ansible-Modul mit Python. Dort können Sie Ihre eigene Logik schreiben, um die Datei zu manipulieren und dann dieses Modul von Ihrem sprechbaren Playbook aus aufzurufen. Lassen Sie es mich wissen, wenn Sie weitere Hilfe benötigen. – Shasha99

+1

Verwenden Sie Ansible lineinfile-Modul – helloV

Antwort

1

Sie können etwas Magie mit sed Befehl tun:

- name: insert string in file 
    shell: sed '/mark/a {{ TEXT_NEED_TO_ADD }}' filename 

Ich bin nicht wirklich gut in sed Manipulation, aber die allgemeine Idee ist: wenn Sie es nicht mit ansible tun können, versuchen Sie es zu tun in Bash und wenn du könntest - installiere Ansible, um es für dich zu tun. Oder Sie können Ansible-Modul schreiben, um es zu tun, aber oft ist Bash wirklich genug.

1

Wenn Ihre Datei statisch ist (was bedeutet, dass Sie die TEXT_NEED_TO_ADD während der Bereitstellung nur einmal einfügen möchten), sollten Sie eine jinja2-Vorlagendatei erstellen und in Ihrer Rolle verwenden .

So sollte Ihre Dateistruktur sein:

your_role/ 
    templates/ 
    my_file_template.j2 
    tasks/ 
    main.yml 

und Ihre Dateien sollte wie folgt aussehen:

main.yml

- name: copy file and fill it 
    template: src=my_file_template.j2 dest="/home/user/my_file" 

my_file_template.j2

some_line 
text text mark {{TEXT_NEED_TO_ADD}} text text 
some_line 

Dies way ansible fügt den Inhalt der Variablen in eine Datei (an einer Stelle von {{TEXT_NEED_TO_ADD}}) ein, bevor er in den Speicherort kopiert wird, der von dest angegeben wurde. Sie können so viele Variablen in der jinja Vorlage verwenden, wie Sie möchten. Ansible unterstützt auch viele Filter und andere nützliche Werkzeuge (wie zB Loops). Aber ich denke, mit sed wäre auch in Ordnung. Hängt davon ab, was du erreichen willst. Sie mehr über Template-Modul here lesen können und Sie können mehr über Vorlagen here

Verwandte Themen