繁体   English   中英

使用 Ansible 安装 Docker

[英]Using Ansible to install Docker

前段时间我问了一个关于 Ansible 和 Docker 的问题,得到了这个很好的答案 我现在试图更好地理解这个答案。 本质上,我有一堆 Ubuntu 14.04 虚拟机,我希望 Ansible 在所有这些虚拟机上安装/维护 Docker。

我的 Ansible 项目:

myansible01.example.com:/opt/ansible/
    site.yml
    allservers.yml
    roles/
        common/
            tasks/
                main.yml

site.yml在哪里:

---
# file: site.yml
- include: allservers.yml

allservers.yml在哪里:

---
# file: allservers.yml
- hosts: all
  user: {{ privileged_user }}
  gather_facts: false
  roles:
  - common

roles/common/tasks/main.yml在哪里:

---
# file: roles/common/tasks/main.yml
- name: Add docker apt keys
  apt_key: keyserver=keyserver.ubuntu.com id=36A1D7869245C8950F966E92D8576A8BA88D21E9
- name: Update apt
  apt_repository: repo='deb https://get.docker.com docker main' state=present
- name: Install Docker
  apt: pkg=lxc-docker update_cache=yes

最后,我的/etc/ansible/hosts

[allservers]
server01.example.com
server02.example.com
server03.example.com
...etc.
server49.example.com
server50.example.com

这里有几个问题:

  • 我如何实际运行它以便 Ansible 在所有 50 台服务器上安装 Docker? 类似于(来自项目根目录) ansible-playbook site.yml -f 10
  • 如何将privileged_user “注入”到上述命令中?
  • 为什么第一个任务“添加 docker apt 密钥”是必要的? 根据apt_key docs ,我们正在从 Ubuntu 存储库中获取一个apt_key ,但是这个长密钥从何而来? 这在安装 Docker 中起什么作用(我问是因为如果你去Docker Ubuntu 安装页面,它根本没有提到这些apt_keys )?
  • 为了正确安装 Docker,我还需要做些什么?

以更合乎逻辑的顺序:

为什么是apt-key

apt-key用于管理apt用于验证包(如docker )的密钥列表。 已使用这些密钥进行身份验证的包将被视为受信任的。 当您添加一个存储库时,它会很有用,其中包含您想要的包的更新/更好/最新版本。

(来源:apt-key 的手册页)

如果不先添加repo的key, apt将无法获取包,并且会哭“W: GPG error: ... 以下签名无法验证,因为公钥是不可用:NO_PUBKEY 任何键号” 所以这基本上是为了让您可以获得软件包并安装它。

docker Ubuntu 安装页面中,注释中的第3点明确提到了apt-key

curl -sSL https://get.docker.com/gpg | sudo apt-key add -

变量

要在您的配置中注入{{ privileged_user }} :您可以通过在<INVENTORY_FILE_LOCATION>/group_vars/all定义privileged_user来使用全局变量,如下所示:

---
# Your user
privileged_user: "root"

如果此group_vars/all文件不存在,请创建它。

注意:默认清单文件位置是/etc/ansible/hosts ,但在 Mac OS X 上是/usr/local/etc/ansible/hosts

(有关更多信息,请参见此处

运行剧本

然后,要运行您的剧本,请执行以下操作:

ansible-playbook -l server49.example.com allservers.yml -v 

-l是如果你想特别限制一个服务器,但你可以省略它

-v是如果你想要一个详细的输出(或-vv-vvv ...)

编辑:启动 docker 守护进程

如果您想确保在此之后启动 docker 守护程序,我建议无论如何都重新启动它:

- name: Start Docker
  service: name=docker state=restarted

根据发行版的不同,它可能之前已自动启动,但根据我在此处的文档中的理解, “安装 Docker 后,您将需要启动 Docker 守护程序”


而且......你很高兴去;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM