0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

macOSでkubesprayを使いVagrant upするとAnsibleが失敗する場合の対処方法

Last updated at Posted at 2019-03-20

kubernetesを触ってみようと思い,ちょっと前の雑誌ですがSoftware Design2018年 3月号の特集「Kubernetes入門」を見ながら,kubesprayを使って試してみています.

初っ端のVagrant環境構築でエラーが発生してしまったので,現象と対処方法を記録します.

環境

  • macOS: 10.14 (Mojave)
  • Vagrant: 2.2.4
  • Ansible: 2.7.9
  • Kubespray: master(e640233)

問題

kubesprayのリポジトリをクローンして,次のようにVagrantの環境を立ち上げようとするとエラーになりました.

$ vagrant up
Bringing machine 'k8s-1' up with 'virtualbox' provider...
Bringing machine 'k8s-2' up with 'virtualbox' provider...
Bringing machine 'k8s-3' up with 'virtualbox' provider...
==> k8s-1: Cloning VM...

...

==> k8s-3: Running provisioner: ansible...
Vagrant has automatically selected the compatibility mode '2.0'
according to the Ansible version installed (2.7.9).

Alternatively, the compatibility mode can be specified in your Vagrantfile:
https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode

    k8s-3: Running ansible-playbook...
SUDO password:
 [WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match 'all'


PLAY [localhost] ***************************************************************
skipping: no hosts matched
 [WARNING]: Could not match supplied host pattern, ignoring: bastion

...

PLAY RECAP *********************************************************************

Wednesday 20 March 2019  10:13:21 +0900 (0:00:00.113)       0:00:00.113 *******
===============================================================================

Ansibleの実行が全部skippingになってしまいました.

対処方法

inventory/sample/hosts.iniをリネームして退避することでAnsibleがskippingされずに走るようになりましたが,まだエラーが発生しました.

$ mv inventory/sample/{hosts.ini,hosts.ini.bak}
$ vagrant provision

...

TASK [download : container_download | copy container images to ansible host] ***
Wednesday 20 March 2019  10:28:38 +0900 (0:00:02.034)       0:07:21.903 *******
fatal: [k8s-1 -> localhost]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --out-format=<<CHANGED>>%i %n%L /tmp/releases/containers/gcr.io_google_containers_cluster-proportional-autoscaler-amd64:1.3.0.tar /tmp/releases/containers/gcr.io_google_containers_cluster-proportional-autoscaler-amd64:1.3.0.tar", "msg": "rsync: link_stat \"/tmp/releases/containers/gcr.io_google_containers_cluster-proportional-autoscaler-amd64:1.3.0.tar\" failed: No such file or directory (2)\nrsync: push_dir#3 \"/tmp/releases/containers\" failed: No such file or directory (2)\nrsync error: errors selecting input/output files, dirs (code 3) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/main.c(581) [receiver=2.6.9]\nrsync: connection unexpectedly closed (8 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/io.c(453) [sender=2.6.9]\n", "rc": 12}

NO MORE HOSTS LEFT *************************************************************
        to retry, use: --limit @/Users/sakao/src/github.com/kubernetes-sigs/kubespray/cluster.retry

PLAY RECAP *********************************************************************
k8s-1                      : ok=212  changed=42   unreachable=0    failed=1
k8s-2                      : ok=130  changed=31   unreachable=0    failed=0
k8s-3                      : ok=127  changed=31   unreachable=0    failed=0

...

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

そこで,Vagrantfiledownload_run_onceFalseに変更し,再実行することで正しくAnsibleが実行完了しました.

$ sed -i -e 's/"download_run_once": "True",/"download_run_once": "False",/' Vagrantfile
$ vagrant provision

...

PLAY RECAP *********************************************************************
k8s-1                      : ok=363  changed=73   unreachable=0    failed=0
k8s-2                      : ok=318  changed=68   unreachable=0    failed=0
k8s-3                      : ok=283  changed=55   unreachable=0    failed=0

...

原因

  • #3748のイシューにあるように,Ansibleがデフォルトでiniファイルを見てしまい,Vagrantfileで指定しているインベントリが無視されるようです(たぶん)
  • #3749のイシューにあるように,localのrsyncが悪さをしてしまうようです(たぶん)

留意点

  • SUDO password:にはvagrantと打ちました
  • 関係あるかわかりませんが,Software Designの記事に倣って,Ansible設定ファイルを2点変更して実行しています
$ git diff -p -U0 inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml roles/network_plugin/flannel/defaults/main.yml | cat
diff --git a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
index 09727b33..f0e8afea 100644
--- a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
+++ b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
@@ -176 +176 @@ podsecuritypolicy_enabled: false
-# kubeconfig_localhost: false
+kubeconfig_localhost: true
diff --git a/roles/network_plugin/flannel/defaults/main.yml b/roles/network_plugin/flannel/defaults/main.yml
index f7f773fd..aec4c5da 100644
--- a/roles/network_plugin/flannel/defaults/main.yml
+++ b/roles/network_plugin/flannel/defaults/main.yml
@@ -9 +9 @@
-# flannel_interface:
+flannel_interface: eth1
  • プロビジョニングには10分くらい時間がかかるので気長に待ちましょう☕
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?