ansible批量安装docker(ansible牛逼,不要太爽了)

2024-03-09 14:20

本文主要是介绍ansible批量安装docker(ansible牛逼,不要太爽了),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ansible简介

Ansible是一个开源的自动化工具,它可以用于配置管理、应用部署、任务自动化等。由Michael DeHaan创立,首个版本在2012年发布。Ansible通过简单易读的YAML(YAML Ain’t Markup Language)语法定义自动化任务,使得它们容易理解和维护。它使用SSH进行通信,无需在远程系统上安装任何代理软件,这简化了管理过程并减少了系统开销。Ansible因其简单性、灵活性和强大的社区支持,已经成为IT自动化领域的一个重要工具。

一、ansible安装配置

1、安装

# 安装EPEL仓库
yum install epel-release# 安装Ansible
yum install -y ansible

验证安装

ansible --version

2、配置

修改/etc/ansible/hosts,添加需要自动化的机器

vim /etc/ansible/hosts
2.1 配置IP和分组

按照需求添加相应的机器IP并按场景进行分组
在这里插入图片描述

2.2 配置账号密码登录(不推荐)

直接在配置文件中配置用户密码提供给ansible访问其他机器,这种方式不推荐

[app]
192.168.1.100 ansible_user=myuser ansible_ssh_pass=mypassword
192.168.1.101 ansible_user=myuser ansible_ssh_pass=mypassword[mysql]
192.168.1.102 ansible_user=myuser ansible_ssh_pass=mypassword[minio]
192.168.1.103
192.168.1.104
192.168.1.105
2.3 配置SSH免密步骤(推荐)

ssh密钥登录更安全一些,如上配置,192.168.1.103/192.168.1.104/192.168.1.105三台机器没有配置用户密码,则需要配置ssh密钥登录

2.3.1 在本地机器上生成SSH密钥对

如果你还没有SSH密钥对(通常是~/.ssh/id_rsa~/.ssh/id_rsa.pub),你可以通过运行以下命令来生成它们:

cd ~/.ssh/# 生成密钥对
ssh-keygen -t rsa -b 4096
2.3.2 将公钥复制到远程服务器
# ssh-copy-id 用户名@远程服务器地址
ssh-copy-id -i id_rsa.pub root@192.168.1.103
ssh-copy-id -i id_rsa.pub root@192.168.1.104
ssh-copy-id -i id_rsa.pub root@192.168.1.105

3、测试

ansible常用命令速查表

# ping一下所有机器
ansible all -m ping

在这里插入图片描述

二、ansible安装配置docker

1、ansible批量安装docker

新建installDocker.xml文件
vim installDocker.xml

将如下yml内容贴进去

---
- name: Install Docker on CentOS 7hosts: commonbecome: yestasks:- name: Install required packagesyum:name:- yum-utils- device-mapper-persistent-data- lvm2state: present- name: Set up the Docker repositoryyum_repository:name: docker-ce-stabledescription: Docker CE Stable - $basearchbaseurl: https://download.docker.com/linux/centos/7/$basearch/stableenabled: 1gpgcheck: 1gpgkey: https://download.docker.com/linux/centos/gpg- name: Install Docker CEyum:name:- docker-ce- docker-ce-cli- containerd.iostate: present- name: Start and enable Docker serviceservice:name: dockerstate: startedenabled: true

如果你其他所有机器均可访问互联网的情况下,直接可以使用ansible-playbook执行此yml进行docker批量安装

ansible-playbook installDocker.xml
测试docker安装结果
ansible all -m shell -a 'docker -v'

成功则放回每台机器对应的docker版本号
在这里插入图片描述

2、ansible批量配置docker

批量修改docker镜像源

逻辑很简单,先修改本机/etc/docker/daemon.json配置并验证无误,再使用ansible批量copy到别的机器

{"registry-mirror": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com"],"insecure-registries": ["reg.xxx.com"]
}

insecure-registries配置为自建harbor镜像仓库

ansible copy批量复制

ansible all -m copy -a 'src=/etc/docker/daemon.json dest=/etc/docker/daemon.json'

解释一下 ansible常用命令速查表

  • ansible:批处理指令
  • all:所有hosts,也可以指定hosts中的分组,如app、db、minio、mysql等
  • -m:module,表示模块的意思,常用模块有 shellcopyping等等
  • copy:复制,这个没啥说的
  • -a:arg表示参数的意思,-m 指定模块,-a为执行这个模块所传递的参数
  • 'src= dest=':-a后面单引号里的内容为具体参数了,srcdestcopy模块所需的参数,src为源文件,dest为目标文件

ansible shell批量脚本

批量重载配置文件并重启docker

ansible all -m shell -a 'systemctl daemon-reload'
ansible all -m shell -a 'systemctl restart docker'

三、扩展网络

如果其他有部分机器不能访问互联网,则需要先将网络打通

1、安装squid代理

yum install -y squid
# 打开配置文件
vim /etc/squid/squid.conf

http_access deny all这一行前面添加如下配置

acl mynetwork src 192.168.131.0/24 # 你的网络或Docker网络的IP范围
http_access allow mynetwork

在这里插入图片描述
端口如果不修改也可以使用默认的

2、配置http_proxy系统代理

新建文件

vim add_http_proxy.yml

将如下yml内容贴进去

- name: Ansible blockinfile 批量新增hosts: all   # 分组become: yes  # 如果需要的话使用sudo权限tasks:- name: Insert a block of textansible.builtin.blockinfile:path: /etc/profile  # 目标文件路径block: |export all_proxy=http://192.168.131.189:31280export http_proxy=http://192.168.131.189:31280export https_proxy=http://192.168.131.189:31280export no_proxy=localhost,127.0.0.1,::1,192.168.131.0/22marker: "# {mark} ANSIBLE MANAGED BLOCK"  # 可选自定义标记state: present

执行ansible-playbook批处理指令

ansible-playbook add_http_proxy.yml

执行source命令使配置生效

ansible all -m shell -a 'source /etc/profile' 

验证执行结果,只要不返回错误,一般也没什么问题

ansible all -m shell -a 'cat /etc/profile | grep proxy'

在这里插入图片描述

3、配置docker代理

3.1、创建http-proxy.conf文件
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/http-proxy.conf

在http-proxy.conf文件中添加代理配置

[Service]
Environment="HTTP_PROXY=http://192.168.131.10:31280/"
Environment="HTTPS_PROXY=http://192.168.131.10:31280/"
Environment="NO_PROXY=localhost,127.0.0.1,::1,192.168.131.0/22,.your-company.com"
3.2、重载并重启Docker服务

配置完代理之后,重新加载systemd管理器的配置,然后重启Docker服务以应用更改:

systemctl daemon-reload
systemctl restart docker

验证代理配置

systemctl show --property=Environment docker

docker配置代理详解

这篇关于ansible批量安装docker(ansible牛逼,不要太爽了)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790943

相关文章

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知