我有一个包装模板,开始一个码头集装箱,并提供它。shell脚本提供程序似乎正在工作,但是,虽然剧本运行并似乎成功,但与shell提供程序不同,它似乎不适用于Docker容器。
packer-template.json
{
"builders": [
{
"type": "docker",
"image": "chenjr0719/ubuntu-unity-novnc",
"commit": "true"
}
],
"provisioners": [
{
"type": "shell",
"inline": ["sudo apt-get update"]
},
{
"type": "shell",
"script": "setup_ansible.sh"
},
{
"type": "shell",
"script": "add_ansible_roles.sh"
},
{
"type": "ansible",
"playbook_file": "./kubeadm.yml"
}
]
}setup_ansible.sh
sudo apt-get install software-properties-common -y
sudo apt-add-repository ppa:ansible/ansible -y
sudo apt-get update
sudo apt-get install ansible -yadd_ansible_roles.sh
sudo ansible-galaxy install djx339.k8s-kubeadm-masterkubeadm.yml
- name: install kubeadm
hosts: localhost
roles:
- { role: djx339.k8s-kubeadm-install }来自剧本的输出
docker: PLAY [install kubeadm] *********************************************************
docker:
docker: TASK [Gathering Facts] *********************************************************
docker: ok: [localhost]
docker:
docker: TASK [djx339.k8s-kubeadm-install : include_tasks] ******************************
docker: included: /home/dw/.ansible/roles/djx339.k8s-kubeadm-install/tasks/setup-Debian.yml for localhost
docker:
docker: TASK [djx339.k8s-kubeadm-install : Sysctl] *************************************
docker: ok: [localhost] => (item={u'name': u'net.bridge.bridge-nf-call-iptables', u'value': 1})
docker:
docker: TASK [djx339.k8s-kubeadm-install : Add kuebeadm apt key] ***********************
docker: ok: [localhost]
docker:
docker: TASK [djx339.k8s-kubeadm-install : Add kubeadm apt repo] ***********************
docker: ok: [localhost]
docker:
docker: TASK [djx339.k8s-kubeadm-install : Install kubeadm] ****************************
docker: ok: [localhost] => (item=[u'kubelet', u'kubeadm', u'kubectl', u'kubernetes-cni'])
docker:
docker: PLAY RECAP *********************************************************************
docker: localhost : ok=6 changed=0 unreachable=0 failed=0在码头容器中运行kubeadm会引发一个错误。
为什么剧本不适用?当我在本地运行它时,它就能工作。
我得到的错误是:
库比亚德姆未找到
所以基本上它没有安装kubeadm。
注意:刚刚注意到我在add_ansible_roles.sh脚本中添加的角色与剧本之间的不匹配。
发布于 2018-02-25 18:15:17
看起来,您试图在容器中本地运行ansible,但是您却在您用来在其上运行packer的机器(供应程序)上本地运行它。
要在局部模式中运行ansible,您需要将打包文件的ansible部分更新为:
{
"type": "ansible-local",
"playbook_file": "./kubeadm.yml"
}此外,我建议将connection: local添加到您的ansible剧本中,以避免不必要的ssh连接尝试。
- name: install kubeadm
hosts: localhost
connection: local
roles:
- { role: djx339.k8s-kubeadm-install }https://devops.stackexchange.com/questions/3418
复制相似问题