ansible print debug msg değişkeni


17

Önceden kaydedilmiş mosh_versiondeğişkeni aşağıdaki debug msggibi ansible komutunu kullanarak yazdırmaya çalışıyorum :

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"

Çalışmıyor ve aşağıdaki hatayı yazdırıyor:

Note: The error may actually appear before this position: line 55, column 27

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"
                          ^
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

denedim

- name: Print mosh version
  debug: msg=Mosh Version: "{{ mosh_version.stdout }}"

ama bu sadece "Mosh" yazdıracaktır.

Bunu çalıştırmanın en iyi yolu nedir?

Yanıtlar:


25

Bunu dene:

- name: Print mosh version
  debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'"

Http://docs.ansible.com/YAMLSyntax.html#gotchas adresinde daha fazla bilgi

Düzenlendi: Bunun gibi bir şey benim için mükemmel çalışıyor:

- name: Check Ansible version
  command: ansible --version
  register: ansibleVersion

- name: Print version
  debug:
    msg: "Ansible Version: {{ ansibleVersion.stdout }}"

http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta


Daha fazla sözdizimi hatası yok, ancak bu da çalışmıyor:TASK: [ Print mosh version] ************************************** ok: [127.0.0.1] => { "msg": "Mosh" }
Zulakis

Önce sadece değişkeni yazdırmayı deneyin ve özel mesaj olmadan çıktıyı görün, şöyle: - ad: Baskı sürümü sürüm hata ayıklama: var = mosh_version.stdout_lines
Tom Aac

ok: [127.0.0.1] => { "var": { "mosh_version.stdout_lines": [ "mosh 1.2.4a [build mosh-1.2.4-57-g9eeb2fb]" ] } } Bu işe
yarar

1
Güncel cevabımı kontrol et
Tom Aac

Lütfen dikkat: debug: "msg = Mosh Sürüm: '{{mosh_version.stdout}}'" yalnızca "Mosh" görüntüler. Msg = "..." iletinin tamamı yerine tırnak işaretleri içinde olmalıdır. Ancak @xddsg'den gelen cevap, daha ayrıntılı var dökümü olduğu için daha iyi çalışır.
Dalibor Filus

6

En basit cevap

- debug: var=mosh_version.stdout

1

Sadece iki nokta üst üste işaretini kaldırın

debug: msg="Mosh Version {{ mosh_version.stdout }}"

Dürüst olmak gerekirse, bu tam bir çözüm değil ama yine de bir sonraki sorunum çalıştı ve çözdü. Diğer sözdizimini kullanamıyorum çünkü onu wheniki nokta üst üste kaldırmakla birlikte kullanmak aslında bunu çözmenin en basit yoludur. so I upvote;)
TecHunter

0

Bunu kullanıyorum, çift tırnak işareti (") ve tek tırnak işareti (')

- name: Print mosh version
  debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"

0

Her zaman Ansible dizeleri / cmds özel karakterlerle sorunları var Bunu yaparım:

  1. Tek tırnak işareti ile sarın
  2. Çift kıvrımlı parantez ile sarın

Böylece standart kolonunuz {{':'}}

Ve göreviniz şöyle olur:

- debug: msg="Ansible Version{{':'}} {{ ansibleVersion.stdout }}"

Yine bu, çoğu özel karakter, hatta dizeler için geçerlidir. Aşağıdakileri göz önünde bulundur:

docker ps --format '{{.Names}}'

Bunu Ansible'da çalıştırmak için sadece aynı mantığı uygulayın, aşağıdaki görev beklendiği gibi yürütülür:

- name: Get the docker container names
  become: yes
  shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.