2016-03-30 21 views
3

İlk olarak, benzer şekilde etiketlenmiş birçok yazı gördüm ama hiçbir şey işe yaramadı .. Yazılımı diğer sunucularda dağıtmak için başarıyla kullandığım bir Ansible ana bilgisayar var. Mevcut oyun defterlerini herhangi bir değişiklik yapmadan çalıştırmak için Vagrant kullanarak bir test ortamı kurmak istedim.Vagrant ve Ansible ile localhost'ta görevlerin çalıştırılması

Ansible ve Vagrant'ı farklı bir sunucuya kurdum ve oyun kitabı, envanter ve grup/ana makine vars dosyaları üzerine kopyaladım. Bir yanıtlayıcı 'kullanılarak, Vagrant ana bilgisayarda senaryo çağırır vagrant up çalıştırmak ana karşı çalışan

Bununla birlikte, (uzak) Provisio, bu aşağıdaki mesajı verir: localhost

PLAY [Set fact for later use] ************************************************** 
skipping: no hosts matched 

oyun kitabı (ekstre) şuna benzer:

- name: Set fact for later use 
    hosts: localhost 
    tasks: 
    - name: set number of hosts for later use 
     set_fact: num_hosts="{{ groups[tagname] | length }}" 

Ben de denedim:

- name: Set fact for later use 
    hosts: 127.0.0.1 
    connection: local 
    tasks: 
    - name: set number of hosts for later use 
     set_fact: num_hosts="{{ groups[tagname] | length }}" 

(özü) Benim statik envanter şöyle görünür:

'# Ungrouped hosts, specify before any group headers. 
localhost ansible_connection=local 

Dinamik envanter ve oyun kitabında localhost/127.0.0.1 çeşitli kombinasyonlarını ve envanter dosyasını denedim ama adım hep Serseri ana bilgisayarda atlanır.

cevap

0

Temel olarak, oyun kitabının çalıştığını biliyorum çünkü her zaman çalışıyorum. Vagrant ana bilgisayarında el ile çalıştırmayı denedim ve beklediğim gibi çalıştı.

avare eklenti bütünlüğü için serseri-host kabuk

gerekmektedir:

config.vm O zaman sadece bir eklenti ile kullanılabilir Vagrant host_shell Provisio ile yanıtlayıcı 'Provisio yerine bir olduğu .provision: host_shell, inline: < < -shell

cd yanıtlayıcı '

yanıtlayıcı'-oyun kitabı -v -i envanter install.yml --extr a-vars '{ "db": "mysql"}'

KABUK

+0

Bu soruyla ilgili ek bilgi mi yoksa bir çözüm buldunuz mu? Buradaki format Q & A'dır, ek bilgi eklemek için yeni bir gönderi yaptığınız bir forum değildir. – bschlueter

+0

Bu aslında benim için en yeni Ansible ve Vagrant ile çalışan tek şey. OP'nin, bu konuyu gerçekten çözdüğünü açıklığa kavuşturması gerekiyor. –

1

ansible.limit için localhost'u ekleme Yalnızca bir kez Vagrantfile yürütme başına provizyon başlatmak benim sorununu çözmüş, bu yüzden

ansible.limit = "all,localhost" 
kullanmak durumda

Eğer

ansible.limit = "#{machine.vm.hostname},localhost" 
yanıtlayıcı 'doğrudan geçirilen

sınır anahtarı ve Serseri seti gibi bir şey kullanabilir her VM için yanıtlayıcı' provizyon başlattığınızda her durumda. Limit doğrudan belirtilmediğinde, geçerli VM ana bilgisayar adı olarak ayarlanır, böylece Ansible yalnızca şu anda sağlanmakta olan VM ile çalışacaktır.

2

ben ilk oyun kitabı örnek tabanlı yanıtlayacağım: Eğer hosts: localhost derken, aslında localhost üzerinde görevi çalıştırmak için yanıtlayıcı 'söylemiyorlar Bu oyun kitabı özette

- name: Set fact for later use 
    hosts: localhost 
    tasks: 
    - name: set number of hosts for later use 
     set_fact: num_hosts="{{ groups[tagname] | length }}" 

(127.0.0.1). Bunun yerine, ansible 'localhost' un varsayılan olarak burada bulunan bir 'hosts' dosyasında bir başlık olmasını beklemektedir:/etc/ansible/hosts. Bunu göstermek için

, Wallabag's Docker repo 'yanıtlayıcı' başucu kitabının yapısına göz atın: Bir yanıtlayıcı 'oyun kitabı (entrypoint.yml) ve başka hosts dosyası nasıl

Wallabag's Ansible Setup

dikkat edin. hosts dosyasını okur:

[localhost] 
localhost 

bir Inventory olarak bilinen bu dosyayı, oyun kitabı çalıştırılması gerekir hangi ana bilgisayarların bir listesini sağlar. de konukçu için giriş 'localhost', 127.0.0.1'e anlamında localhost'u kullanmıyorsanız olduğunu dediğimizde

--- 
- hosts: localhost 
... 

ama biz sadece kastediyoruz: Artık entrypoints.yml başucu kitabının ilk iki satır bakmak [localhost] başlığı altındaki hosts dosyasındaki tüm ana bilgisayarlara. aynı işlevlere tutmak istedim, ama değişirse


Böylece ana dosyasını:

[bingo] 
localhost 
biz entrypoint.yml ikinci satırını değiştirmek isteyeyim

:

--- 
- hosts: bingo 
...