2016-06-14 15 views
3

私はUbuntu Xenial VagrantのゲストをAnsibleにプロビジョニングしようとしています。 Ubuntu 14.04では正常に動作しましたが、16.04では失敗します。Ubuntu 16.04 Vagrantを提供することができません。

- name: Ensure /srv/web exists become: yes file: path: /srv/web state: directory mode: 0755 owner: "{{ remote_user }}"

検索中には多くの助けを見つけていない:私は取得エラーは、次の私がある実行しています

chown failed: failed to look up user vagrant

作業です。

ありがとうございます!

編集:デジタルオーシャン14.04液滴のさらなるテストでもこの問題が示されます。

編集2:-vvvvレベルでFull output log

+0

多分、これはあなたが作業している特定の画像と関係があります。 – Wtower

+0

私はまた、デジタル海洋14.04画像でこの同じ正確な問題に遭遇しました。私の質問を更新します – Zooey

+0

代わりに "Bento Boxes"を使うことができます - bentoのubuntuボックスには、より一般的な "迷惑な"ユーザが付属しています –

答えて

4

SOLOUTION#1

のUbuntu 16.04でのpython3、ない2.7.x.を有しますAnabilitiesはまだPython 3をサポートしていません。

Ubuntu 16.04では、次の演奏を使ってPython 2.7をインストールしました。

--- 
- hosts: xenials 
    gather_facts: no 
    become: yes 
    tasks: 
    - name: Install python 2.7 
     raw: apt-get update -qq && apt-get install -qq python2.7 

    - name: check if softlink exists 
     stat: 
     path: /usr/bin/python 
     register: python_file 

    - name: create softlink for python 2.7 
     raw: ln -s /usr/bin/python2.7 /usr/bin/python 
     when: python_file.stat.islnk is not defined 

    - name: Ensure /srv/web exists 
     file: 
     path: /srv/web 
     state: directory 
     mode: 0755 
     owner: "{{ remote_user }}" # hope you have defined this variable in your ansible.cfg 

キーラインは、プレイが失敗し、リモート・サーバーは、まだこのラインをsupport.Withoutすることはできません、リモートサーバー上でコードを実行するAnsibleを防ぐgather_facts: noです。

これは/usr/bin/python2.7を提供します。これは私の在庫ファイルで明示的に指し示しています。

[xenials] 
192.168.33.100 

[xenials:vars] 
ansible_python_interpreter=/usr/bin/python2.7 

xenialsには特別なものはありません。それは私が自分の目録に定義した単なるグループです。

このansible_python_interpreterは、python2.7用のソフトリンクを作成しているため、最初に削除する必要があります。 希望します。このエラーの

SOLOUTION#2

理由:

私は、詳細ログが含まれている要点を検討し、これを考え出した:

  • 私はあなたが確信しています公式な腐食ボックスを使用ubuntu/xenial64
  • この公式の腐食ボックスにはvagrantユーザー enter image description here
  • "msg": "chown failed: failed to look up user vagrant"これは、正確なエラーを見つけるのに役立つエラートレースです。

はソリューション-1このエラーに:

ダウンロード他のいくつかの放浪ボックス、私はそれが本当に良い評価を得ているこの放浪ボックスgeerlingguy/ubuntu1604をお勧めします

ソリューション-2このエラーに:

公式の迷惑メールボックスでは、このエラーを緩和するために同じことを行うことができます。あなたのVagrantfileに以下を追加します。

config.vm.provision "shell" do |s| 
    ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip 
    ssh_user = ENV['USER'] 
    s.inline = <<-SHELL 
     adduser --disabled-password --gecos "" #{ssh_user} 
     mkdir -p /home/#{ssh_user}/.ssh 
     touch /home/#{ssh_user}/.ssh/authorized_keys 
     chown -R #{ssh_user}. /home/#{ssh_user}/.ssh 
     echo "#{ssh_user} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/99-#{ssh_user} 
     echo #{ssh_pub_key} >> /home/#{ssh_user}/.ssh/authorized_keys 
     chmod 0440 /etc/sudoers.d/99-#{ssh_user} 
    SHELL 
    end 

それが何をするかは、単にゲストにホストのログインユーザを作成し、そのためのRSA鍵をアップロードしています。あたかもそれが遠隔のマシンであるかのように、あなたは迷惑メールマシンにそのプレイブックを走らせることができます。さらに問題が発生する場合は、私に知らせてください。

ご希望の場合はこちらをご覧ください。

+0

私はすでにPython 2.7をターゲットにインストールしています。 – Zooey

+0

冗長性を高めて質問にエラーを貼り付けてください –

+0

質問にフル出力の要点を追加しました – Zooey

2

私は同じ問題を抱えていました。私はubuntu/xenial64を使用しています。

私は、vagrantユーザーがいないことに気付きました。私がVagrantを使用する際にSSHを使用すると、ubuntuユーザが使用されます。

私はansible.cnf作成:いいえパイソン:私は別の問題が発生した後

[default] 
remote_user = ubuntu 

を。 ansible pingモジュールは、私のホストのために働く今、

sudo apt-get install python2.7 
sudo apt-get install python-pip 

:私はこれを修正しました。

$ ansible elastichsearch -m ping 
192.168,101.10 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 
関連する問題