前段时间我问了一个关于Ansible和Docker的问题并收到了this excellent answer。我现在正试图更好地理解这个答案。基本上,我有一堆Ubuntu 14.04虚拟机,我希望Ansible能够在所有虚拟机上安装/维护Docker。
My 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-playbook site.yml -f 10
?privileged_user
“注入”上述命令?apt_key
,但是这个长密钥来自哪里?这在安装Docker中扮演什么角色(我问,因为如果你转到apt_key
docs它根本没有提到这些apt_keys
?答案 0 :(得分:7)
按照更合乎逻辑的顺序:
为什么apt-key
?
apt-key
用于管理apt
用于对包进行身份验证的密钥列表(例如 docker )。使用这些密钥进行身份验证的软件包将被视为可信任。当您添加一个存储库,其中包含您想要的更新/更好/最新版本的软件包时,它非常有用。
(来源:apt-key手册页)
如果您没有先添加回购的密钥,apt
将无法获得该套餐,并会因" W:GPG错误而哭泣:...以下签名无法验证,因为公钥不可用:NO_PUBKEY任何密钥编号" 。所以这基本上是为了让你可以获得包并安装它。
在docker Ubuntu installation页面中,注释中的 3 处明确提到了apt-key
:
curl -sSL https://get.docker.com/gpg | sudo apt-key add -
<强>变量强>
要在您的配置中注入{{ privileged_user }}
:您可以通过在privileged_user
中定义<INVENTORY_FILE_LOCATION>/group_vars/all
来使用全局变量:
---
# Your user
privileged_user: "root"
如果此group_vars/all
文件不存在,请创建它。
注意:默认的广告资源文件位置为
/etc/ansible/hosts
,但Mac OS X上为/usr/local/etc/ansible/hosts
(有关详细信息,请参阅here)
运行剧本
然后,要运行您的剧本,请执行:
ansible-playbook -l server49.example.com allservers.yml -v
-l
如果你想特别限制服务器,但你可以省略它
-v
是您想要详细输出(或-vv
,-vvv
...)
编辑:启动docker守护程序
如果您想确保在此之后启动docker守护程序,我建议您重新启动它:
- name: Start Docker
service: name=docker state=restarted
根据发行版的不同,它可能以前是自动启动的,但根据我在docs中的理解,&#34;安装Docker后,您将需要启动Docker守护程序&#34; 。
而且......你很高兴去;)