Ansible一键安装Harbor服务

news2024/12/23 11:26:14

Harbor进阶实战

环境说明

企业内网环境,使用docker-compose的方式安装Harbor服务,需要先安装docker、docker-compose两个服务,将以二进制的方式安装docker和docker-compose,以适配各种安装环境。

  • docker版本:20.10.21,建议使用20.10以上的版本,低版本的会出现安装异常;
  • Docker-compose版本:2.24.7
  • Harbor版本:2.10.3

一、编写ansible role

1.1 初始化ansible role

使用ansible-galaxy init命令初始化一个安装harbor的ansible role。

$ ansible-galaxy init /etc/ansible/roles/harbor-install

1.2 设置环境变量

通过环境变量的方式自定义安装环境,使用时候修改对应环境变量的值即可。

$ cat roles/harbor-install/vars/main.yml
---
# vars file for harbor-install
DOCKER_VERSION: "20.10.21"  #docker服务版本
HARBOR_VERSION: 2.10.3     #harbor服务版本
INSTALL_PATH: /app         #安装目录
HTTP_PORT: 8888            #harbor服务端口(http)
HTTPS_PORT:                #harbor服务端口(https)
DATA_PATH: /app/data       #harbor数据目录,规划好大小

1.3 下载文件

因为考虑到企业内网环境,提前将对应版本的安装包下载好放到roles/harbor-install/files/目录下。

$ wget -c https://download.docker.com/linux/static/stable/x86_64/docker-20.10.21.tgz
$ wget -c https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64
$ wget -c https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz

1.4 创建服务启动文件

安装harbor时依赖docker和containerd两个服务,将服务启动文件写好放到role/harbor-install/files/目录下。

  • 创建containerd服务启动文件
$ cat role/harbor-install/files/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
  • 创建docker启动文件
$ cat role/harbor-install/files/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target

1.5 创建Harbor配置文件模块

使用jinjia2模板文件来更具环境变量来自动生成Harbor的配置文件。

$ cat /etc/ansible/roles/harbor-install/templates/harbor.yml.j2
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: {
   {
    ansible_host }}

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: {
   {
    HTTP_PORT }}

# https related config
#https:
  # https port for harbor, default is 443
  #port: 443
  # The path of cert and key files for nginx
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path
  # enable strong ssl ciphers (default: false)
  # strong_ssl_ciphers: false

# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true
#   # put your cert and key files on dir
#   dir: /etc/harbor/tls/internal


# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433
external_url: http://{
   {
    ansible_host }}:{
   {
    HTTP_PORT }}

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345

...
#以下内容根据实际情况调整,本处保持默认的配置。

1.6 编写tasks文件

main.yml入口引用相关的tasks部署任务文件。

$ cat roles/harbor-install/tasks/main.yml
---
- include_tasks: host-ini

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次ssh伪终端修改为shell

问题 用户ssh进行连接后,默认为伪终端。 解决办法,可以先拿到终端shell,查看用户是否为/bin/bash: 不是/bin/bash,使用如下命令进行修改: chsh -s /bin/bash rootservice sshd restart

在繁忙工作环境中提升开发效率:JetBrains IntelliJ IDEA 的应用

目录 前言1. IntelliJ IDEA 的核心功能1.1 智能代码补全:提升编码效率的利器1.2 深度代码分析:防患于未然1.3 代码重构:保持代码整洁有序 2. 提升团队协作与项目管理2.1 集成版本控制:高效的团队协作2.2 内置任务管理:…

开店到经营,分贝通帮助连锁经营企业这样省钱

如果说大企业的经营核心是做好主营业务的大生意,那么对于连锁经营企业而言,线下门店的一个个小生意,其实也隐藏着“大学问”。费用支出方面,如何从细节处节流,让资金流呈现更良性循环,是连锁经营行业的重要课题。 1、开店前:选址BD全国跑,筐筐发票财务恼 2、日常经营:费用类目…

Qt:玩转QPainter后转之时钟

前言 简单了解了QPainter之后当然是要找两个例子练练手啦。 正文 先看效果图 在绘制之前我们要先构思好自己要绘制的对象可以分成几部分,比如我要绘制时钟的话,我可以分成:外边框(圆环或者圆),圆形背景,刻度&…

MySQL 使用C语言链接

mysql的基础,我们之前已经学过,后面我们只关心使用 要使用C语言连接mysql,需要使用mysql官网提供的库,大家可以去官网下载 我们使用C接口库来进行连接 要正确使用,我们需要做一些准备工作: 保证mysql服务有…

【WPF】WPF学习之【二】布局学习

