【运维】ansible批量安装docker(ansible牛逼,不要太爽了)
它可以用于配置管理、应用部署、任务自动化等。由Michael DeHaan创立,首个版本在2012年发布。Ansible通过简单易读的YAML(YAML Ain’t Markup Language)语法定义自动化任务,使得它们容易理解和维护。它使用SSH进行通信,无需在远程系统上安装任何代理软件,这简化了管理过程并减少了系统开销。Ansible因其简单性、灵活性和强大的社区支持,已经成为IT自动化
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、测试
# ping一下所有机器
ansible all -m ping
二、ansible安装配置docker
1、ansible批量安装docker
新建installDocker.xml文件
vim installDocker.xml
将如下yml内容贴进去
---
- name: Install Docker on CentOS 7
hosts: common
become: yes
tasks:
- name: Install required packages
yum:
name:
- yum-utils
- device-mapper-persistent-data
- lvm2
state: present
- name: Set up the Docker repository
yum_repository:
name: docker-ce-stable
description: Docker CE Stable - $basearch
baseurl: https://download.docker.com/linux/centos/7/$basearch/stable
enabled: 1
gpgcheck: 1
gpgkey: https://download.docker.com/linux/centos/gpg
- name: Install Docker CE
yum:
name:
- docker-ce
- docker-ce-cli
- containerd.io
state: present
- name: Start and enable Docker service
service:
name: docker
state: started
enabled: 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,表示模块的意思,常用模块有shell
、copy
、ping
等等copy
:复制,这个没啥说的-a
:arg表示参数的意思,-m 指定模块,-a 执行模块所传递的参数'src= dest='
:-a后面单引号里的内容为具体参数了,src
和dest
为copy
模块所需的参数,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 text
ansible.builtin.blockinfile:
path: /etc/profile # 目标文件路径
block: |
export all_proxy=http://192.168.131.189:31280
export http_proxy=http://192.168.131.189:31280
export https_proxy=http://192.168.131.189:31280
export no_proxy=localhost,127.0.0.1,::1,192.168.131.0/22
marker: "# {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
更多推荐
所有评论(0)