0

Фон: Я часто работаю на разных ноутбуках, работающих в разных операционных системах. Это означает, что я трачу много времени на повторную установку тех же программ и приложений. Я решил попробовать автоматизировать это, используя Vagrant and Ansible.Vagrant-> Ansible: файл хоста не найден, при условии, что список хостов пуст, нет совпадений хостов

Проблема: Как я хочу, чтобы это построить, чтобы быть развертываемыми на ряд операционных систем, я хочу Vagrant плести простую ubuntu/trusty64 коробки, и анзибль быть установлена ​​и выполнить на поле Ubuntu, однако у меня проблемы с серверами Ansible. Я прочитал документы Ansible и прочитал об инвентаризации, однако не нашел очень ясным, как они работают или где это должно быть определено в моей настройке. Для справки я новичок и для Vagrant, и для Ansible, но имею опыт работы с VirtualBox. Любая помощь будет высоко ценится

Stack след здесь: stacktrace

Vagrantfile:

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

# vagrant plugin install vagrant-ansible-local 

VAGRANTFILE_API_VERSION = "2" 

$ansible_install_script = <<SCRIPT 
if ! which ansible >/dev/null; then 
    apt-get update -y 
    apt-get install -y software-properties-common 
    apt-add-repository -y ppa:ansible/ansible 
    apt-get update -y 
    apt-get install -y ansible 
fi 
SCRIPT 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.define "dev-machine", primary: true do |machine| 
    machine.vm.box = "ubuntu/trusty64" 
    machine.vm.hostname = 'local.dev-machine.box' 
    machine.vm.network :private_network, :ip => '10.20.1.2' 

    machine.vm.provider "virtualbox" do |vb| 
     vb.gui = true 
     vb.memory = "8192" 
    end # vb 

    machine.vm.provision "shell", inline: $ansible_install_script 

    machine.vm.provision "ansibleLocal" do |ansible| 
     ansible.guest_folder = "/vagrant-ansible" 
     ansible.raw_arguments = "--inventory=/vagrant-ansbile/ansible_hosts" 
     ansible.playbook = "playbook.yml" 
     ansible.limit = "local.dev-machine.box" 
    end # ansible 
    end # machine 
end # config 

playbook.yml:

--- 
- hosts: all 
    become: yes 
    become_method: sudo 
    tasks: 
    - name: Check Ubuntu 14.04 running 
     assert: 
     that: 
      - ansible_distribution == 'Ubuntu' 
      - ansible_distribution_release == 'trusty' 

    - name: update apt cache 
     apt: update_cache=yes 

    - name: install git 
     apt: name=git-core state=latest 

    - name: Install Python 3.4 
     apt: name={{items}} state=latest 
     with_items: 
     - python 
     - python-dev 
     - python-virtualenv 
     - python-setuptools 
     - python-pip 

ответ

0

Во-первых, у вас есть синтаксические ошибки в имени создатель - он должен быть ansible_local не ansibleLocal.

Во-вторых, вам кажется, что вы просто хотите запустить playbook против одной машины, которая является стандартным случаем. Следующее определение:

machine.vm.provision "ansible_local" do |ansible| 
    ansible.playbook = "playbook.yml" 
end # ansible 

будет запустить playbook.yml (хранится в директории проекта Vagrant на хосте), используя исполняемый файл анзибль на поле Vagrant. Вам не нужно указывать какие-либо другие параметры для этого, Vagrant автоматически предоставит файл инвентаризации, указывающий на локальный компьютер в качестве цели.


В качестве примечания:

Не используйте анзибль от APT. Это несколько поколений (v 1.7.2).

Вместо этого сконфигурируйте pip и используйте официальный официальный релиз от PyPI.

+0

Спасибо, я не видел ошибку синтаксиса. – jhole89