首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在码头集装箱生成中工作的不可用的远程设置

不能在码头集装箱生成中工作的不可用的远程设置
EN

DevOps用户
提问于 2018-02-22 21:18:40
回答 1查看 412关注 0票数 3

我有一个包装模板,开始一个码头集装箱,并提供它。shell脚本提供程序似乎正在工作,但是,虽然剧本运行并似乎成功,但与shell提供程序不同,它似乎不适用于Docker容器。

packer-template.json

代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
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 -y

add_ansible_roles.sh

代码语言:javascript
复制
sudo ansible-galaxy install djx339.k8s-kubeadm-master

kubeadm.yml

代码语言:javascript
复制
- name: install kubeadm
  hosts: localhost
  roles:
    - { role: djx339.k8s-kubeadm-install }

来自剧本的输出

代码语言:javascript
复制
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脚本中添加的角色与剧本之间的不匹配。

EN

回答 1

DevOps用户

发布于 2018-02-25 18:15:17

看起来,您试图在容器中本地运行ansible,但是您却在您用来在其上运行packer的机器(供应程序)上本地运行它。

要在局部模式中运行ansible,您需要将打包文件的ansible部分更新为:

代码语言:javascript
复制
    {
        "type": "ansible-local",
        "playbook_file": "./kubeadm.yml"
    }

此外,我建议将connection: local添加到您的ansible剧本中,以避免不必要的ssh连接尝试。

代码语言:javascript
复制
- name: install kubeadm
  hosts: localhost
  connection: local
  roles:
    - { role: djx339.k8s-kubeadm-install }
票数 3
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/3418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档