ansible playbook语法的麻烦

时间:2015-07-20 16:33:48

标签: 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 
          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.`

有人请向我解释发生了什么。

我的Vagrantfile

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

P.S。请忽略编写剧本的天真方式,因为我的目的是简单地开始。

1 个答案:

答案 0 :(得分:3)

只是那个

  1. 我必须确保没有不必要的空白区域

  2. 任务的参数必须在一行中用空格分隔,例如

  3. 而不是

    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
    
    傻傻的我!现在不再有语法错误。