apple_9250
@apple_9250

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

playbook、ymlでコロン(:)が何をしてもSyntax errorを吐く

解決したいこと

vmware collectionを使って仮想マシンなどの情報を出したい。
しかし、コロンを使うとSyntax errorが出るため直したい

sudo viで書いた内容

resolved.png

上記の実行結果

例2.png

自分で試したこと

・コロンの部分を、{{':'}}に変えた
・行を変えた
例→ hostname:
- "{{ vcenter_hostname }}"
・コロンの前にバックスラッシュ→ :

色々調べましたが、上記どれを試してもうまくいきません。
Ansibleは初心者なのでご知見ある教えてくださると幸いです。よろしくお願いします。

0

3Answer

コロンが問題なのではなくインデントの深さがおかしいせいで YAML の構文エラーが出ています。1 register: cluster_info を書く位置が間違っているので、以下のように行を入れ替えてください。

- name: Gather info for VM
  register: cluster_info
  community.vmware.vware_host_config_info:
    hostname: "If center_hostname 33"
    
  1. register: cluster_infoキー: 値 の形になっていますが、以降3行のインデントが深いのでこれもキーに対する値となり、値の指定が矛盾することになります。

2Like

Comments

  1. @apple_9250

    Questioner

    ご指摘ありがとうございます。
    書いてくださったように、書く位置を変えてみたらコロンのSyntaxErrorは出なくなったのですが、以下のようなエラーが出ました。

    これはhostsの指定、localhostが間違っているということでしょうか。
    教えてくださった順番だけで他は編集しておりません。

    aa.png

  2. msg にエラーが出ているとおり、必要な項目が足りていません。

    "one of the following is required: cluster_name, esxi_hostname"

    詳しくは community.vmware.vware_host_config_info のマニュアルを読んでください。

  3. @apple_9250

    Questioner

    ありがとうございます。
    cluster_nameなどの項目を入れたら、
    pyvimomoのエラーが出たので「pip install pyvimomo」をし、
    そしたら今度はSSLエラーが出たのでvcenter_hostnameをFQDNからIPアドレスを入力したら出力することができました。

    ずっとコロンが原因と思っていたため助言大変助かりました。
    ありがとうございました。

vars:の配下に -name定義? 机上なのでわからないです。下から1行目にハイフン?

普通に構文チェックして下さい。

p.s. AnsibleはSQLと同じ、定義型プログラム言語です。(反論者多し)よって、マニュアルを一つ一つ読むこと、そして、トライ&エラーが習得の早道です。

1Like

Your answer might help someone💌