使用Ansible安装Docker CE 17.03

2017-04-22 阅读: Ansible Docker

通过前面对Ansible的学习,我们已经对Ansible的Playbook和Role有了初步的认识,接下来我们将在实践中慢慢把Ansible引入到我们的配置管理工作中来。 本篇是在我们的测试环境中使用Ansible安装Docker的记录。

目录结构

我们创建了一个名称为docker的Ansible role:

.

├── inventories
│   ├── dev
│   │   ├── group_vars
│   │   │   └── all.yml
│   │   ├── host_vars
│   │   │   ├── node1.yml
│   │   │   ├── node2.yml
│   │   │   └── node3.yml
│   │   └── hosts
│   └── staging
├── roles
│   ├── common
│   │   ├── defaults
│   │   │   └── main.yml
│   │   └── tasks
│   │       └── main.yml
│   ├── docker
│       ├── defaults
│       │   └── main.yml
│       ├── handlers
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       └── templates
│           └── daemon.json.j2
└── deploy-docker.yml

defaults/main.yml主要用来放一些变量的默认值。


# yum list docker-ce.x86_64  --showduplicates |sort -r
docker_version: 17.03.1.ce-1.el7.centos
docker_config_dir: /etc/docker
dockerd_option_graph: /var/lib/docker

cat handlers/main.yml

---
- name: restart docker
  systemd:
    name: docker
    state: restarted
    enabled: true

tasks/main.yml是按照Docker官方文档Get Docker for CentOS的安装步骤编排的task, cat tasks/main.yml


---

- name: ensure config directory
  file: 
    path: "{{ docker_config_dir }}"
    state: directory

- name: ensure required packages
  yum:
    name: "{{ item }}"
    state: present
  with_items:
    - yum-utils
    - device-mapper-persistent-data
    - lvm2
    
- name: add docker ce repo
  shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  args:
    creates: /etc/yum.repos.d/docker-ce.repo
  register: docker_yum_repo
  
- name: make yum cache fast
  shell: yum makecache fast
  when: docker_yum_repo.changed
  
- name: install docker ce
  yum:
    name: "docker-ce-{{ docker_version }}"
    state: present
  notify: restart docker
  
- name: copy dockerd daemon.json
  template: 
    src: daemon.json.j2
    dest: /etc/docker/daemon.json
  notify: restart docker



运行playbook

deploy-docker.yml这个playbook十分简单,直接依赖docker这个role即可:

---
- hosts: docker
  become: yes
  roles:
     - role: docker

hosts: docker-servers,我们在inventories/dev/hosts中配置了docker-servers,当前总共有3台机器。

[docker]
node1
node2
node3
ansible-playbook -i inventories/dev/hosts deploy-docker.yml

一下下就在这4台机器上装上了docker,已经初步体会到ansible的能力了O(∩_∩)O~

参考

标题:使用Ansible安装Docker CE 17.03
本文链接:https://blog.frognew.com/2017/04/ansible-install-docker-ce-1703.html
转载请注明出处。

目录