with variable multiple lineinfile examples example create content blockinfile action newline ansible roles ansible-playbook

action - variable - Ansible-Imprimir mensaje-depurar: msg=“línea1 / n{{var2}} / n línea3 con var3={{var3}}”



blockinfile ansible examples (6)

Suprimiendo la última cadena vacía de apt con [:-1]

--- - name: ''apt: update & upgrade'' apt: update_cache: yes cache_valid_time: 3600 upgrade: safe register: apt - debug: msg={{ apt.stdout.split(''/n'')[:-1] }}

.split(''/n'') resultado saltos de línea agradables, gracias a .split(''/n'') , y una última cadena vacía suprimida debido a [:-1] , todo lo cual es manipulación de cadenas de Python, por supuesto.

"msg": [ "Reading package lists...", "Building dependency tree...", "Reading state information...", "Reading extended state information...", "Initializing package states...", "Building tag database...", "No packages will be installed, upgraded, or removed.", "0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.", "Need to get 0 B of archives. After unpacking 0 B will be used.", "Reading package lists...", "Building dependency tree...", "Reading state information...", "Reading extended state information...", "Initializing package states...", "Building tag database..." ]

En Ansible (1.9.4) o 2.0.0

Ejecuté la siguiente acción:

- debug: msg="line1 /n {{ var2 }} /n line3 with var3 = {{ var3 }}"

$ cat roles / setup_jenkins_slave / tasks / main.yml

- debug: msg="Installing swarm slave = {{ slave_name }} at {{ slaves_dir }}/{{ slave_name }}" tags: - koba - debug: msg="1 == Slave properties = fsroot[ {{ slave_fsroot }} ], master[ {{ slave_master }} ], connectingToMasterAs[ {{ slave_user }} ], description[ {{ slave_desc }} ], No.Of.Executors[ {{ slave_execs }} ], LABELs[ {{ slave_labels }} ], mode[ {{ slave_mode }} ]" tags: - koba - debug: msg="print(2 == Slave properties = /n/nfsroot[ {{ slave_fsroot }} ],/n master[ {{ slave_master }} ],/n connectingToMasterAs[ {{ slave_user }} ],/n description[ {{ slave_desc }} ],/n No.Of.Executors[ {{ slave_execs }} ],/n LABELs[ {{ slave_labels }} ],/n mode[ {{ slave_mode }} ])" tags: - koba

¿Pero esto no imprime la variable con nuevas líneas (para la tercera acción de depuración)?


Cavo un poco en la respuesta de @Bruce P sobre la salida de tuberías a través de sed, y esto es lo que encontré para:

ansible-playbook [blablabla] | sed ''s///n//n/g''

si alguien esta interesado


Como solución alternativa, utilicé with_items y funcionó para mí.

- debug: msg="Installing swarm slave = {{ slave_name }} at {{ slaves_dir }}/{{ slave_name }}" - debug: msg="Slave properties = {{ item.prop }} [ {{ item.value }} ]" with_items: - { prop: ''fsroot'', value: "{{ slave_fsroot }}" } - { prop: ''master'', value: "{{ slave_master }}" } - { prop: ''connectingToMasterAs'', value: "{{ slave_user }}" } - { prop: ''description'', value: "{{ slave_desc }}" } - { prop: ''No.Of.Executors'', value: "{{ slave_execs }}" } - { prop: ''LABELs'', value: "{{ slave_labels }}" } - { prop: ''mode'', value: "{{ slave_mode }}" } tags: - koba


Esto se discute aquí . En resumen, debe canalizar su salida a través de sed para convertir el /n a una nueva línea real, o necesita escribir un complemento de devolución de llamada para hacer esto por usted.


La forma más conveniente que encontré para imprimir texto de varias líneas con depuración es:

- name: Print several lines of text vars: msg: | This is the first line. This is the second line with a variable like {{ inventory_hostname }}. And here could be more... debug: msg: "{{ msg.split(''/n'') }}"

Divide el mensaje en una matriz y la depuración imprime cada línea como una cadena. La salida es:

ok: [example.com] => { "msg": [ "This is the first line.", "This is the second line with a variable like example.com", "And here could be more...", "" ] }

Gracias a jhutar .


módulo de depuración compatible con la matriz, por lo que puede hacer esto:

debug: msg: - "First line" - "Second line"

La salida:

ok: [node1] => { "msg": [ "First line", "Second line" ] }

O puedes usar el método de esta respuesta:

En YAML, ¿cómo rompo una cadena en varias líneas?