批量部署工具ansible 极简入门——基于docker运行

  • 动机:
  • 一:简介
  • 二:安装
  • 三:配置
  • 四:常用模块介绍



)

动机:

在开发或者运维过程中, 难免会遇到经常要部署文件的烦恼,特别是有多台主机的情况;如何快速有效的进行多台设备的开发部署以及运维就显得至关重要。(总不可能一台一台的部署吧。。。慢而且容易出错)。 网上搜罗了一下,发现ansible是一个比较好用的工具,遗憾的是只支持Linux平台,又不想装虚拟机那么笨重的东西(其实是自己C盘被塞满了。。。), 怎么办呢,那就用Docker吧。Docker优点太多了就不罗嗦了,直接走起!

一:简介

docker 安装runc Docker 安装ansible_服务器

  • 术语介绍:
  • 控制节点(Control node)
  • 说白了就是我们的电脑,里面运行着ansible
  • 受控节点(Managed nodes)
  • 也就是我们要批量部署的主机
  • 清单(Inventory)
  • 受控节点的列表; 一般在 /etc/anaible/hosts文件,也可通过修改配置文件(/etc/ansible/ansible.cfg)指向自定义的任意名称的主机列表文件(只要符合ansible编写规则即可)
  • 模块(Modules)
  • ansible工作的核心,它是依靠各个模块进行工作的,比如常见的复制文件、拉取文件或批量执行命令等
  • 任务(Tasks)
  • 构成剧本的基础单元
  • 剧本(Playbooks)
  • 可以理解为脚本化运行的运维任务,由task构成; 目前的工作中没有用到这个,后期用会再更新
  • 管理主机的两种方式
  • 通过命令行方式(Ad-hoc command)。缺点就是不能保存命令,当然也可以把命令记到笔记里去。(目前我就是这么做的。。。)
  • 通过脚本语言方式(playbook)。面对复杂多变的运维任务时,可以轻松的应对;目前我工作中还没遇到,所以在这就不分(误)享(导)了

二:安装

  1. docker-desktop安装
  • 官网下载, 然后全部点下一步下一步就好了(C不C盘的无所谓的,介意的话自己改一下安装路径)
    注意
    - 如果电脑有virtualbox或VMware虚拟机的,注意要卸载掉
    - Docker需要WSL2支持, 最好更新一下Windows,然后安装WSL2更新
  • 安装好docker-desktop之后,就可以在powershell中运行docker命令了
  1. Portainer镜像拉取/运行
  • portainer是一个可视化的容器管理工具,可以方便的在里面管理镜像(直接用就行了,按照里面的提示来), 官方安装教程
//创建数据卷 
docker volume create portainer_data

//拉取并运行(访问docker hub有时候可能会很慢,可以考虑切换成国内源或者科学上网)
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce 

// 在浏览器运行本地的9000端口
http://localhost:9000/

安装完成之后就可以看到portainer界面了

docker 安装runc Docker 安装ansible_运维_02

  1. Ubuntu18.04 docker安装
//拉取Ubuntu镜像(速度慢的话建议改成国内源或者科学上网)
docker pull ubuntu:18.04

安装完成后,即可在portainer管理界面中看到刚刚拉取的ubuntu 镜像image

docker 安装runc Docker 安装ansible_运维_03

  1. ubunt 镜像运行
// 把本地文件夹you_local_dir映射到Ubuntu中的文件夹ubunt_named_dir, LANG=C.UTF-8设置可以使得容器中能输出中文
$ docker run -d -it -v you_local_dir:/ubunt_named_dir -w /ubunt_named_dir -p 4005:4005 --restart=always  --name ubuntu ubuntu:18.04  env LANG=C.UTF-8 /bin/bash

执行完成之后,ubuntu容器就生成了,可以在portainer中进入Ubuntu console

docker 安装runc Docker 安装ansible_服务器_04

点击connect

docker 安装runc Docker 安装ansible_docker 安装runc_05

进入bash命令行

docker 安装runc Docker 安装ansible_docker_06

  1. ansible安装
    Ubuntu安装ansible
    打开Ubuntu console
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

// 安装完成后,直接输入ansible命令,如果能出来帮助信息就说明安装成功了
$ ansible

其他的系统可以参考官方教程

三:配置

anisble 默认的主机清单是 /etc/ansible/inventory文件, 为了方便我们后期修改维护主机清单, 我们可以指向主机文件到我们的本地磁盘的文件

  • 修改配置
$ nano /etc/ansible/ansible.cfg
//修改其中的inventory文件路径,如下图所示
//文件的完整路径是Ubuntu的ubunt_named_dir路径,跟you_local_dir相对应

docker 安装runc Docker 安装ansible_docker 安装runc_07

四:常用模块介绍

  1. ping模块
  • 作用:检查主机的连通性,类似于bash的ping命令,如果有主机掉线,会有返回提示fail的
  • 示例
  1. copy模块
  • 作用:复制文件/文件夹到主机列表中
  • 示例
  • Tips
    发现了有趣的现象,如果待复制的文件和目标机的文件一致,则不会显示changed。
  • copy命令也可以复制文件夹,只要把src改成路径就可以了(不指定文件名), 其他的参数可以查官方文件,这里就不一一介绍了
  1. command模块
  • 作用:远程批量命令
  • Tips:不要在command模块中运行阻塞命令,否则ansible无法返回