Ansible - message d'Impression - debug: msg="ligne1 n {var2} n line3 avec var3 = {var3}"

Dans Ansible (1.9.4) ou 2.0.0

j'ai lancé l'action suivante:

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

$ cat rôles/setup_jenkins_slave/tâches/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 = nnfsroot[ {{ 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

mais ce n'est pas l'impression de la variable avec de nouvelles lignes (pour la 3e action de débogage)?

30
demandé sur Arun Sangal 2015-12-09 23:15:20

6 réponses

debug module de support de tableau, de sorte que vous pouvez le faire comme ceci:

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

La sortie:

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

ou vous pouvez utiliser la méthode de cette réponse:

En YAML, comment puis-je rompre une chaîne de caractères sur plusieurs lignes?

42
répondu diabloneo 2018-07-31 13:23:16

le moyen le plus pratique que j'ai trouvé pour imprimer le texte multi-ligne avec le débogage est:

- 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') }}"

il divise le message en un tableau et débugge imprime chaque ligne comme une chaîne. La sortie est:

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...", 
        ""
    ]
}

merci à jhutar .

35
répondu maikel 2017-04-13 12:13:44

je creuse un peu sur la réponse de @Bruce P à propos de la sortie de tuyauterie à travers sed, et c'est ce que j'en suis venu à:

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

si quelqu'un est intéressé.

2
répondu edelans 2016-08-03 21:55:02

suppression de la dernière chaîne vide de apt par [:-1]

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

se traduit par de belles ruptures de ligne, grâce à .split('\n') , et une dernière chaîne vide supprimée en raison de [:-1] , qui sont toutes des manipulations de chaîne de Python, bien sûr.

"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..."
]
2
répondu Serge Stroobandt 2017-06-14 02:49:44

C'est discuté ici . En bref, vous avez soit besoin de pipe votre sortie par sed pour convertir le \n en une nouvelle ligne réelle, ou vous avez besoin d'écrire un plugin callback pour le faire pour vous.

1
répondu Bruce P 2017-04-13 12:13:35

comme solution de contournement, j'ai utilisé avec_items et ça a fonctionné pour moi.

- 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
0
répondu Arun Sangal 2015-12-10 00:37:15