2016-10-23 12 views
0

私は、迷惑メールボックスを準備しています。しかし、私の迷惑メールホストは無能な人をサポートしていないので、私は迷惑メールボックスの中からローカルホストに対して無防備に実行しなければなりません。私はシェルプロビジョナを使用しています。これは、実行可能なスクリプトを実行し、同期されたフォルダ内のプレイブックに対して正しい安全なコマンドを実行します。寄せ集めの構成を整理しておく方法

このソリューションは機能しますが、構成データがファイル間でぎゅっとしているため、扱いにくく、維持が困難です。以下に示すように、Vagrantfileとプロビジョニングスクリプトの両方にハードコードされたプレイブックパスの複製があります。そして、われわれが知っているように、重複が悪の源です。むしろ、すべての設定文字列をVagrantfileまたは外部ファイルに保存したいと考えています。私の場合はこれが可能ですか?コマンドラインパラメータでこれらの値を上書きすることもできればうれしいでしょう。ここで

は、プロビジョニング・スクリプト

apt-get install -y python-pip 
apt-get install -y git-core 

if [ -z $PLAYBOOK_PATH ]; then 
    echo "PLAYBOOK_PATH not set, using default" 
    PLAYBOOK_PATH=/etc/provisioning/vagrant/playbook.yml 
fi 

if [ -n $PLAYBOOK_PATH ]; then 
    echo "PLAYBOOK_PATH set at $PLAYBOOK_PATH" 

    if [ -f $PLAYBOOK_PATH ]; then 
    echo "PLAYBOOK FOUND, insalling ansible and starting provisioning" 
    pip install ansible 
    pip install markupsafe 

    if (ansible-playbook $PLAYBOOK_PATH); then 
     echo "provisioning OK" 
    else 
     echo "prvosioning failed" 
    fi 

    else 
    echo "PLAYBOOK not found" 
    fi 

else 
    echo "PLAYBOOK_PATH not set" 
fi 

放浪ファイルここ

VAGRANT_API_VERSION = 2 
BOX_IMAGE = "ubuntu/trusty64" 
PROVISIONING_SRC = "./provisioning" 
PROVISIONING_DEST = "/etc/provisioning/vagrant" 

Vagrant.configure(VAGRANT_API_VERSION) do |config| 

    config.vm.box = BOX_IMAGE 
    config.vm.network "private_network", ip: "192.168.22.22" 
    config.vm.network "forwarded_port", guest: 8080, host: 8080 
    config.vm.network "forwarded_port", guest: 8081, host: 8081 
    config.vm.network "forwarded_port", guest: 2222, host: 2223 
    config.vm.network "forwarded_port", guest: 5000, host: 5000 
    config.vm.network "forwarded_port", guest: 50000, host: 50000 
    config.vm.provision :shell, path: "provisioning.sh" 

    config.vm.synced_folder "./provisioning", "/etc/provisioning/vagrant" 

end 

され、最終的にここにフォルダ

- name: Provision local docker host 
    hosts: localhost 
    become : yes 
    roles: 
    - docker.ubuntu 
    tasks: 
    - name: Add vagrant to docker group 
    become: yes 
    user: name=vagrant groups=docker append=yes 

答えて

1

をプロビジョニング内部の脚本であるあなたは、必ずしも行う必要がいけませんこのすべて。

ベイグラントはrunning ansible on the guest VM aka ansible local

ベイグラントAnsibleローカルプロビジョニングは、ゲストマシンに直接ansible-脚本を実行することにより、Ansibleプレイブックを利用して提供するゲストをことができますをサポートしています。あなたは

VAGRANT_API_VERSION = 2 
BOX_IMAGE = "ubuntu/trusty64" 
PROVISIONING_SRC = "./provisioning" 
PROVISIONING_DEST = "/etc/provisioning/vagrant" 

Vagrant.configure(VAGRANT_API_VERSION) do |config| 

    config.vm.box = BOX_IMAGE 
    config.vm.network "private_network", ip: "192.168.22.22" 
    config.vm.network "forwarded_port", guest: 8080, host: 8080 
    config.vm.network "forwarded_port", guest: 8081, host: 8081 
    config.vm.network "forwarded_port", guest: 2222, host: 2223 
    config.vm.network "forwarded_port", guest: 5000, host: 5000 
    config.vm.network "forwarded_port", guest: 50000, host: 50000 

    config.vm.provision "ansible_local" do |ansible| 
    ansible.playbook = "provisioning/playbook.yml" 
    end 

end 
ようVagrantfileを持つことができます

関連する問題