赞
踩
Harbor 是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。
CDN的全称是Content Delivery Network,即内容分发网络。使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
CDN
Harbor大致模块工作原理见下图:
CDN(内容分发网络)
工作原理就是ansible程序调用读取/etc/ansible/ansible.cfg配置文件获取主机列表清单 /etc/ansible/hosts文件,获取所要处理的主机列表,然后查看剧本任务,再根据剧本中一系列任务生成一个临时的脚本文件,然后将该脚本文件发送给所管理的主机,脚本文件在远程主机上执行完成后返回结果,然后删除本地临时文件。
ansible分为两种工作模式:
一是adhoc(点对点模式):此模式相当于对管理主机执行单个的shell命令
如当本地管理远端主机(IP:172.16.80.101)执行ansible 172.16.80.101 -a "/sbin/reboot"
,就可以通过ssh传输命令,把172.16.80.101这台主机重启了。
二是playbook(剧本模式):该模式应用较多,该模式是指将一系列任务整合形成一个剧本,以此来达成某种功能(譬如部署某个服务,数据库备份等)的目的。有点像shell脚本。
ansible内部模块实现幂:
通过代码做检查来实现,以copy 模块为例:
如果文件已经存在,且md5一样,则不执行操作,即 changed = False;否则开始文件copy,copy成功后,changed = Ture。
支持硬件
类型 | 要求 |
服务器 | ARM/X86 |
【注:有其他特殊要求的请在列表下面添加行,如内存: 不小于16G】
实验硬件
类型 | 实验使用 |
服务器 | ARM |
【注:有其他特殊要求的请在列表下面添加行,如内存: 不小于16G】
依赖软件列表
类型 | 要求版本 |
操作系统 | Redhat系或ubuntu系的系统 |
python | 不小于3.6 |
ansible | 2.11.12 |
实验软件版本
类型 | 实验版本 |
操作系统 | Kylin-Server-V10 |
python | 3.7 |
ansible | 2.11.12 |
【若已有安装部署手册,可以见安装部署手册】
ansible安装比较简单,使用使用pip3一键安装即可,步骤如下:
pip3 install ansible==2.11.12
安装完后查看版本
/etc/ansible/ansible.cfg 应用程序主配置文件:
- inventory :管理的主机清单文件路径
- library:ansible的模块存放的目录
- remote_tmp:上述工作原理中提到的将脚本发送至对端的临时目录
- local_tmp:上述工作原理中提到本地生成脚本存放的临时目录
- forks:并发连接数,默认为5
- sudo_user :命令执行用户
- remote_port :定义了Ansible的通信端口,默认为22。
- host_key_checking:设置是否检查SSH主机的密钥,默认为false
- timeout :ssh连接被管理主机的超时时间
- log_path:ansilbe日志文件路径
/etc/ansible/hosts配置文件(Host Inventory定义管控主机):
Ansible 可以同时操作一个组的多台主机。组和主机之间的关系通过inventory文件 配置。默认路径为/etc/ansible/hosts。
/etc/ansible/hosts 文件的格式与windows的ini配置文件类似
- #基本定义
- mail.example.com #直接指定某个主机
-
- [webservers] #组名
- foo.example.com #组成员
- bar.example.com #组成员
-
- [dbservers] #组名
- one.example.com:9527 #指定非标准ssh端口
- foo.example.com #同一台主机,可以属于多个组
- 172.16.80.100 #直接用主机IP
- #批量host简写
- db-[a:f].example.com #简写字母范围
- db-[1:20].example.com #简写数字范围
- #主机和变量。在定义主机时,还可以把变量传递给主机,这些变量可以用在 playbooks中
- [atlanta]
- #http_port、maxRequestsPerChild是变量名
- host1 http_port=80 maxRequestsPerChild=808
- host2 http_port=303 maxRequestsPerChild=909
- #组和变量。注意,要先定义组
- [websuvs]
- web1.example.com
- web2.example.com
-
- [websuvs:vars]
- http_port=8080
- https_port=443
- #ansible-doc命令
- #查看模块使用方法
- Usage: ansible-doc [options] [module...]
-
- Options:
- -a, --all 查看所有模块的文档
- -h, --help 查看帮助
- -l, --list 列出所有可用模块
- -M MODULE_PATH, --module-path=MODULE_PATH
- 列出模块路径
- -s, --snippet 获取指定模块的使用信息
- -v, --verbose 详细信息
- --version 查看程序版本
-
- #ansible命令
- Usage: ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-
- <host-pattern> 指定被管控的主机,需要事先定义在inventory文件中,可以是IP、组,支持模式匹配;all表示所有inventory定义的主机。
- [-f forks] 指定线程数,即同时处理的主机数,默认是5
- [-m module_name] 指定使用的模块
- [-a args] 指明模块的参数
-
- #ansible-playbook
- Usage: ansible-playbook playbook.yml
- Options:
- -C, --check 干跑playbook.yml,不真正执行
Q1:执行 ansible-playbook -C httpd_roles.yml 遇到以下问题:
分析:
python2依赖问题。
解决:
通过加上 -e ansible_python_interpreter=/usr/bin/python3 解决
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。