2017-10-21 100 views
0

我正在尝试使用Vagrant创建一个ubuntu/xenial64虚拟机并使用Ansible进行配置。工具安装的版本是:使用Vagrant和Ansible提供ubuntu/xenial64

流浪:2.0.0
Ansible:2.3.2.0
的Python:2.7.10
VirtualBox的:5.1.30

这些都是我正在运行的目录的内容vagrant up

├── Vagrantfile 
└── playbooks 
    ├── inventory 
    ├── main.yml 
    └── vars.yml 

这些是Vagrantfile内容:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.box = "ubuntu/xenial64" 
    config.ssh.insert_key = true 

    config.vm.provider "virtualbox" do |v| 
    v.name = "ubuntu" 
    v.memory = 1024 
    v.cpus = 2 
    end 

    config.vm.hostname = "ubuntu" 
    config.vm.network :private_network, ip: "192.168.33.7" 

    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "playbooks/main.yml" 
    ansible.sudo = true 
    ansible.verbose = true 
    ansible.inventory_path = "playbooks/inventory" 
    ansible.compatibility_mode = "2.0" 
    end 

end 

playbooks/main.yml

--- 
- hosts: ubuntu 
    become: yes 

    vars_files: 
    - vars.yml 

    roles: 
    - geerlingguy.docker 

playbooks/inventory

[ubuntu] 
192.168.33.7 

[ubuntu:vars] 
ansible_ssh_user=vagrant 
ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 

剧本/ vars.yml:

docker_edition: 'ce' 
docker_package: "docker-{{ docker_edition }}" 
docker_package_state: present 

当我运行vagrant up输出为:

==> default: Checking for guest additions in VM... 
    default: The guest additions on this VM do not match the installed version of 
    default: VirtualBox! In most cases this is fine, but in rare cases it can 
    default: prevent things such as shared folders from working properly. If you see 
    default: shared folder errors, please make sure the guest additions within the 
    default: virtual machine match the version of VirtualBox you have installed on 
    default: your host and reload your VM. 
    default: 
    default: Guest Additions Version: 5.0.40 
    default: VirtualBox Version: 5.1 
==> default: Setting hostname... 
==> default: Configuring and enabling network interfaces... 
==> default: Mounting shared folders... 
    default: /vagrant => /Users/danilo/tutorials/ansible ubuntu 
==> default: Running provisioner: ansible... 
    default: Running ansible-playbook... 
PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o IdentityFile=/Users/danilo/tutorials/ansible ubuntu/.vagrant/machines/default/virtualbox/private_key -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --extra-vars=ansible_user\=\'ubuntu\' --limit="default" --inventory-file=playbooks/inventory --become -v playbooks/main.yml 
No config file found; using defaults 
ERROR! Specified --limit does not match any hosts 
Ansible failed to complete successfully. Any error output should be 
visible above. Please fix these errors and try again. 

但是,按预期vagrant ssh作品。任何想法,我可能会失踪?

回答

1

首先,如果你使用hosts: ubuntu,那么你必须定义一个名为机:

config.vm.define "ubuntu" do |ubuntu| 
    ubuntu.vm.provision "ansible" do |ansible| 
    ansible.playbook = "playbooks/main.yml" 
    ansible.sudo = true 
    ansible.verbose = true 
    ansible.inventory_path = "playbooks/inventory" 
    ansible.compatibility_mode = "2.0" 
    end 
end 

否则更改为hosts: default在剧中。

但后来......

  • 我不知道为什么你通过192.168.33.7尝试准备 - 看来这个用例完全没有必要的 - 你可以从Vagrantfile
  • 在同一清单中移除ansible.inventory_path文件指定用户vagrant未在ubuntu/xenial64
  • ansible.sudo配置也是在Vagrantfile
  • 运行的不必要的ubuntu/xenial64这种方式可能会失败,因为缺乏Python 2
+0

在做出这些更改并再次运行后,我得到“PLAY [192.168.33.7] ************* *********************************************** 跳过:没有主机匹配“ –

+0

请加倍努力。 – techraf