百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

运维必会:基于 Ansible 的 Docker 自动化部署,小白也能看懂?

off999 2024-09-18 22:33 41 浏览 0 评论

Ansible 是一个 Python 写的自动化工具,这个工具可以实现集群自动化管理,然后进行一些常用的运维操作。

现在的公司很多都是使用的集群部署服务,少则几台虚拟机,多则几百上千台虚拟机,有的时候需要对一个集群或者多个集群集中进行运维操作,那么这个时候,Ansible 就可以实现批量操作了。

我在公司主要负责的任务就是关于服务的自动化部署和运维,公司本身就属于云服务,而且非常多,所以部署的方式也有很多种版本,我接触到的自动化平台主要包括一下几种:

  1. 以 Ansible 脚本为主导而搭建的自动化部署升级平台
  2. 以类似 Jenkins 流水线而搭建的自动化构建和部署平台
  3. 以 SDK 包为基础,以 Python 脚本执行主导的运维平台
  4. Docker 容器+编排

本文分享一下使用 ansible 自动化安装 docker 和 docker-compose 的经验。

1、安装ansible

ansible 的管理机必须安装 python2,但是有个非常重要的点,那就是 Windows 不可以当做管理机,主机系统可以是 Red Hat, Debian, CentOS, OS X, BSD 的各种版本。

使用pip安装

由于 ansible 是一个 python 写的包,所以可以直接当做一个普通的第三方库来安装,直接运行命令安装即可:

sudo pip install ansible

使用yum或者apt-get安装

ansible 也可以直接使用系统的包管理工具来安装,比如 CentOS 的 yum 命令:

sudo yum install ansible

Ubuntu 系统的 apt-get 命令:

sudo apt-get install software-properties-common

sudo apt-add-repository ppa:ansible/ansible

sudo apt-get update

sudo apt-get install ansible

2、Ansible基本用法

使用 ansible-playbook

ansible-playbook 也称之为剧本,是 ansible 把一系列自动化操作按照一定的执行顺序和执行逻辑进行组合起来的模块,使用这个模块可以更加方便地管理 ansible 任务。

ansible-playbook 命令可以作为运行一个 ansible 任务的开始,具体如何使用,可以查看帮助,下面这条是一般启动命令:

ansible-playbook docker.yml -i hosts -u alex -k -K

这个命令可以指定一个操作的用户,后续需要输入用户的密码和sudo命令。

由于 ansible 有很多非常有用的模块和命令可以使用,但是没有人能够全部记住每个模块命令,但是 ansible 有一个非常有用的命令使用查询文档,直接使用命令就可以查看某个模块的用法,还有例子:

# 列出所有模块

ansible-doc -l




# 列出yum模块的使用方式

ansible-doc yum

ansible-playbook 目录结构

下面是一个 ansible-playbook 项目的基本目录结构,具体的目录和文件作用已经注释出来:

├── group_vars           <- 所有主机的公共变量存放位置

│   └── all

├── hosts                <- 需要管理的主机的列表信息

├── roles              <- roles 存放模块, 当前有 etcd, initial, loop 三个模块

│   ├── etcd

│   │   ├── files                    <- 需要直接复制到 client 的文件存放位置

│   │   │   └── etcd-proxy.service            <--即每个主机配置一样

│   │   ├── handlers                     <- 用于服务管理用的控制文件

│   │   │   └── main.yml

│   │   ├── tasks                        <- ansible 任务文件

│   │   │   ├── config.yml

│   │   │   ├── main.yml

│   │   │   ├── package.yml

│   │   │   └── service.yml

│   │   └── templates                <- 需要复制到 client 中的模板文件, 会配合变量进行配置变换

│   │       └── etcd-proxy.conf       <-- 即每个主机配置可能不一样

│   ├── initial

│   │   ├── files

│   │   │   ├── hosts

│   │   │   ├── resolv.conf

│   │   │   └── updatedb.conf

│   │   ├── handlers

│   │   ├── tasks

│   │   │   ├── main.yml

│   │   │   ├── mlocate.yml

│   │   │   ├── package.yml

│   │   │   ├── sysctl.yml

│   │   │   └── yumrepo.yml

│   │   └── templates

│   │       ├── centos7.repo

│   │       └── docker.repo

│   └── loop

│       ├── files

│       ├── handlers

│       ├── tasks

│       │   ├── main.yml

│       │   └── t1.yml

│       └── templates

└── site.yml                           <- 主控制入口文件

ansible 安装 docker

我写了一个使用 ansible 自动化安装 docker 的剧本,

项目地址:https://github.com/Hopetree/ansible-demos/tree/master/install_docker

适合于在 CentOS 系统上面执行 docker 的安装。这个剧本做的事情包括判断 docker 是否可以用,然后包括安装 docker,添加用户到 docker 组,安装pip 和 docker-compose 等。剧本目录如下:

尽量使用内置模块

所谓尽量使用内置模块的意思是当可以使用 shell 模块执行命令也可以使用内置的模块执行命令的时候应该尽量使用内置模块,比如下面这种,前面一种是使用命令行来安装包,后面一种是直接使用 yum 模块:

# 使用shell 命令行安装

- name: install yum-utils

  shell: yum install yum-utils




# 使用yum 模块安装

- name: install yum-utils

  yum:

    name: yum-utils

    state: present

还有下面这种直接使用pip模块的:

- name: install docker-compose
  pip:
    name: docker-compose
    extra_args: "-i {{ pip.index_url }} --trusted-host {{ pip.trusted_host }}"

register+when的使用

register 可以用来把一个步骤的执行结果赋值到一个变量中,而 when 就可以用来判断一个变量的结果,所以通常可以把这两个模块结合起来使用。比如下面这段,第一个步骤是使用docker -v命令查询 docker 版本,然后第二个步骤判断当 docker 不可用的时候就执行 docker 安装。

- name: check docker

  shell: docker -v

  register: result

  ignore_errors: True




- name: include tasks yaml if not docker

  include_tasks: install.yml

  when: result is failed

执行结果

来源:https://cloud.tencent.com/developer/article/2123531

相关推荐

手机万能mp4转换器(手机万能mp4转换器下载)

1你需要先下载并安装一个叫格式工厂的软件。2然后打开->mp4。3点击添加文件的选项。4然后选择需要转换的视频,点击确定。5点击确定之后,再添加到转换列表中就可以。6再点...

迅雷beta官网(迅雷beta官方网)

若手机不能安装软件/游戏,建议:1.检查“未知来源”设置是否开启。2.查看下载的软件格式是否为机器所支持的。安卓系统手机支持的软件格式为.APK格式。3.下载软件时请阅读软件详情,查看是否对机器操作系...

私人家庭影院hd免费版游戏评测

《海上钢琴师》是由朱塞佩·托纳托雷执导,蒂姆·罗斯、比尔·努恩、梅兰尼·蒂埃里主演的剧情、音乐、爱情片。该片讲述了一个被命名为“1900”的弃婴在一艘远洋客轮上与钢琴结缘,成为钢琴大师的传奇故事。该片...

题库网(题库网站有哪些)

学科网的试卷有续费的和不需要交费的两类试卷,如果你是学科网的用户,可以下载试卷,还可以组卷,对于我们一线的老师来讲,这很方便的,只要学校肯出钱,在学科网前,全校的老师就可以注册免费试用学科,网上所有的...

类似迅雷的下载器有哪些(手机下载工具app)

推荐闪电下载和黑科技下载这两款APP手机上取代迅雷的下载器有闪电下载APP和黑科下载器APP等,以这两款为例,它们都是可以支持ed2k、磁力链等下载方式,也能够支持多种不同类似的文件的高速下载。、BT...

qq号申请免费注册官网(qq注册账号免费申请网址)

你好,通用的申请QQ号码的方法如下:1、首先打开腾讯官网。2、在腾讯页面左边的通信工具里面点击号码。3、点击号码以后就会进入QQ注册页面。4、进入QQ注册页面以后,在昵称后面输入要注册号码的名字。5、...

安卓安装windows(安卓安装apk解析包出错)

oppo手机支持安卓和Windows操作系统,但是双系统安装需要手机支持虚拟化技术(VT)。如果手机支持VT,可以在电脑上安装虚拟化软件,然后在手机上运行VT兼容的虚拟化应用程序,从而实现在电脑上安装...

安全中心下载(网易安全中心下载)

可以通过解除保护模式页面,查看QQ帐号进入保护模式的原因,及获取恢复QQ帐号正常使用的方法。点击小i,然后把自动登录选项去掉,打开safari,随便点一个网页,去登录。畅游经常这样抽风,可以关了游戏...

重装系统步骤(USB重装系统步骤)

正版的win10及以上系统,现在已经都自带系统重置功能,可以一键重置恢复到出厂设置。1.按住win+i,在弹出的windows设置对话框中,点击更新和安全选项,在弹出的设置对话框中,点击左侧的恢复选项...

qq群发软件手机版免费(qq群发软件安卓版免费下载)

分享一个可以免费试用的软件,“www.liaotiangou.com”在做微信营销的时候经常会需要使用到群发功能,出了多群群发之外,还有定时群发,甚至是定时发送朋友圈。多群群发可以解决以前最多只能群发...

小说排行榜2020前十名(耿美小说排行榜2020前十名)

1、元龙《元龙》是目前2020年哔哩哔哩国创动漫热门榜的第一名,讲述的是一名来自现代的王牌狙击手,穿越到了玄幻的元魂世界,从此展开的一系列热血的战斗与机遇,成为元魂世界的霸者的故事。2、灵笼《灵笼》是...

万能wifi密码查看器(wifi万能密码查看神器)

极速版Wifi的好。万能Wifi锁匙极速版的内存小,节约流量,操作简便,还可以连接手机在户外共享网络信息,是一款性价比很高的索要产品。不过要根据自己的实际情况做出正确的选择才好。首先需要一个安卓机,拿...

造梦西游5(造梦西游5论坛)

1、迅速做完主线任务和支线任务主线、支线任务存在于底部的【任务】里,要找对位置!任务上有【可接】两个字样,说明还没接受相应的任务!你看过一个【化世桥】就有接近10W的经验,何乐而不为,所以想尽快升级就...

office免费永久激活密钥(office免费永久激活密钥irm)

回答如下:Office2019永久激活密钥可以用于激活MicrosoftOffice2019产品,包括Word、Excel、PowerPoint、Outlook、Access、Publisher等...

可以加微信的交友软件(50至60岁交友微信群)

如果您想在寻爱APP中添加微信好友,可以按照以下步骤进行操作:1.打开寻爱APP,在APP主界面找到您想要添加好友的用户的信息。2.点击该用户的头像或昵称,进入该用户的详细资料页面。3.在详细资...

取消回复欢迎 发表评论: