sme*_*eeb 5 ansible docker ubuntu-14.04
前段时间我问了一个关于Ansible和Docker的问题并得到了这个优秀的答案.我现在正试图更好地理解这个答案.基本上,我有一堆Ubuntu 14.04虚拟机,我希望Ansible在所有这些虚拟机上安装/维护Docker.
我的Ansible项目:
myansible01.example.com:/opt/ansible/
site.yml
allservers.yml
roles/
common/
tasks/
main.yml
Run Code Online (Sandbox Code Playgroud)
在哪里site.yml:
---
# file: site.yml
- include: allservers.yml
Run Code Online (Sandbox Code Playgroud)
在哪里allservers.yml:
---
# file: allservers.yml
- hosts: all
user: {{ privileged_user }}
gather_facts: false
roles:
- common
Run Code Online (Sandbox Code Playgroud)
在哪里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
Run Code Online (Sandbox Code Playgroud)
最后,我/etc/ansible/hosts:
[allservers]
server01.example.com
server02.example.com
server03.example.com
...etc.
server49.example.com
server50.example.com
Run Code Online (Sandbox Code Playgroud)
这里有几个问题:
ansible-playbook site.yml -f 10?privileged_user上述命令?apt_key文档,我们apt_key从Ubuntu repos 获取一个,但那个长密钥来自哪里?这在安装Docker中扮演什么角色(我问,因为如果你去Docker Ubuntu安装页面,它根本没有提到这些apt_keys)?以更合乎逻辑的顺序:
为什么apt-key?
apt-key用于管理用于apt验证包(如docker)的密钥列表.使用这些密钥进行身份验证的软件包将被视为可信任.当您添加一个存储库,其中包含您想要的更新/更好/最新版本的软件包时,它非常有用.
(来源:apt-key手册页)
如果你没有先添加repo的密钥,apt将无法获取软件包,并会因"W:GPG错误:...而无法验证以下签名,因为公钥不是可用:NO_PUBKEY任何键号".所以这基本上是为了让你可以获得包并安装它.
在docker Ubuntu安装页面中,在注释的apt-key第3点有一个明确的提及:
curl -sSL https://get.docker.com/gpg | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
变量
注入{{ privileged_user }}在你的配置:你会通过定义使用全局变量privileged_user在<INVENTORY_FILE_LOCATION>/group_vars/all这样的:
---
# Your user
privileged_user: "root"
Run Code Online (Sandbox Code Playgroud)
如果此group_vars/all文件不存在,请创建它.
注意:默认的库存文件位置是
/etc/ansible/hosts,但/usr/local/etc/ansible/hosts在Mac OS X上
(有关详细信息,请参阅此处)
运行剧本
然后,要运行您的剧本,请执行以下操作:
ansible-playbook -l server49.example.com allservers.yml -v
Run Code Online (Sandbox Code Playgroud)
-l 如果你想特别限制服务器,但你可以省略它
-v是,如果你想有一个详细的输出(或-vv,-vvv...)
编辑:启动docker守护程序
如果你想确保在此之后启动docker守护进程,我建议你重新启动它:
- name: Start Docker
service: name=docker state=restarted
Run Code Online (Sandbox Code Playgroud)
根据发行版的不同,它可能以前是自动启动的,但根据我在此处的文档中所理解的,"一旦安装了Docker,您将需要启动Docker守护程序".
而且......你很高兴;)
| 归档时间: |
|
| 查看次数: |
8985 次 |
| 最近记录: |