环境三台centos7主机:

master:192.168.101.14,node1:192.168.101.15,node2:192.168.101.19,利用master节点为两个node节点安装docker以及docker-compose

首先在master上安装ansible,这里采用yum安装(epel中包含ansible,安装之前添加epel源)

ansible基于ssh密钥认证,于是使用master给两个node进行ssh认证:

# ssh-keygen -t rsa -P ''
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.101.15
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.101.19

给两个node节点配置hosts:

[root@docker ansible]# egrep -v "^#|^$" hosts
[container_nodes]
192.168.101.15
192.168.101.19

于是准备工作完成,开始编写playbook:

[root@docker ansible]# tree
.
├── ansible.cfg
├── hosts
├── roles
│   ├── docker
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yaml
│   │   ├── meta
│   │   ├── tasks
│   │   │   └── main.yaml
│   │   ├── templates
│   │   │   └── daemon.json.j2
│   │   └── vars
│   │       └── main.yaml
│   └── docker-compose
│       ├── files
│       │   └── docker-compose-Linux-x86_64
│       ├── handlers
│       ├── meta
│       ├── tasks
│       │   └── main.yaml
│       ├── templates
│       └── vars
│           └── main.yaml
└── work_dir├── install_docker-compose.retry├── install_docker-compose.yaml├── install_docker.retry└── install_docker.yaml

将上面的树形目录进行分解,查看docker这个role的内容:

[root@docker docker]# tree
.
├── files         必要的一些需要的文件存放目录
├── handlers
│   └── main.yaml    handler处理的动作
├── meta          元数据存放的一些依赖
├── tasks
│   └── main.yaml    主要执行的任务
├── templates
│   └── daemon.json.j2      一些配置文件的存放
└── vars└── main.yaml          变量设置的存放目录

查看tasks/main.yaml:

[root@docker docker]# cat tasks/main.yaml
- name: install required packagesyum: name: "{{ item }}"           需要进行安装的一些包名state: present               安装的包的状态with_items:                    对应上面的item(可以循环操作)- yum-utils- device-mapper-persistent-data- lvm2- name: add docker repo to /etc/yum.repos.dshell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  register: result              将shell的操作结果注册为result- name: install docker-ceyum:name: docker-cestate: presentwhen: result|success           如果上面的result为success,则该任务执行- name: create /etc/dockerfile:path: "{{ docker_config_dir }}"          利用file模块进行创建一个目录,引用变量state: directory- name: start docker servicesystemd:                         centos7开启服务,添加到启动项name: dockerstate: startedenabled: true- name: provide docker-ce configfiletemplate:src: daemon.json.j2                 提供配置文件dest: /etc/docker/daemon.jsonnotify: restart docker                  配置文件修改了触发通知机制,提醒handler

查看handlers/main.yaml:

[root@docker docker]# cat handlers/main.yaml
- name: restart dockersystemd:name: dockerstate: restarted            触发机制后,将服务进行重启enabled: true

查看变量的设置:

[root@docker docker]# cat vars/main.yaml
docker_config_dir: /etc/docker

查看template的j2文件:

[root@docker docker]# cat templates/daemon.json.j2
{"registry-mirrors": ["https://cbd49ltj.mirror.aliyuncs.com"]
}

上面的展示了docker这个角色的任务,变量,配置文件,触发条件,但是这个角色作用在哪个环境,哪个节点并没有说明,于是工作目录就是解决这个问题的:

[root@docker work_dir]# tree
.
├── install_docker-compose.retry
├── install_docker-compose.yaml
├── install_docker.retry
└── install_docker.yaml

查看docker的work_dir:

[root@docker work_dir]# cat install_docker.yaml
- hosts: container_nodes         对应hosts配置文件的两个节点remote_user: root              执行使用root用户roles:           - docker                  针对的role名称

使用--syntax-check进行语法验证:

[root@docker work_dir]# ansible-playbook install_docker.yaml --syntax-check        playbook: install_docker.yaml

使用如下命令进行执行playbook:

[root@docker work_dir]# ansible-playbook install_docker.yaml

下面查看另一个角色docker-compose:

[root@docker docker-compose]# tree
.
├── files
│   └── docker-compose-Linux-x86_64           docker-compose的二进制文件
├── handlers
├── meta
├── tasks
│   └── main.yaml
├── templates
└── vars└── main.yaml

由于docker-compose并不需要像服务启动,没有handler机制,查看task:

[root@docker docker-compose]# cat tasks/main.yaml
- name: copy docker-compose-Linux-x86_64 to /usr/local/bincopy: src: ../files/docker-compose-Linux-x86_64              这里可以使用相对路径,可以使用绝对路径dest: "{{ docker_compose_dir }}/docker-compose-Linux-x86_64"- name: install docker-composeshell: cd "{{ docker_compose_dir }}" && mv docker-compose-Linux-x86_64 docker-compose && chmod +x docker-compose