WPF布局学习 常用布局Grid网格布局StackPanel 布局CanvasDockPanel布局WrapPanel布局 常用布局 1、StackPanel: 学习如何使用StackPanel进行垂直和水平布局。 2、Grid: 掌握Grid的网格布局技术。 3、Canvas: 了解Canvas的绝对定位布局。 4、DockPanel: 学习DockPanel的停靠…

【加密社】马后炮视角来看以太坊二层战略

阅读正文前先给大家普及下知识,以下文章中提到的 Blobs指的是:"Blob Carriers" 或 "Calldata Blobs" 这是在以太坊网络中用于携带数据的一种方式,尤其是在涉及Rollup(如Optimistic Rollup和ZK-Rollup&#xf…

数据结构-复杂度

数据结构:在内存中管理数据,内存速度快,带电存储 数据库:在磁盘中管理数据,磁盘速度慢,不带电存储 时间复杂度 大O的渐进表示法:忽略常数、系数,保留最高次数项 如果只有常数&am…

PMC如何建立有效的监控系统来及时发现生产计划的偏离?

在制造业的复杂生态中,PMC(生产与物料控制)扮演着至关重要的角色。它不仅是连接销售、生产、采购与库存管理的桥梁,更是确保生产活动高效、有序进行的核心。随着市场需求的快速变化和生产环境的日益复杂,建立一套有效的…

python开发--模板语句

这部分是导航栏部分的代码,由于导航栏在各个页面都需要用,为了提高代码复用率将导航栏部分作为一个模板。 在下面代码图中,红色框部分相当于一个插槽,其他页面,如部门列表、用户列表等将在这个位置展示。 这部分是用户…

docker部署project-exam-system项目(haproxy代理nginx)

1、概述: 即nmt服务,涉及到的服务有:nginx、mysql、tomcat 2、具体配置:(前提:先停掉然后之前运行的容器) 1)先创建三个nginx容器 # 端⼝不能映射80 [rootdocker ~]# docker run -itd -v /root/pes/we…

Echarts中国地图省市区县三级联动

NodeV14.20.0安装 # 历史版本Node下载地址 https://nodejs.org/en/download/prebuilt-installer# NodeV14.20.0配置与部署 https://nodejs.org/dist/v14.20.0/node-v14.20.0-x64.msi构建默认Vue3工程目录 npm install -g vue/cli --registryhttps://registry.npm.taobao.org …

剪映剪辑影视视频字幕声音批量自动对齐教程

一款智能软件,用它结合剪映或CapCut 你就可以快速将一个视频翻译为另一种语言,非常适合做TikTok中视频的用户,无论是英语区法语区还是日语区,这款名为谷哥剪映助手的软件都能成倍提升你的剪辑效率。 让我来给大家介绍它的使用方法…

结合Wireshark抓包分析,沉浸式体验HTTP请求的一次完整交互过程

HTTP(HyperText Transfer Protocol,超文本传输协议)是用于传输超文本信息的协议,它是互联网上应用最为广泛的一种网络协议。了解完整的HTTP请求过程有助于我们更深层次的去分析问题(尤其是网络安全问题)&am…

【动态规划】通过例题 理解 完全背包问题(完全背包、零钱兑换、完全平方数、C++)

文章目录 前言问题描述动态规划解法 算法题1.【模板】完全背包2.零钱兑换3.零钱兑换II4.完全平方数 前言 完全背包问题 是一种经典的动态规划问题,通常用于求解优化问题。在这个问题中,我们有一个背包和一组物品,每种物品有一个特定的重量和…

Java注解基础入门

一、基本概念 1.1 认识注解 Java代码中的特殊标记,用于告诉其它程序该段代码该如何执行(Test、Override等) 注解的使用范围包括类、方法、构造器、成员变量等等 注解本质上是接口,继承了Annotation接口 使用(...)注解实际上是一个…

WPF——自定义RadioButton

需求 需要做一组单选按钮,只要单选按钮的显示内容与需要匹配的内容一样,则该单选按钮就为选中状态,否则则为不选中状态;且需要将当前选中状态保存,后续再进入此页面时,匹配内容为此次的保存状态。 如下所…

界面风格选择

风格一 卡通计算机元素加侧边框 风格二 电子科幻元素 风格三 自然景观元素 这个图片有一束从山顶照耀下来的光,很有特色。 登陆注册框样式 上面这个图的光泽感很新颖

大数据新视界--大数据大厂之大数据时代的璀璨导航星:Eureka 原理与实践深度探秘

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

虚幻引擎VR游戏开发 | VR设备和术语

四款Unreal Engine默认配套按键映射的VR设备 IMC按键映射 Oculus Touch (R) Grip Axis: 代表Oculus Rift或Quest设备的右手控制器的抓握轴输入。Valve Index (R) Grip Axis: 代表Valve Index设备的右手控制器的抓握轴输入。Vive (R) Grip: 代表HTC Vive设备的右手控制器的抓握按…