1

我是Ansible(或任何腳本語言)的完整n00b,希望對我的語法/縮進(?)問題有所幫助。Playbook(Ansible)語法錯誤

這是我的簡單操作手冊,目標是在AWS中創建實例並將其添加到安全組。

我一樣的問題是什麼,因爲我正從不同的YAML跳棋2個不同的錯誤很困惑:

1)Yamllint告訴我:「():沒有找到預期關鍵在解析塊映射在第2行第3列「

2)Swagger告訴我:」YAML語法錯誤。第6行第3列的序列條目的錯誤縮進: - name:創建安全組^「(指向第二個」名稱「)

任何幫助將很大〜

乾杯〜

--- 
- name: Provision an EC2 Instance and assign an SG 
    hosts: local 
    connection: local 
    gather_facts: False 
    - name: Create a security group 
     local_action: 
      module: ec2_group 
      name: test_sg 
      region: us-west-2 
      rules: 
      - proto: tcp 
       type: ssh 
       from_port: 22 
       to_port: 22 
       cidr_ip: 0.0.0.0/0 
      - proto: tcp 
       from_port: 80 
       to_port: 80 
       cidr_ip: 0.0.0.0/0 
      rules_egress: 
      - proto: all 
       type: all 
       cidr_ip: 0.0.0.0/0 
    - name: Create new instance 
     local_action: ec2 
      group= test_sg 
      instance_type= t1.micro 
      image= ami-9ff7e8af 
      wait= true 
      region= us-west-2 
      keypair= XXX-keypair 
      count= 1 
     register: ec2 

回答

0

在第6行中,您將介紹一個列表(短劃線符號)的新項目。但是yaml解析器不知道該如何處理該項目。有兩種方法。

  • 揚鞭認爲它是主列表的一部分,它是在同一水平線上2,所以抱怨糟糕的縮進線6

  • Yamllint知道這是一個子表,但它不不知道分配子列表的關鍵。

最有可能的,yamllint是正確的,你錯過了一個名爲tasks關鍵。即使修復了這一點,你也會發現還有其他的識別問題。下面,我貼我的理解是正確的文本(從YAML角度)

--- 
- name: Provision an EC2 Instance and assign an SG 
    hosts: local 
    connection: local 
    gather_facts: False 
    tasks: 
    - name: Create a security group 
     local_action: 
      module: ec2_group 
      name: test_sg 
      region: us-west-2 
      rules: 
      - proto: tcp 
       type: ssh 
       from_port: 22 
       to_port: 22 
       cidr_ip: 0.0.0.0/0 
      - proto: tcp 
       from_port: 80 
       to_port: 80 
       cidr_ip: 0.0.0.0/0 
      rules_egress: 
      - proto: all 
       type: all 
       cidr_ip: 0.0.0.0/0 
    - name: Create new instance 
     local_action: ec2 
      group= test_sg 
      instance_type= t1.micro 
      image= ami-9ff7e8af 
      wait= true 
      region= us-west-2 
      keypair= XXX-keypair 
      count= 1 
     register: ec2 
+0

由於一噸Gonfva,這是很大的幫助〜有你固定的那些之外的其他一些語法問題,但我設法得到該腳本正在運行。你能推薦一個腳本編輯器來幫助格式化yaml嗎?我在Mac上。 – cruddystuff

+0

我使用Atom,它有點幫助,但我不時因縮進問題而受到傷害。另外,請允許我在stackoverflow用法上寫兩個一般性註釋:1.嘗試設置最相關的標記(在這個問題中,我不確定AWS或EC2與問題相關)。 2.如果你覺得答案能解決你的問題,你應該考慮投票和/或結束這個問題,因爲這有助於其他人(已經回答的人,尋找答案的人以及尋找問題的人回答) – Gonfva

+0

我使用原子也是如此。好的謝謝你將繼續努力理解語法。好的指出,會做。對不起,我是Stackoverflow的新手。現在會這樣做。再次感謝〜 – cruddystuff