查看变量的设置:

[root@docker docker-compose]# cat vars/main.yaml
docker_compose_dir: /usr/local/bin

最后执行的work_dir下面的install_docker-compose:

[root@docker work_dir]# cat install_docker-compose.yaml
- hosts: container_nodesremote_user: rootroles:- docker-compose

转载于:https://www.cnblogs.com/jsonhc/p/7879028.html

使用ansible安装docker以及docker-compose相关推荐

  1. 阿里云服务器Docker及Docker Compose的安装

    2019独角兽企业重金招聘Python工程师标准>>> 本文对阿里云ECS服务器如何安装Docker和Docker Compose进行说明,以centOS系统为例. 一.开通外网的E ...

  2. 如何在 CentOS 7上安装和使用 Docker Compose

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 介绍 Docker是一个很好的工具,但要真正充分利用它的潜力,最好是应用程序的每个组件都在它自己的容 ...

  3. ubuntu18.04 安装(指定版本/最新版)docker与docker compose

    安装 Docker sudo apt-get remove docker docker-engine docker.io containerd runc # 卸载旧版本 sudo apt-get up ...

  4. Docker 及 Docker Compose 安装及使用教程 (2020版)

    文章目录 图文详细教程 1 Docker原理 2 Docker安装 3 镜像(Image) 3.1 获取镜像 3.2 查找拖取镜像 3.3 列出镜像 3.4 删除镜像 3.5 创建的镜像 4 容器(C ...

  5. Docker与Docker Compose的安装以及Portainer容器管理工具

    Docker官网 概述 Docker 是一个用于开发.发布和运行应用程序的开放平台.Docker 能够将应用程序与基础架构分离,以便可以快速交付软件.使用 Docker,可以像管理应用程序一样管理基础 ...

  6. centos 7.9 yum 安装最新版docker与dnf安装docker compose v2

    centos 7.9 yum 安装最新版docker与dnf安装docker compose v2 一.环境查看 1.系统内核 #uname -r 2.系统版本 #cat /etc/redhat-re ...

  7. ubuntu/debian安装最新版docker和docker-compose

    ubuntu/debian上安装docker的方法有很多. 最传统的方法是自己手动添加密钥,然后进行安装. curl -fsSL https://download.docker.com/linux/u ...

  8. linux系统下docker安装,Linux下Docker的安装与使用

    yum安装Docker最新版和docker-compose(超级简单的安装方法) Install Docker 首先安装依赖 yum install -y yum-utils device-mappe ...

  9. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

最新文章

  1. 面试盲区TCP/SOCKET/三次握手 - 笔记
  2. Solaris 10主动安顿DVD运用步骤
  3. Centos7 yum 安装 oracle-rdbms-server-11gR2-pre
  4. JAVA 搭建基于SPRINGBOOT的SSM(SPRING + SPRINGMVC + MYBATIS)的MAVEN项目
  5. Sklearn 0.21 中文文档校对活动 | ApacheCN
  6. 芬兰诺基亚获得三个欧洲市场的5G订单
  7. linux用命令行运行matlab的.mat文件
  8. Kaggle 年度报告出炉:数据科学家年轻高学历,薪资近百万
  9. JavaScript的预解析(1)
  10. MFC字符串操作(三)MFC CString其他用法小结
  11. 外行人都能看得懂的机器学习,错过了血亏!
  12. 524MB的微信输入法:没广告 你会用吗
  13. CHD+CM-1 安装
  14. 2020总结及2021展望
  15. 重温归一化(MinMaxScaler)和标准化(StandardScaler)
  16. 小红书用户画像分析_用户行为研究:如何做用户画像分析
  17. python常见的PEP8规范
  18. ImageTools-图片格式转换工具类
  19. K-SVD简述——字典学习,稀疏编码
  20. 地理信息系统:利用ArcGIS制作校园地图

热门文章

  1. python零基础入门教程学习要多久-廖雪峰python教程要学多久-零基础学Python需要多久...
  2. python 创意编程 全国-关于举办第五届全国青少年创意编程与智能设计大赛的通知...
  3. python流程控制-实战案例手把手教你Python流程控制技巧
  4. python怎么画条形图-用Matplotlib如何绘制条形图、直方图和散点图
  5. python3项目-Python3基础教程(十九)—— 项目结构
  6. python request-Python之request模块-基础用法
  7. python简介怎么写-python爬虫简历怎么写
  8. python中return的理解-Python return语句 函数返回值
  9. python打不开文件-python文件打不开如何解决
  10. python操作系统-python 操作系统