Vagrant 如何强制在流浪机器上运行剧本?

Vagrant 如何强制在流浪机器上运行剧本?,vagrant,ansible,ansible-playbook,vagrantfile,Vagrant,Ansible,Ansible Playbook,Vagrantfile,我写了一本安装Docker的剧本 --- - name: Install dependencies apt: name={{ item }} state=present update_cache=yes with_items: - linux-image-generic-lts-{{ ansible_distribution_release }} - linux-headers-generic-lts-{{ ansible_distribution_release }}

我写了一本安装Docker的剧本

---

- name: Install dependencies
  apt: name={{ item }} state=present update_cache=yes
  with_items:
    - linux-image-generic-lts-{{ ansible_distribution_release }}
    - linux-headers-generic-lts-{{ ansible_distribution_release }}
  become: true

- name: Add Docker repository key
  apt_key:
    id: 58118E89F3A912897C070ADBF76221572C52609D
    keyserver: hkp://p80.pool.sks-keyservers.net:80
    state: present
  register: add_repository_key
  become: true

- name: Add Docker repository
  apt_repository:
    repo: 'deb https://apt.dockerproject.org/repo {{ ansible_distribution_release }} main'
    state: present
  become: true

- name: Install Docker
  apt:
    name: docker
    state: latest
    update_cache: yes
  become: true

- name: Verify the service is running
  service:
    name: docker
    enabled: yes
    state: started
  become: true
我正在安装一台流浪者机器,它被配置成使用那个剧本

流浪汉档案:

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.ssh.insert_key = false
  config.vm.synced_folder "./", "/tmp/project",create: true
  config.vm.network :forwarded_port, guest: 80, host: 80 , auto_correct: true

  config.vm.provider :virtualbox do |v|
    # Name of machine
    v.name = "default"
    # Machine memory
    v.memory = 1024
    # Number of cpu's
    v.cpus = 2
    # This option makes the NAT engine use the host's resolver mechanisms to handle DNS requests
    v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    # Enabling the I/O APIC is required for 64-bit guest operating systems; it is also required if you want to use more than one virtual CPU in a virtual machine.
    v.customize ["modifyvm", :id, "--ioapic", "on"]
  end

  config.vm.provision "ansible" do |ansible|
    # Sets the playbook to use when machine is up'ed
    ansible.playbook = "deploy/main.yml"
  end

end
但出于某种原因,这是我得到的输出,docker没有安装在流浪机器上:

$ vagrant up --provision
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Running provisioner: ansible...
    default: Running ansible-playbook...

PLAY RECAP *********************************************************************
这样做对吗

有没有一个命令可以让我在一台正在运行的流浪机器上播放剧本

我写了一本安装docker的剧本

---
- name: Install dependencies
  apt: name={{ item }} state=present update_cache=yes
  with_items:
    - linux-image-generic-lts-{{ ansible_distribution_release }}
    - linux-headers-generic-lts-{{ ansible_distribution_release }}
  become: true
不,你还没有写剧本。您已经编写了一个YAML文件,其中包含一个Ansible任务列表

包含播放列表,播放是YAML字典,为了使Ansible正常工作,至少必须包含
主机
键。在典型的游戏中,任务列表在
tasks
键中定义

因此,要使您的文件成为剧本,您至少需要:

- hosts: default

  tasks:
    - name: Install dependencies
      apt: name={{ item }} state=present update_cache=yes
      with_items:
        - linux-image-generic-lts-{{ ansible_distribution_release }}
        - linux-headers-generic-lts-{{ ansible_distribution_release }}
      become: true
注意
默认值
这里指的是您的Vagrant文件中定义的机器名称(
v.name=“default”
),而不是任何默认值


有没有一个命令可以让我在一台正在运行的流浪机器上播放剧本

您可以使用以下命令运行Vagrant文件中定义的playbook:

vagrant provision
要运行另一个,只需使用
ansible playbook
,但必须指向流浪者的库存文件,还必须使用
Vagrant
作为
远程用户

ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml