老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

【Linux培训班】Ansible运维企业级千台万台集群Docker案例!

老男孩IT教育

技术博客

2022年8月12日 15:03

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

  ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

  管理概述

  管理环境

  环境准备概述

  ansible管理docker集群,需要使用比较新的版本的ansible+python3环境

  步骤如下

  管理机

  安装python3,python3-pip(软件包管理器)

  pip3安装ansible

  pip3安装docker(python的docker依赖)

  被管理

  安装python3,python3-pip

  pip3安装docker(python的docker依赖)

  环境部署

  1)ansible管理端

1. python3及python3-pip
 yum install -y python3-pip rust
注: rust是语言环境,pip3安装ansible会要求安装.
2. 升级pip与配置pip源 (pypi)
pip3 install -i
https:pypi.tuna.tsinghua.edu.cn/simple
upgrade pip
pip3 config set global.index-url
https:pypi.tuna.tsinghua.edu.cn/simple
#生成个pip.conf配置文件家目录下.
/root/.config/pip/pip.conf
3. 安装ansible与docker
pip3 install setuptools_rust
pip3 install ansible
pip3 install docker2.6.1

  检查

pip3 list |egrep 'docker|ansible'
[root@devops ~]# python3 version
Python 3.6.8

  检查

  检查python依赖安装情况

  注意:没有docker-compose的请安装下docker-compose,管理端与被管理端都要安装的。

  2)ansible被管理端

docker01 docker02(reg)
yum install -y python3-pip
pip3 install -i
https:pypi.tuna.tsinghua.edu.cn/simple
upgrade pip
pip3 config set global.index-url
https:pypi.tuna.tsinghua.edu.cn/simple
pip3 install docker2.6.1

  3)批量管理的配置

  配置密钥认证

ssh-keygen
 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.81
 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.82

  书写hosts文件

[root@devops /server/ans-docker]# cat hosts
[dk]
10.0.0.81
10.0.0.82

  测试ansible环境

  4)批量管理Docker前最后的配置

cat /etc/profileEOF
export
ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3
export ANSIBLE_INVENTORY=./hosts
EOF
source 上面的文件

  5)ansible管理docker

安装 nginx:1.22.0-alpine
 ansible dk  -m docker_image  -a
'name="nginx:1.22.0-alpine" source=pull'
 ansible dk  -m shell -a 'docker images|grep
1.22.0'

  管理实战

  Ansible管理docker模块

  1)docker_image选项

  2)docker_container

docker run -d name "kodexp_nginx" -p 80:80
-v `pwd`/conf/nginx.conf:/etc/nginx/nginx.conf -
v
`pwd`/conf/kod.oldboylinux.cn.conf:/etc/nginx/co
nf.d/kod.oldboylinux.cn.conf -v
`pwd`/code:/app/code/kod/ nginx:1.20.2-alpine
 - name: run kodexp_nginx
   docker_container:
     name: "kodexp_nginx"
     image: "nginx:1.20.2-alpine"
     ports:
       - "80:80"
       - "88:80"
     volumes:
       -
"/app/docker/conf/nginx.conf:/etc/nginx/nginx.co
nf"
     links:
       - "web_php:php"
        state: started 

  3)docker_compose

  案例01:批量部署并启动容器

  注:也可以改为roles格式

- hosts: dk
 vars:
   code_name: kodexp.tar.gz
   code_dir: /app/kodexp/
 tasks:
   - name: 1. 项目目录
     file:
       path: "{{ code_dir }}"
       state: directory
   - name: 2. 分发配置与代码
     unarchive:
       src: "{{ code_name }}"
       dest: "{{ code_dir }}"
       mode: 777
   - name: 3. docker_compose启动
   docker_compose:
       project_src: "{{ code_dir }}"
       state: present

  案例02:批量部署容器并启动

  1.   涉及dockerfile
  2.   企业应用建议:推荐docker_image构建镜像,存放到私有仓库
  3.   docker-compose中直接使用镜像即可
  4.   docker_image 构建并上传到私有仓库方法
- name: 构建镜像并上传到私有仓库
 docker_image:
   build:
     path: ./sinatra 指定dockerfile所在路径
   name:
reg.oldboylinux.cn:5000/oldboyedu/restart
   tag: v1.0
   push: yes
    source: build
  
#reg.oldboylinux.cn:5000/oldboyedu/restart:v1.0

  总结

  1.   通过ansible模块:docker_image和docker_compose批量管理容器与镜像
  2.   熟练掌握案例01

  附录:Ans-docker模块

  想要学习更多“Ansible管理Docker集群”的知识,可以咨询在线客服,领取【学习资料+视频教程合集】!!!

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。