Vagrant ansible playbook语法有问题

Vagrant ansible playbook语法有问题,vagrant,ansible,ansible-playbook,Vagrant,Ansible,Ansible Playbook,我刚刚开始使用ansible,我发现playbook语法在提供一个流浪文件时遇到了麻烦。下面是我的ansible剧本 --- - hosts: all tasks: - name: update apt cache apt: update_cache=yes become: yes become_method: sudo - name: create a directory for projects file: path=/home/projects

我刚刚开始使用ansible,我发现playbook语法在提供一个流浪文件时遇到了麻烦。下面是我的ansible剧本

---
- hosts: all
  tasks:
  - name: update apt cache
    apt: update_cache=yes
    become: yes
    become_method: sudo

  - name: create a directory for projects
    file: path=/home/projects 
          state=directory

  - name: create a directory for our project
    file: path=/home/projects/myproject 
          state=directory

  - name: install git
    apt: name=git 
    become: yes
    become_method: sudo

  - name: initiaite git
    command: git init
    args: 
       chdir: /home/projects/myproject

  - name: pull git
    git: repo=https://github.com/path/to/repo.git
         dest=/home/projects/myproject  

  - name: install mysql
    apt: name=mysql-server
    become: yes
    become_method: sudo

  - name: create mysql db for project
    mysql_db: name=mydb 
              encoding=utf8

  - name: create user and assign privileges
    mysql_user: name=foo
                password=bar 
                priv=mydb.*,GRANT

  - name: install pip
    apt: name=pip  
    become: yes
    become_method: sudo

  - name: install virtualenv
    pip: name=virtualenv
    become: yes
    become_method: sudo

  - name: Create the initial virtualenv
    command: virtualenv /home/projects/myproject/venv -p python2.7     creates="/home/projects/myproject/venv"

  - name: install requirements
    pip:
        requirements=/home/projects/myproject/requirements.txt
        virtualenv=/home/projects/bankproblem/venv      
我的问题是在第四个任务中,我试图安装git

ERROR: Syntax Error while loading YAML script, playbook.yml
Note: The error may actually appear before this position: line 21, column 1

    become_method: sudo

^
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.`
有人请给我解释一下发生了什么事

我的
vagrant文件

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "trusty-server-cloudimg-amd64-vagrant-disk1.box"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-  vagrant-disk1.box"

  config.vm.network "forwarded_port", guest: 80, host: 8080

  config.vm.provision :ansible do |ansible|
    ansible.playbook = "playbook.yml"
  end
end
顺便说一句,请忽略剧本的天真写法,因为我的初衷是简单地开始。

就是这样

  • 我必须确保没有不必要的空白,并且

  • 任务的参数必须在一行中,以空格分隔,例如

  • 而不是

    git: repo=https://github.com/path/to/repo.git
         dest=/home/projects/myproject
    
    我需要使用

    git: repo=https://github.com/path/to/repo.git dest=/home/projects/myproject
    

    我真傻!现在没有语法错误了。

    很奇怪。你能删除
    been\u方法:sudo
    行看看会发生什么吗?(sudo是默认的been方法)。@leucos这太傻了。请参见答案嗯,好吧,我被困在了been_方法行:)是的,如果使用'git:>'(要避免)或冒号语法(更可取),YAML可以执行多行。比如@leucos,看看你是否知道这是怎么回事