synchronization
This commit is contained in:
28
CICD/Ansible/.gitignore
vendored
Normal file
28
CICD/Ansible/.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# ---> macOS
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
13
CICD/Ansible/Dockerfile
Normal file
13
CICD/Ansible/Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
VOLUME /root/.ssh
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt update && apt install ansible sshpass -y \
|
||||
&& rm -rf /etc/localtime \
|
||||
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||
&& mkdir -p /etc/ansible
|
||||
|
||||
VOLUME /etc/ansible
|
||||
|
||||
WORKDIR /etc/ansible
|
88
CICD/Ansible/Docs/Ansible-Hosts文件配置.md
Normal file
88
CICD/Ansible/Docs/Ansible-Hosts文件配置.md
Normal file
@@ -0,0 +1,88 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible-Hosts文件配置
|
||||
|
||||
**编写 `/etc/ansible/hosts` 文件**
|
||||
|
||||
- 普通写法
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
```
|
||||
|
||||
- 为主机配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
192.168.1.20 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
192.168.1.40 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
```
|
||||
|
||||
- 为主机组配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
|
||||
[group1:vars]
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
|
||||
[group2:vars]
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
```
|
||||
|
||||
- 为所有主机组配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
|
||||
[all:vars] # 指定所有主机组
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
```
|
||||
|
||||
|
||||
|
164
CICD/Ansible/Docs/Ansible加密.md
Normal file
164
CICD/Ansible/Docs/Ansible加密.md
Normal file
@@ -0,0 +1,164 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible 加密
|
||||
|
||||
- 创建加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault create password.yml
|
||||
```
|
||||
|
||||
> 示例
|
||||
>
|
||||
> ```bash
|
||||
> [root@offends]# ansible-vault create password.yml
|
||||
> New Vault password: # 输入加密密码
|
||||
> Confirm New Vault password: # 二次输入加密密码
|
||||
> ```
|
||||
|
||||
- 指定文件加密
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt /etc/ansible/hosts
|
||||
```
|
||||
|
||||
- 加密字符串
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt_string 123456
|
||||
```
|
||||
|
||||
- 编辑加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault edit password.yml
|
||||
```
|
||||
|
||||
- 重新加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault rekey password.yml
|
||||
```
|
||||
|
||||
- 文件解密
|
||||
|
||||
```bash
|
||||
ansible-vault decrypt password.yml
|
||||
```
|
||||
|
||||
- 查看加密数据文件原文
|
||||
|
||||
```bash
|
||||
ansible-vault view password.yml
|
||||
```
|
||||
|
||||
# 剧本的使用
|
||||
|
||||
- 编写一份 `demo.yml` 剧本文件
|
||||
|
||||
```bash
|
||||
vi demo.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
---
|
||||
- hosts: node1
|
||||
# 定义变量
|
||||
vars:
|
||||
- user_password: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
36616162626462323130626563393433663637383166613262333433313534386561666531633837
|
||||
3663636662663363303463313662333064326537343563340a653566346636333633383163623662
|
||||
37386432626437636464386339316366346665383935336564623630333238353661666566343036
|
||||
3338613861393061320a626464306230626265656163613730303035613161616235373539613333
|
||||
6164
|
||||
|
||||
tasks:
|
||||
- name: display variable from encryption variable
|
||||
ansible.builtin.debug:
|
||||
msg: The user password is {{ user_password }}
|
||||
```
|
||||
|
||||
- 通过询问口令执行剧本
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml -v --ask-vault-pass
|
||||
```
|
||||
|
||||
- 从密码文件中读取口令执行剧本
|
||||
|
||||
```bash
|
||||
echo '密钥密码' > .pwdfile && chmod 600 .pwdfile
|
||||
```
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml -v --vault-id .pwdfile
|
||||
```
|
||||
|
||||
# 加密用户密码
|
||||
|
||||
- 创建变量文件
|
||||
|
||||
```bash
|
||||
mkdir vars -p
|
||||
vi vars/user_list.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
user_hosts:
|
||||
- all
|
||||
user_info:
|
||||
- user: demo
|
||||
# 密码需要用引号括起来,避免纯数字密码被解析成int类型数字
|
||||
password: "123456"
|
||||
# 备注信息可以使用中文,但尽量不用中文
|
||||
comment: "hello"
|
||||
```
|
||||
|
||||
- 创建剧本文件
|
||||
|
||||
```bash
|
||||
vi user.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
- hosts: "{{ user_hosts }}"
|
||||
vars_files:
|
||||
- demo.yml
|
||||
tasks:
|
||||
- name: display variable from variable list
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
The username is "{{ item.user }}",
|
||||
the password is "{{ item.password }}",
|
||||
the comment is "{{ item.comment }}".
|
||||
loop: "{{ user_info }}"
|
||||
- name: create users
|
||||
ansible.builtin.user:
|
||||
name: "{{ item.user }}"
|
||||
password: "{{ item.password|password_hash('sha512') }}"
|
||||
comment: "{{ item.comment }}"
|
||||
state: present
|
||||
loop: "{{ user_info }}"
|
||||
become: yes
|
||||
```
|
||||
|
||||
- 加密变量文件
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt vars/user_list.yml
|
||||
```
|
||||
|
||||
- 执行剧本
|
||||
|
||||
```bash
|
||||
ansible-playbook user.yml -v --ask-vault-pass
|
||||
```
|
||||
|
||||
- 查看是否创建用户
|
||||
|
||||
```bash
|
||||
tail -n 1 /etc/passwd
|
||||
```
|
||||
|
||||
|
396
CICD/Ansible/Docs/Ansible模块参数解释以及常用命令.md
Normal file
396
CICD/Ansible/Docs/Ansible模块参数解释以及常用命令.md
Normal file
@@ -0,0 +1,396 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible模块参数解释以及常用命令
|
||||
|
||||
> 太多了,只记少数吧,累~
|
||||
|
||||
## Ansible 基础命令
|
||||
|
||||
- 查看 Ansible 的可用模块
|
||||
|
||||
```bash
|
||||
ansible-doc -l
|
||||
```
|
||||
|
||||
- 测试主机的连通性
|
||||
|
||||
```bash
|
||||
ansible all -m ping
|
||||
```
|
||||
|
||||
- 查看组下所有的IP
|
||||
|
||||
```bash
|
||||
ansible all --list
|
||||
```
|
||||
|
||||
> 使用 -i 指定 hosts 文件位置
|
||||
>
|
||||
> ```bash
|
||||
> -i /etc/ansible/hosts
|
||||
> ```
|
||||
|
||||
## Ansible-Playbook 命令
|
||||
|
||||
- 执行 Playbook
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml
|
||||
```
|
||||
|
||||
- 指定任务执行 Playbook
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml --start-at-task="指定任务"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Command
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | --------------------------------------------------- |
|
||||
| command | 要在远程主机上执行的命令。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
| chdir | 在执行命令之前,将当前工作目录更改为指定的目录。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| warn | 控制命令失败时的错误消息显示方式。 |
|
||||
| stdin | 将输入发送到命令的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的命令,无需使用`command`关键字。 |
|
||||
|
||||
- 先切换目录,执行命令
|
||||
|
||||
```bash
|
||||
ansible all -m command -a 'chdir=/mnt ls -la'
|
||||
```
|
||||
|
||||
- 检查节点的内存情况
|
||||
|
||||
```bash
|
||||
ansible -m command -a "free -m " 'all'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Shell
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------ |
|
||||
| cmd | 要在远程主机上执行的命令。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
| chdir | 在执行命令之前,将当前工作目录更改为指定的目录。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| warn | 控制命令失败时的错误消息显示方式。 |
|
||||
| stdin | 将输入发送到命令的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的命令,无需使用`cmd`关键字。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
|
||||
- 使用 /bin/bash 执行命令
|
||||
|
||||
```bash
|
||||
ansible all -m shell -a 'executable=/bin/bash ls -la /mnt'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Script
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------ |
|
||||
| script | 要在远程主机上执行的脚本文件的路径。 |
|
||||
| creates | 如果指定的文件或目录存在,则脚本不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则脚本不会被执行。 |
|
||||
| chdir | 在执行脚本之前,将当前工作目录更改为指定的目录。 |
|
||||
| warn | 控制脚本失败时的错误消息显示方式。 |
|
||||
| executable | 用于执行脚本的解释器的路径。 |
|
||||
| stdin | 将输入发送到脚本的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的脚本路径,无需使用`script`关键字。 |
|
||||
|
||||
- 编写一个脚本
|
||||
|
||||
```bash
|
||||
cat << EOF > demo.sh
|
||||
date
|
||||
EOF
|
||||
```
|
||||
|
||||
- 执行脚本
|
||||
|
||||
```bash
|
||||
ansible all -m script -a "/etc/ansible/demo.sh"
|
||||
```
|
||||
|
||||
|
||||
## Ansible 常用模块 Copy
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| -------------- | ------------------------------------------------------------ |
|
||||
| src | 源文件路径。 |
|
||||
| dest | 目标文件路径。 |
|
||||
| backup | 是否备份目标文件。 |
|
||||
| remote_src | 如果为true,则从控制节点的文件系统复制文件到远程主机。 |
|
||||
| checksum | 控制是否使用校验和来判断文件是否需要复制。 |
|
||||
| content | 如果为true,则在Ansible控制节点上生成文件内容并将其传输到远程主机上。 |
|
||||
| directory_mode | 在创建目录时设置权限模式。 |
|
||||
| force | 强制复制文件,即使目标文件存在。 |
|
||||
| owner | 设置目标文件的所有者。 |
|
||||
| group | 设置目标文件的所属组。 |
|
||||
| mode | 设置目标文件的权限模式。 |
|
||||
| seuser | 设置目标文件的SELinux用户。 |
|
||||
| serole | 设置目标文件的SELinux角色。 |
|
||||
| setype | 设置目标文件的SELinux类型。 |
|
||||
| selevel | 设置目标文件的SELinux等级。 |
|
||||
| follow | 是否跟随符号链接。 |
|
||||
|
||||
|
||||
- 拷贝文件
|
||||
|
||||
```bash
|
||||
ansible all -m copy -a "src=/etc/ansible/demo.sh owner=root mode=777 dest=/mnt/demo.sh backup=yes"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 File
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| -------------- | ------------------------------------------------------------ |
|
||||
| path | 文件或目录的路径。 |
|
||||
| state | 文件或目录的状态。可选值包括:file、directory、link、hard、absent。 |
|
||||
| owner | 设置文件或目录的所有者。 |
|
||||
| group | 设置文件或目录的所属组。 |
|
||||
| mode | 设置文件或目录的权限模式。 |
|
||||
| dest | 用于创建符号链接的目标文件路径。 |
|
||||
| src | 用于创建硬链接的源文件路径。 |
|
||||
| state | 设置文件或目录的状态。 |
|
||||
| follow | 是否遵循符号链接。 |
|
||||
| recurse | 是否递归操作,用于目录。 |
|
||||
| directory_mode | 用于设置目录的权限模式。 |
|
||||
| force | 是否强制执行。 |
|
||||
| selevel | 设置目标文件的SELinux等级。 |
|
||||
| serole | 设置目标文件的SELinux角色。 |
|
||||
| setype | 设置目标文件的SELinux类型。 |
|
||||
| seuser | 设置目标文件的SELinux用户。 |
|
||||
|
||||
|
||||
- 创建文件
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile state=touch'
|
||||
```
|
||||
|
||||
- 创建目录
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demodir state=directory'
|
||||
```
|
||||
|
||||
- 修改文件的所有人
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile owner=docker'
|
||||
```
|
||||
|
||||
- 删除文件或目录
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile state=absent'
|
||||
ansible all -m file -a 'path=/mnt/demodir state=absent'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Archive
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------- | ------------------------------------------------------ |
|
||||
| path | 要打包的文件或目录的路径。 |
|
||||
| dest | 打包文件的目标路径,包括文件名和扩展名。 |
|
||||
| format | 打包格式,可选值包括:tar、gz、bz2、tar.gz、tar.bz2。 |
|
||||
| owner | 设置打包文件的所有者。 |
|
||||
| group | 设置打包文件的所属组。 |
|
||||
| mode | 设置打包文件的权限模式。 |
|
||||
| remote_src | 如果为true,则从控制节点的文件系统打包文件到远程主机。 |
|
||||
| remove_path | 在归档中排除的路径的前缀。 |
|
||||
| exclude | 排除指定的文件或目录。 |
|
||||
| extra_opts | 传递给归档命令的额外选项。 |
|
||||
|
||||
- 打包文件
|
||||
|
||||
```bash
|
||||
ansible all -m archive -a "path=/mnt/demo.sh dest=/mnt/demo.gz format=gz"
|
||||
```
|
||||
|
||||
> 解压使用
|
||||
>
|
||||
> ```bash
|
||||
> gzip -d demo.gz
|
||||
> ```
|
||||
|
||||
## Ansible 常用模块 Cron
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ------------ | ------------------------------------------------------------ |
|
||||
| name | Cron任务的名称。 |
|
||||
| minute | 设置分钟字段。可接受数字(0-59)、星号(*,表示每分钟)或范围(例如:0-30,表示0到30分钟之间)。 |
|
||||
| hour | 设置小时字段。可接受数字(0-23)、星号(*,表示每小时)或范围。 |
|
||||
| day | 设置天字段。可接受数字(1-31)、星号(*,表示每天)或范围。 |
|
||||
| month | 设置月份字段。可接受数字(1-12)、星号(*,表示每月)或范围。 |
|
||||
| weekday | 设置星期字段。可接受数字(0-6,0代表星期日)、星号(*,表示每天)或范围。 |
|
||||
| job | Cron任务要执行的命令或脚本。 |
|
||||
| state | 设置Cron任务的状态。可选值包括:present(存在)或absent(不存在)。 |
|
||||
| disabled | 是否禁用Cron任务。如果设置为yes,则Cron任务将被禁用。 |
|
||||
| user | 设置Cron任务的所有者。 |
|
||||
| minute | 设置分钟字段。 |
|
||||
| hour | 设置小时字段。 |
|
||||
| day | 设置天字段。 |
|
||||
| month | 设置月份字段。 |
|
||||
| weekday | 设置星期字段。 |
|
||||
| special_time | 设置特殊时间值,如@reboot(重启时运行)或@daily(每天运行)。 |
|
||||
|
||||
- 生成定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2'
|
||||
```
|
||||
|
||||
- 禁止该定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=yes'
|
||||
```
|
||||
|
||||
- 重新开启该定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=no'
|
||||
```
|
||||
|
||||
- 删除定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 state=absent'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Yum
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------- |
|
||||
| name | 指定要安装或删除的软件包名称。 |
|
||||
| state | 指定软件包的状态。可选值包括:present、latest、absent。 |
|
||||
| enablerepo | 指定要启用的存储库。 |
|
||||
| disablerepo | 指定要禁用的存储库。 |
|
||||
| disable_excludes | 指定要禁用的软件包类型。 |
|
||||
| update_cache | 是否更新缓存。 |
|
||||
| disable_gpg_check | 是否禁用GPG检查。 |
|
||||
| installroot | 安装软件包的根目录。 |
|
||||
| security | 是否仅安装安全更新。 |
|
||||
| bugfix | 是否只安装修复错误的更新。 |
|
||||
| enhancement | 是否只安装增强更新。 |
|
||||
| ts | 是否使用指定的事务ID。 |
|
||||
|
||||
- 安装软件
|
||||
|
||||
```bash
|
||||
ansible all -m yum -a "name=wget state=present"
|
||||
```
|
||||
|
||||
- 卸载软件
|
||||
|
||||
```bash
|
||||
ansible all -m yum -a "name=wget state=absent"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Dnf
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------- |
|
||||
| name | 指定要安装或删除的软件包名称。 |
|
||||
| state | 指定软件包的状态。可选值包括:present、latest、absent。 |
|
||||
| enablerepo | 指定要启用的存储库。 |
|
||||
| disablerepo | 指定要禁用的存储库。 |
|
||||
| disable_excludes | 指定要禁用的软件包类型。 |
|
||||
| update_cache | 是否更新缓存。 |
|
||||
| disable_gpg_check | 是否禁用GPG检查。 |
|
||||
| installroot | 安装软件包的根目录。 |
|
||||
| security | 是否仅安装安全更新。 |
|
||||
| bugfix | 是否只安装修复错误的更新。 |
|
||||
| enhancement | 是否只安装增强更新。 |
|
||||
| ts | 是否使用指定的事务ID。 |
|
||||
|
||||
## Ansible 常用模块 Service
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ------------- | ------------------------------------------------------------ |
|
||||
| name | 指定要管理的服务名称。 |
|
||||
| state | 指定服务的状态。可选值包括:started、stopped、restarted、reloaded、enabled、disabled。 |
|
||||
| enabled | 是否设置服务开机自启动。 |
|
||||
| pattern | 用于匹配要操作的服务的模式。 |
|
||||
| sleep | 在重新启动服务之前等待的时间(以秒为单位)。 |
|
||||
| arguments | 传递给服务启动脚本的额外参数。 |
|
||||
| runlevel | 设置服务在特定运行级别下的启用状态。 |
|
||||
| daemon_reload | 在重启或重新加载服务之后是否重新加载守护程序。 |
|
||||
| force | 是否强制执行操作。 |
|
||||
|
||||
- 重启服务
|
||||
|
||||
```bash
|
||||
ansible all -m service -a "name=docker state=restarted"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 User
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| --------------- | ----------------------------------------- |
|
||||
| name | 用户名。 |
|
||||
| state | 用户的状态。可选值包括:present、absent。 |
|
||||
| uid | 用户的UID。 |
|
||||
| password | 用户的密码。 |
|
||||
| group | 用户所属的主组。 |
|
||||
| groups | 用户所属的其他组。 |
|
||||
| append | 是否追加用户到附加的组中。 |
|
||||
| shell | 用户的登录Shell。 |
|
||||
| home | 用户的主目录。 |
|
||||
| move_home | 是否移动用户的主目录。 |
|
||||
| createhome | 是否创建用户主目录。 |
|
||||
| system | 是否创建系统用户。 |
|
||||
| update_password | 是否更新密码。 |
|
||||
| expire | 设置用户的账号过期日期。 |
|
||||
| remove | 是否删除用户的主目录。 |
|
||||
|
||||
- 创建用户
|
||||
|
||||
```bash
|
||||
ansible all -m user -a "name=demo state=present"
|
||||
```
|
||||
|
||||
- 删除用户
|
||||
|
||||
```bash
|
||||
ansible all -m user -a "name=demo state=absent"
|
||||
```
|
||||
|
||||
|
||||
|
19
CICD/Ansible/Docs/Ansible编写与配置.md
Normal file
19
CICD/Ansible/Docs/Ansible编写与配置.md
Normal file
@@ -0,0 +1,19 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible编写与配置
|
||||
|
||||
- 第一步禁用SSH主机密钥检查
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/ansible.cfg
|
||||
```
|
||||
|
||||
解除 `host_key_checking` 注释
|
||||
|
||||
```bash
|
||||
[defaults]
|
||||
host_key_checking = False
|
||||
```
|
||||
|
||||
> 通常,当你连接到一个新的SSH主机时,SSH客户端会询问你是否要接受该主机的公钥。这个公钥将被保存到`known_hosts`文件中,以便将来的连接可以验证主机的身份。将`host_key_checking`设置为`False`会关闭这个验证步骤。
|
||||
|
62
CICD/Ansible/Docs/Ansible配置免密.md
Normal file
62
CICD/Ansible/Docs/Ansible配置免密.md
Normal file
@@ -0,0 +1,62 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible 配置免密
|
||||
|
||||
**配置主机**
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/hosts
|
||||
```
|
||||
|
||||
```bash
|
||||
[ssh]
|
||||
|
||||
192.168.1.10
|
||||
```
|
||||
|
||||
## SHELL配置免密
|
||||
|
||||
- 执行脚本
|
||||
|
||||
```bash
|
||||
bash /etc/ansible/ssh-copy.sh
|
||||
```
|
||||
|
||||
> 脚本会自动获取 `/etc/ansible/hosts` 内地址信息进行免密
|
||||
|
||||
## YML 配置服务器免密登录
|
||||
|
||||
- 编辑 SSH 主机配置文件填写服务器信息
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/ssh-hosts
|
||||
```
|
||||
|
||||
> 内容如下
|
||||
>
|
||||
> ```yml
|
||||
> [ssh] # 主机组
|
||||
>
|
||||
> # 192.168.1.[10:11] # 批量
|
||||
> # 192.168.1.10 # 单台
|
||||
> 192.168.1.10
|
||||
>
|
||||
> [ssh:vars] # 指定主机组中的共享变量
|
||||
>
|
||||
> ansible_ssh_user="root" # 填写服务器用户
|
||||
>
|
||||
> ansible_ssh_pass="" # 填写服务器密码
|
||||
> ```
|
||||
|
||||
- 执行免密
|
||||
|
||||
```bash
|
||||
ansible-playbook -i /etc/ansible/ssh-hosts /etc/ansible/key.yml
|
||||
```
|
||||
|
||||
- 验证
|
||||
|
||||
```bash
|
||||
ansible all -a ls
|
||||
```
|
||||
|
5
CICD/Ansible/README.md
Normal file
5
CICD/Ansible/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
*
|
||||
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible
|
20
CICD/Ansible/ansible.cfg
Normal file
20
CICD/Ansible/ansible.cfg
Normal file
@@ -0,0 +1,20 @@
|
||||
[defaults]
|
||||
host_key_checking = False
|
||||
|
||||
[inventory]
|
||||
|
||||
[privilege_escalation]
|
||||
|
||||
[paramiko_connection]
|
||||
|
||||
[ssh_connection]
|
||||
|
||||
[persistent_connection]
|
||||
|
||||
[accelerate]
|
||||
|
||||
[selinux]
|
||||
|
||||
[colors]
|
||||
|
||||
[diff]
|
1
CICD/Ansible/demo.j2
Normal file
1
CICD/Ansible/demo.j2
Normal file
@@ -0,0 +1 @@
|
||||
Hello, {{ name }}!
|
174
CICD/Ansible/demo.yml
Normal file
174
CICD/Ansible/demo.yml
Normal file
@@ -0,0 +1,174 @@
|
||||
- name: demo
|
||||
# hosts: master,node # 指定多个主机组
|
||||
hosts: all
|
||||
tasks:
|
||||
#############################################################################################
|
||||
# 拷贝文件
|
||||
#############################################################################################
|
||||
- copy:
|
||||
src: ./demo.tar
|
||||
dest: /root/demo.tar
|
||||
# 强制拷贝
|
||||
force: yes
|
||||
|
||||
#############################################################################################
|
||||
# 执行命令
|
||||
#############################################################################################
|
||||
# 执行命令 getenforce 并将结果保存到 out 变量
|
||||
- shell: getenforce
|
||||
register: out
|
||||
# 引用 out 变量, 输出结果
|
||||
- debug: msg="{{out}}"
|
||||
# 当 out.stdout 不等于 Disabled 时执行命令
|
||||
- shell: mkdir dingh
|
||||
when: out.stdout != "Disabled"
|
||||
|
||||
#############################################################################################
|
||||
# 安装软件
|
||||
#############################################################################################
|
||||
- yum:
|
||||
name: wget
|
||||
# 状态[默认 present], present 安装, absent 卸载, latest 更新
|
||||
state: present
|
||||
|
||||
#############################################################################################
|
||||
# 替换文件内容
|
||||
#############################################################################################
|
||||
- replace:
|
||||
# 文件路径
|
||||
path: /etc/selinux/config
|
||||
# 正则表达式
|
||||
regexp: "SELINUX=enforcing"
|
||||
# 替换内容
|
||||
replace: "SELINUX=disabled"
|
||||
|
||||
#############################################################################################
|
||||
# 管理服务
|
||||
#############################################################################################
|
||||
- service:
|
||||
# 服务名称
|
||||
name: docker
|
||||
# 状态[默认 started], started 启动, stopped 停止, restarted 重启, reloaded 重新加载
|
||||
state: restarted
|
||||
enabled: yes
|
||||
|
||||
#############################################################################################
|
||||
# 创建用户
|
||||
#############################################################################################
|
||||
- user:
|
||||
# 用户名
|
||||
name: demo
|
||||
# 状态[默认 present], present 创建, absent 删除
|
||||
state: present
|
||||
|
||||
#############################################################################################
|
||||
# 创建组
|
||||
#############################################################################################
|
||||
- group:
|
||||
# 组名
|
||||
name: demo
|
||||
# 状态[默认 present], present 创建, absent 删除
|
||||
state: present
|
||||
|
||||
#############################################################################################
|
||||
# 创建目录
|
||||
#############################################################################################
|
||||
- file:
|
||||
# 目录路径
|
||||
path: /root/demo
|
||||
# directory 目录
|
||||
state: directory
|
||||
# 权限
|
||||
mode: 0755
|
||||
# 所属用户
|
||||
owner: demo
|
||||
# 所属组
|
||||
group: demo
|
||||
|
||||
#############################################################################################
|
||||
# 创建软连接
|
||||
#############################################################################################
|
||||
- file:
|
||||
# 文件路径
|
||||
path: /etc/localtime
|
||||
# link 链接
|
||||
state: link
|
||||
src: /usr/share/zoneinfo/Asia/Shanghai
|
||||
|
||||
#############################################################################################
|
||||
# 删除软连接
|
||||
#############################################################################################
|
||||
- file:
|
||||
path: /root/demo
|
||||
state: absent # 删除软连接
|
||||
force: yes
|
||||
|
||||
#############################################################################################
|
||||
# 创建文件
|
||||
#############################################################################################
|
||||
- file:
|
||||
# 文件路径
|
||||
path: /root/demo
|
||||
# touch 创建文件
|
||||
state: touch
|
||||
|
||||
#############################################################################################
|
||||
# 引用模板
|
||||
#############################################################################################
|
||||
- template:
|
||||
# 模板文件
|
||||
src: ./demo.j2
|
||||
# 目标文件
|
||||
dest: /root/demo
|
||||
# 权限
|
||||
mode: 0755
|
||||
# 所属用户
|
||||
owner: demo
|
||||
# 所属组
|
||||
group: demo
|
||||
# 变量
|
||||
vars:
|
||||
name: World
|
||||
|
||||
#############################################################################################
|
||||
# 配置环境变量
|
||||
#############################################################################################
|
||||
- lineinfile:
|
||||
# 文件路径
|
||||
path: /etc/profile
|
||||
# 正则表达式
|
||||
regexp: "export PATH"
|
||||
# 插入内容
|
||||
line: "export PATH=$PATH:/usr/local/bin"
|
||||
|
||||
#############################################################################################
|
||||
# 配置 crontab 定时任务
|
||||
#############################################################################################
|
||||
- cron:
|
||||
# 任务名称
|
||||
name: "demo"
|
||||
# 任务内容
|
||||
job: "echo 'hello' > /root/demo.log"
|
||||
# 任务状态[默认 present], present 创建, absent 删除
|
||||
state: present
|
||||
|
||||
#############################################################################################
|
||||
# 忽略错误
|
||||
#############################################################################################
|
||||
- command: echo "hello"
|
||||
# 忽略错误
|
||||
ignore_errors: yes
|
||||
|
||||
#############################################################################################
|
||||
# 调试信息
|
||||
#############################################################################################
|
||||
- debug: msg="hello world"
|
||||
|
||||
#############################################################################################
|
||||
# 循环
|
||||
#############################################################################################
|
||||
- debug: msg="{{ item }}"
|
||||
with_items:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
3
CICD/Ansible/hosts
Normal file
3
CICD/Ansible/hosts
Normal file
@@ -0,0 +1,3 @@
|
||||
[host]
|
||||
|
||||
192.168.1.10
|
7
CICD/Ansible/key.yml
Normal file
7
CICD/Ansible/key.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
- hosts: all
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Non secret authentication
|
||||
|
||||
authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" state=present
|
30
CICD/Ansible/ssh-copy.sh
Normal file
30
CICD/Ansible/ssh-copy.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 填写服务器密码
|
||||
PASSWORD=""
|
||||
|
||||
# 获取需要免密服务器IP地址, 自动排除 hosts 文件内 # [] 行
|
||||
IP_ADDR=$(
|
||||
grep -vE '^\[|\]' /etc/ansible/hosts | grep -v '#' | sed '/^$/d'
|
||||
)
|
||||
|
||||
. /etc/init.d/functions
|
||||
# 一键生成密钥
|
||||
if ! [ -f ~/.ssh/id_rsa.pub ];then
|
||||
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa >/dev/null 2>&1
|
||||
echo -e "\033[32m======Local=========\033[0m"
|
||||
action "Generate the key!" /bin/true
|
||||
fi
|
||||
|
||||
# 批量发送密钥
|
||||
for i in $IP_ADDR;do
|
||||
sshpass -p$PASSWORD ssh-copy-id -i /root/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${i} >/dev/null 2>&1
|
||||
|
||||
if [ $? == 0 ];then
|
||||
echo -e "\033[32m=========`ssh $i hostname`==========\033[0m"
|
||||
action "发送成功!!!" /bin/true
|
||||
else
|
||||
echo -e "\033[31m======$i=======\033[0m"
|
||||
action "发送失败!!!" /bin/false
|
||||
fi
|
||||
done
|
10
CICD/Ansible/ssh-hosts
Normal file
10
CICD/Ansible/ssh-hosts
Normal file
@@ -0,0 +1,10 @@
|
||||
[ssh]
|
||||
|
||||
# 192.168.1.[10:11] # 批量
|
||||
# 192.168.1.10 # 单台
|
||||
|
||||
[ssh:vars]
|
||||
|
||||
ansible_ssh_user="root" # 用户
|
||||
|
||||
ansible_ssh_pass="" # 密码
|
3
CICD/Drone/Dockerfile
Normal file
3
CICD/Drone/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM busybox:latest
|
||||
|
||||
RUN echo "Hello World!"
|
32
CICD/Drone/Docs/Drone客户端安装.md
Normal file
32
CICD/Drone/Docs/Drone客户端安装.md
Normal file
@@ -0,0 +1,32 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Drone客户端安装
|
||||
|
||||
## 开始安装
|
||||
|
||||
[Homebrew官网](https://brew.sh/index_zh-cn)
|
||||
|
||||
- Linux 安装 Homebrew
|
||||
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
- MAC 使用 Homebrew 安装 Drone命令
|
||||
|
||||
```bash
|
||||
brew tap drone/drone
|
||||
brew install drone
|
||||
```
|
||||
|
||||
## 使用命令触发 Drone 构建
|
||||
|
||||
[Drone 命令官网](https://0-8-0.docs.drone.io/zh/cli-installation/)
|
||||
|
||||
```bash
|
||||
curl -X POST \
|
||||
-H "Authorization: Bearer $YOUR_API_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
https://your.drone.instance/api/repos/用户/仓库名/builds
|
||||
```
|
||||
|
32
CICD/Drone/Docs/README.md
Normal file
32
CICD/Drone/Docs/README.md
Normal file
@@ -0,0 +1,32 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Drone的使用
|
||||
|
||||
## 快速启动 Runner 执行端
|
||||
|
||||
```bash
|
||||
docker run --detach \
|
||||
--volume=/var/run/docker.sock:/var/run/docker.sock \
|
||||
--env=DRONE_RPC_PROTO=https \
|
||||
--env=DRONE_RPC_HOST= \
|
||||
--env=DRONE_RPC_SECRET= \
|
||||
--env=DRONE_RUNNER_CAPACITY=4 \
|
||||
--env=DRONE_RUNNER_NAME=runner \
|
||||
--restart=always \
|
||||
--name=runner \
|
||||
drone/drone-runner-docker
|
||||
```
|
||||
|
||||
> Runner 添加标签
|
||||
>
|
||||
> ```bash
|
||||
> --from-literal=DRONE_RUNNER_LABELS=<标签:值> \
|
||||
> ```
|
||||
|
||||
## Kubernetes部署文档
|
||||
|
||||
- [Helm部署Drone](https://gitee.com/offends/Kubernetes/blob/main/Helm/Helm%E9%83%A8%E7%BD%B2Drone.md)
|
||||
- [Helm部署Drone-Runner-Docker](https://gitee.com/offends/Kubernetes/blob/main/Helm/Helm%E9%83%A8%E7%BD%B2Drone-Runner-Docker.md)
|
||||
- [Helm部署Drone-Runner-Kube](https://gitee.com/offends/Kubernetes/blob/main/Helm/Helm%E9%83%A8%E7%BD%B2Drone-Runner-Kube.md)
|
||||
- [Helm部署Drone-Kubernetes-Secrets](https://gitee.com/offends/Kubernetes/blob/main/Helm/Helm%E9%83%A8%E7%BD%B2Drone-Kubernetes-Secrets.md)
|
||||
|
3
CICD/Drone/File/Demo.md
Normal file
3
CICD/Drone/File/Demo.md
Normal file
@@ -0,0 +1,3 @@
|
||||
*
|
||||
|
||||
This is a test file
|
27
CICD/Drone/File/admin-user.yaml
Normal file
27
CICD/Drone/File/admin-user.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: admin-user
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: admin-user
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cluster-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: admin-user
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: admin-token
|
||||
namespace: kube-system
|
||||
annotations:
|
||||
kubernetes.io/service-account.name: admin-user
|
||||
type: kubernetes.io/service-account-token
|
361
CICD/Drone/README.md
Normal file
361
CICD/Drone/README.md
Normal file
@@ -0,0 +1,361 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# DronePlugins构建Docker镜像
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :-------------: | :--------------: | :---------------------------------------------------: |
|
||||
| REGISTRY | 镜像仓库地址 | registry.cn-hangzhou.aliyuncs.com |
|
||||
| DOCKER_USERNAME | 镜像仓库登录用户 | |
|
||||
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
|
||||
| REPO | 镜像的仓库名称 | registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像名> |
|
||||
|
||||
## 插件 plugins/docker 参数
|
||||
|
||||
[官网文档](https://plugins.drone.io/plugins/docker)
|
||||
|
||||
| 属性 | 类型 | 可选/必选 | 描述 | 默认值 |
|
||||
| ------------------- | ------ | --------- | ------------------------------------------------------------ | ------------ |
|
||||
| registry | 字符串 | 可选 | 身份验证到该注册表的注册表 | 无 |
|
||||
| username | 字符串 | 可选 | 使用此用户名进行身份验证 | 无 |
|
||||
| password | 字符串 | 可选 | 使用此密码进行身份验证 | 推荐使用密钥 |
|
||||
| repo | 字符串 | 可选 | 图像的仓库名称 | 无 |
|
||||
| tags | 数组 | 可选 | 图像的仓库标签 | 无 |
|
||||
| secret | 字符串 | 可选 | 使用buildkit将秘密传递给dockerbuild。例如`id=mysecret,src=secret-file` | 无 |
|
||||
| dockerfile | 字符串 | 可选 | 要使用的Dockerfile | Dockerfile |
|
||||
| dry_run | 字符串 | 可选 | 如果不应在最后推送Docker镜像,则为布尔值 | 无 |
|
||||
| purge | 布尔值 | 可选 | 如果应在最后清理Docker镜像,则为布尔值 | true |
|
||||
| context | 字符串 | 可选 | 要使用的上下文路径,默认为git存储库的根目录 | 无 |
|
||||
| target | 字符串 | 可选 | 要使用的构建目标,必须在Docker文件中定义 | 无 |
|
||||
| force_tag | 布尔值 | 可选 | 替换现有匹配的镜像标签 | false |
|
||||
| insecure | 布尔值 | 可选 | 启用与此注册表的不安全通信 | false |
|
||||
| mirror | 字符串 | 可选 | 使用镜像注册表而不是直接从中央Hub拉取图像 | 无 |
|
||||
| bip | 布尔值 | 可选 | 用于传递桥接IP | false |
|
||||
| custom_dns | 字符串 | 可选 | 为容器设置自定义DNS服务器 | 无 |
|
||||
| custom_dns_search | 字符串 | 可选 | Docker守护程序DNS搜索域 | 无 |
|
||||
| storage_driver | 字符串 | 可选 | 支持`aufs`、`overlay`或`vfs`驱动器 | 无 |
|
||||
| storage_path | 字符串 | 可选 | Docker守护程序存储路径 | 无 |
|
||||
| build_args | 字符串 | 可选 | 传递给docker build的自定义参数 | 无 |
|
||||
| build_args_from_env | 字符串 | 可选 | 将环境变量作为docker build的自定义参数传递 | 无 |
|
||||
| auto_tag | 布尔值 | 可选 | 根据git分支和git标签自动生成标签名称 | false |
|
||||
| auto_tag_suffix | 字符串 | 可选 | 使用此后缀生成标签名称 | 无 |
|
||||
| debug | 布尔值 | 可选 | 以详细调试模式启动docker守护进程 | false |
|
||||
| launch_debug | 布尔值 | 可选 | 以详细调试模式启动docker守护进程 | false |
|
||||
| mtu | 字符串 | 可选 | Docker守护程序自定义MTU设置 | 无 |
|
||||
| ipv6 | 字符串 | 可选 | Docker守护程序IPv6网络 | 无 |
|
||||
| experimental | 布尔值 | 可选 | Docker守护程序实验模式 | false |
|
||||
| daemon_off | 布尔值 | 可选 | 不启动docker守护进程 | false |
|
||||
| cache_from | 字符串 | 可选 | 考虑作为缓存源的镜像 | 无 |
|
||||
| squash | 布尔值 | 可选 | 在构建时压缩层 | false |
|
||||
| pull_image | 布尔值 | 可选 | 强制在构建时拉取基础镜像 | false |
|
||||
| compress | 布尔值 | 可选 | 使用gzip压缩构建上下文 | false |
|
||||
| custom_labels | 字符串 | 可选 | 附加的k=v标签 | 无 |
|
||||
| label_schema | 字符串 | 可选 | label-schema标签 | 无 |
|
||||
| email | 字符串 | 可选 | Docker电子邮件 | 无 |
|
||||
| no_cache | 字符串 | 可选 | 不使用缓存的中间容器 | 无 |
|
||||
| add_host | 字符串 | 可选 | 附加的主机:IP映射 | 无 |
|
||||
| platform | 字符串 | 可选 | 指定构建输出的目标平台,例如`linux/amd64`、`linux/arm64`或`darwin/amd64` | 无 |
|
||||
| ssh-agent-key | 字符串 | 可选 | 用于ssh直通的私钥,参见https://docs.docker.com/engine/reference/commandline/buildx_build/#ssh | 推荐使用密钥 |
|
||||
|
||||
|
||||
|
||||
# Drone Webhook 通知构建结果
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-build-webhook.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :---------: | :-----------------: | :----------------------------------------------: |
|
||||
| WEBHOOK_URL | 发送 Webhook 的 URL | https://open.feishu.cn/open-apis/bot/v2/hook/*** |
|
||||
|
||||
## 插件 plugins/webhook 参数
|
||||
|
||||
| 属性名 | 类型 | 必需性 | 描述 | 默认值 |
|
||||
| ------------ | ------- | -------- | ------------------------ | ---------------- |
|
||||
| urls | string | required | 发送 Webhook 的 URL | none |
|
||||
| username | string | optional | 用于基本身份验证的用户名 | none |
|
||||
| password | string | optional | 用于基本身份验证的密码 | none |
|
||||
| SECRET | string | | 推荐使用的密钥 | none |
|
||||
| method | string | optional | 请求使用的 HTTP 方法 | POST |
|
||||
| content_type | string | optional | Webhook 的内容类型 | application/json |
|
||||
| template | string | optional | Webhook 的自定义模板 | none |
|
||||
| headers | array | optional | 自定义标头的映射 | none |
|
||||
| skip_verify | boolean | optional | 跳过 SSL 验证 | false |
|
||||
| debug | boolean | optional | 启用调试信息 | false |
|
||||
|
||||
|
||||
|
||||
# Drone Dind 构建 Docker 镜像
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 开启 Trusted (未开启无法挂载Docker守护进程)
|
||||
|
||||
- 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-dind.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :-------------: | :--------------: | :-------------------------------: |
|
||||
| REGISTRY | 镜像仓库地址 | registry.cn-hangzhou.aliyuncs.com |
|
||||
| DOCKER_USERNAME | 镜像仓库登录用户 | |
|
||||
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
|
||||
| NAMESPACE | 镜像的仓库名称 | <命名空间> |
|
||||
| IMAGENAME | 镜像名称 | |
|
||||
| IMAGETAG | 镜像标签 | |
|
||||
|
||||
|
||||
|
||||
# Drone 构建多架构 Docker 镜像
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-buildx.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :-------------: | :--------------: | :---------------------------: |
|
||||
| REGISTRY | 镜像仓库地址 | docker.io |
|
||||
| DOCKER_USERNAME | 镜像仓库登录用户 | |
|
||||
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
|
||||
| REPO | 镜像的仓库名称 | docker.io/<命名空间>/<镜像名> |
|
||||
|
||||
|
||||
|
||||
# Drone Scp 文件到服务器内
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-scp.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :------: | :----------------: | :----------: |
|
||||
| HOST | 目标主机机器 | 192.168.1.10 |
|
||||
| USER | 目标主机机器用户名 | Root |
|
||||
| PASSWORD | 目标主机机器密码 | |
|
||||
| PORT | 目标主机机器端口 | 22 |
|
||||
|
||||
## 插件 appleboy/drone-scp 参数
|
||||
|
||||
[官方文档](https://plugins.drone.io/plugins/scp)
|
||||
|
||||
| 属性名 | 类型 | 是否必需 | 描述 | 默认值 |
|
||||
| -------------------- | ------ | -------- | ---------------------------- | ------ |
|
||||
| host | 字符串 | 必需 | 目标主机机器。 | 无 |
|
||||
| port | 数字 | 可选 | 目标主机机器端口。 | 22 |
|
||||
| username | 字符串 | 必需 | 目标主机机器用户名。 | 无 |
|
||||
| password | 字符串 | 必需 | 目标主机机器密码。 | 无 |
|
||||
| key | 字符串 | 可选 | 目标主机机器私钥。建议保密。 | 无 |
|
||||
| passphrase | 字符串 | 可选 | 私钥密码。建议保密。 | 无 |
|
||||
| target | 字符串 | 必需 | 目标主机机器路径。 | 无 |
|
||||
| source | 字符串 | 必需 | 源文件路径。 | 无 |
|
||||
| rm | 布尔值 | 可选 | 复制后是否删除源文件。 | false |
|
||||
| timeout | 数字 | 可选 | 超时时间(秒)。 | 30 |
|
||||
| command_timeout | 数字 | 可选 | 命令超时时间(分钟)。 | 10 |
|
||||
| strip_components | 数字 | 可选 | 从目标路径中去除的组件数。 | 0 |
|
||||
| tar_tmp_path | 字符串 | 可选 | 用于临时存储tar文件的路径。 | 无 |
|
||||
| tar_exec | 字符串 | 可选 | Tar命令。 | 无 |
|
||||
| overwrite | 布尔值 | 可选 | 如果目标文件存在,是否覆盖。 | false |
|
||||
| proxy_host | 字符串 | 可选 | 代理主机。 | 无 |
|
||||
| proxy_port | 数字 | 可选 | 代理端口。 | 0 |
|
||||
| proxy_username | 字符串 | 可选 | 代理用户名。 | 无 |
|
||||
| proxy_password | 字符串 | 可选 | 代理密码。建议保密。 | 无 |
|
||||
| proxy_key | 字符串 | 可选 | 代理私钥。建议保密。 | 无 |
|
||||
| proxy_key_path | 字符串 | 可选 | 代理私钥路径。 | 无 |
|
||||
| proxy_key_passphrase | 字符串 | 可选 | 代理私钥密码。建议保密。 | 无 |
|
||||
|
||||
|
||||
|
||||
# Drone Ssh 操作服务器
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-ssh.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :------: | :----------------: | :----------: |
|
||||
| HOST | 目标主机机器 | 192.168.1.10 |
|
||||
| USER | 目标主机机器用户名 | Root |
|
||||
| PASSWORD | 目标主机机器密码 | |
|
||||
| PORT | 目标主机机器端口 | 22 |
|
||||
|
||||
## 插件 appleboy/drone-ssh 参数
|
||||
|
||||
[官方文档](https://plugins.drone.io/plugins/ssh)
|
||||
|
||||
| 属性名 | 类型 | 是否必须 | 描述 | 默认值 |
|
||||
| --------------- | ------ | -------- | ---------------------------- | -------------- |
|
||||
| host | 字符串 | 必须 | 服务器的主机名或IP地址。 | 无 |
|
||||
| port | 字符串 | 可选 | 服务器的端口。 | 22 |
|
||||
| username | 字符串 | 可选 | 目标主机用户的帐户。 | 无 |
|
||||
| password | 字符串 | 可选 | 登录到服务器的密码。 | 无(建议保密) |
|
||||
| key | 字符串 | 可选 | 用户私钥的明文。 | 无(建议保密) |
|
||||
| key_path | 字符串 | 可选 | 登录到服务器的私钥路径。 | 无 |
|
||||
| envs | 数组 | 可选 | 在脚本部分可用的自定义秘密。 | 无 |
|
||||
| script | 字符串 | 可选 | 在服务器上执行的命令。 | 无 |
|
||||
| script_stop | 布尔值 | 可选 | 在第一次失败后停止脚本执行。 | false |
|
||||
| timeout | 字符串 | 可选 | SSH连接建立的最长时间。 | 30秒 |
|
||||
| command_timeout | 字符串 | 可选 | 执行命令的最长时间。 | 10分钟 |
|
||||
| proxy_host | 字符串 | 可选 | 代理的主机名或IP地址。 | 无 |
|
||||
| proxy_port | 字符串 | 可选 | 代理端口。 | 无 |
|
||||
| proxy_username | 字符串 | 可选 | 代理用户名。 | 无 |
|
||||
| proxy_password | 字符串 | 可选 | 代理密码。 | 无(建议保密) |
|
||||
| proxy_key | 字符串 | 可选 | 代理私钥的明文。 | 无(建议保密) |
|
||||
| proxy_key_path | 字符串 | 可选 | 登录到代理的私钥路径。 | 无 |
|
||||
|
||||
|
||||
|
||||
# Drone Git Push 代码
|
||||
|
||||
> 你不会,俺不会,大家一起都不会!
|
||||
|
||||
## 准备环境
|
||||
|
||||
- 克隆仓库到本地
|
||||
|
||||
```bash
|
||||
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
|
||||
```
|
||||
|
||||
- 修改 Dockerfile 并上传至自己的仓库
|
||||
|
||||
- 进入 Drone Web页面点击 SYNC 同步仓库
|
||||
|
||||
- 点击 ACTIVATE REPOSITORY 激活存储库
|
||||
|
||||
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
|
||||
|
||||
```bash
|
||||
.drone-git-push.yml
|
||||
```
|
||||
|
||||
- 配置 Secrets
|
||||
|
||||
| 变量名 | 解释 | 例 |
|
||||
| :-----: | :-------------------: | :-----------------------: |
|
||||
| REMOTE | 目标远程仓库 | <仓库 clone 地址> |
|
||||
| SSH_KEY | 远程机器的私有SSH密钥 | <应该是 .ssh/id_rsa 文件> |
|
||||
|
||||
## 插件 appleboy/drone-git-push 参数
|
||||
|
||||
[官方文档](https://plugins.drone.io/plugins/git-push)
|
||||
|
||||
| 属性名 | 类型 | 是否必须 | 描述 | 默认值 |
|
||||
| -------------- | ------ | -------- | -------------------------------------- | ---------------------------- |
|
||||
| ssh_key | 字符串 | 可选 | 远程机器的私有SSH密钥。 | 无 |
|
||||
| remote | 字符串 | 必须 | 目标远程仓库(如果为空,则假定存在)。 | 无 |
|
||||
| remote_name | 字符串 | 可选 | 用于本地操作的远程的名称。 | deploy |
|
||||
| branch | 字符串 | 可选 | 要推送到的目标分支。 | master |
|
||||
| local_branch | 字符串 | 可选 | 从中推送的本地分支或引用。 | HEAD |
|
||||
| path | 字符串 | 可选 | 仓库的路径。 | 当前仓库 |
|
||||
| force | 布尔值 | 可选 | 使用 --force 标志进行强制推送。 | false |
|
||||
| skip_verify | 布尔值 | 可选 | 跳过HTTPS证书的验证。 | false |
|
||||
| commit | 布尔值 | 可选 | 在推送之前添加并提交仓库的内容。 | false |
|
||||
| commit_message | 字符串 | 可选 | 为提交添加自定义消息。 | [skip ci] Commit dirty state |
|
||||
| empty_commit | 布尔值 | 可选 | 如果没有更改,则创建一个空的提交。 | false |
|
||||
| author_name | 字符串 | 可选 | 提交的作者姓名。 | commiter name |
|
||||
| author_email | 字符串 | 可选 | 提交的作者电子邮件。 | commiter email |
|
||||
| followtags | 布尔值 | 可选 | 使用 --follow-tags 选项推送。 | false |
|
72
CICD/Drone/YML/.drone-build-webhook.yml
Normal file
72
CICD/Drone/YML/.drone-build-webhook.yml
Normal file
@@ -0,0 +1,72 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Build Dockerfile
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
# 指定架构,需在 runner 配置环境变量中指定 DRONE_RUNNER_ARCH,或自动获取
|
||||
# platform:
|
||||
# os: linux
|
||||
# arch: amd64
|
||||
|
||||
# 指定运行环境节点,需在 runner 配置环境变量中指定 DRONE_RUNNER_LABELS
|
||||
# node:
|
||||
# 标签:值
|
||||
|
||||
# 使用插件构建镜像
|
||||
steps:
|
||||
- name: Build Dockerfile
|
||||
image: plugins/docker
|
||||
# 仅当本地不存在该镜像时才拉取
|
||||
pull: if-not-exists
|
||||
settings:
|
||||
registry:
|
||||
from_secret: REGISTRY
|
||||
username:
|
||||
from_secret: DOCKER_USERNAME
|
||||
password:
|
||||
from_secret: DOCKER_PASSWORD
|
||||
repo:
|
||||
from_secret: REPO
|
||||
# 是否禁止推送镜像
|
||||
dry_run: false
|
||||
tags:
|
||||
- latest
|
||||
# 要使用的上下文路径,默认为 git 存储库的根目录
|
||||
context: ./
|
||||
# 要使用的 dockerfile 路径,默认为 git 存储库的根目录
|
||||
dockerfile: ./Dockerfile
|
||||
- name: 结果通知
|
||||
image: plugins/webhook
|
||||
depends_on: [Build Dockerfile]
|
||||
settings:
|
||||
urls:
|
||||
from_secret: WEBHOOK_URL
|
||||
|
||||
# # 飞书机器人
|
||||
# 官网飞书机器人使用指南: https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot
|
||||
# 消息类型指南: https://open.feishu.cn/community/articles/7271149634339422210
|
||||
method: POST
|
||||
content_type: "application/json"
|
||||
# 通知内容,读取上一步执行结果,如果成功则返回构建成功,失败则返回构建失败
|
||||
template: >
|
||||
{
|
||||
"msg_type": "text",
|
||||
"content": {
|
||||
"text":
|
||||
{{#success build.status}}
|
||||
"镜像构建成功"
|
||||
{{else}}
|
||||
"镜像构建失败"
|
||||
{{/success}}
|
||||
}
|
||||
}
|
||||
|
||||
# 无论构建成功或失败都通知
|
||||
when:
|
||||
status:
|
||||
- success
|
||||
- failure
|
38
CICD/Drone/YML/.drone-buildx.yml
Normal file
38
CICD/Drone/YML/.drone-buildx.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Build Dockerfile
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
# 指定运行环境节点,需在 runner 配置环境变量中指定 DRONE_RUNNER_LABELS
|
||||
# node:
|
||||
# 标签:值
|
||||
|
||||
# 使用插件构建镜像
|
||||
steps:
|
||||
- name: latest
|
||||
image: thegeeklab/drone-docker-buildx
|
||||
privileged: true
|
||||
settings:
|
||||
registry:
|
||||
from_secret: REGISTRY
|
||||
username:
|
||||
from_secret: DOCKER_USERNAME
|
||||
password:
|
||||
from_secret: DOCKER_PASSWORD
|
||||
repo:
|
||||
from_secret: REPO
|
||||
purge: true
|
||||
compress: true
|
||||
platforms:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
context: ./
|
||||
dockerfile: ./Dockerfile
|
||||
tags: latest
|
||||
when:
|
||||
branch:
|
||||
- main
|
22
CICD/Drone/YML/.drone-deploy.yml
Normal file
22
CICD/Drone/YML/.drone-deploy.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
kind: pipeline
|
||||
name: default
|
||||
|
||||
trigger:
|
||||
event:
|
||||
include:
|
||||
- custom
|
||||
|
||||
steps:
|
||||
- name: Update-Deployment
|
||||
image: quay.io/honestbee/drone-kubernetes
|
||||
settings:
|
||||
kubernetes_server:
|
||||
from_secret: KUBERNESTES_SERVER
|
||||
kubernetes_token:
|
||||
from_secret: KUBERNESTES_TOKEN
|
||||
namespace: default
|
||||
deployment: nginx
|
||||
repo: nginx
|
||||
container: nginx
|
||||
tag:
|
||||
- latest
|
61
CICD/Drone/YML/.drone-dind.yml
Normal file
61
CICD/Drone/YML/.drone-dind.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Build Dockerfile
|
||||
|
||||
# platform:
|
||||
# os: linux
|
||||
# arch: amd64
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
steps:
|
||||
- name: Dockerfile
|
||||
image: docker:dind
|
||||
|
||||
# 挂载Docker守护进程
|
||||
volumes:
|
||||
- name: dockersock
|
||||
path: /var/run/docker.sock
|
||||
|
||||
# 环境变量
|
||||
environment:
|
||||
DOCKER_USERNAME:
|
||||
from_secret: DOCKER_USERNAME
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: DOCKER_PASSWORD
|
||||
NAMESPACE:
|
||||
from_secret: NAMESPACE
|
||||
# 镜像名
|
||||
IMAGENAME: demo
|
||||
# 镜像标签
|
||||
IMAGETAG: latest
|
||||
# 镜像仓库私有地址
|
||||
REGISTRY:
|
||||
from_secret: REGISTRY
|
||||
|
||||
# 执行命令
|
||||
commands:
|
||||
# 推送镜像至阿里云
|
||||
# - docker build -t registry.cn-hangzhou.aliyuncs.com/$NAMESPACE/$IMAGENAME:$IMAGETAG .
|
||||
# - docker login registry.cn-hangzhou.aliyuncs.com -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
||||
# - docker push registry.cn-hangzhou.aliyuncs.com/$NAMESPACE/$IMAGENAME:$IMAGETAG
|
||||
|
||||
# 推送镜像至DockerHub
|
||||
# - docker build -t $DOCKER_USERNAME/$IMAGENAME:$IMAGETAG .
|
||||
# - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
||||
# - docker push $DOCKER_USERNAME/$IMAGENAME:$IMAGETAG
|
||||
|
||||
# 推送镜像至私有仓库
|
||||
- docker build -t $REGISTRY/$NAMESPACE/$IMAGENAME:$IMAGETAG .
|
||||
- docker login $REGISTRY -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
||||
- docker push $REGISTRY/$NAMESPACE/$IMAGENAME:$IMAGETAG
|
||||
|
||||
|
||||
# 挂载Docker守护进程
|
||||
volumes:
|
||||
- name: dockersock
|
||||
host:
|
||||
path: /var/run/docker.sock
|
24
CICD/Drone/YML/.drone-git-push.yml
Normal file
24
CICD/Drone/YML/.drone-git-push.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Git Push
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
steps:
|
||||
- name: Git Push
|
||||
image: appleboy/drone-git-push
|
||||
# 仅当本地不存在该镜像时才拉取
|
||||
pull: if-not-exists
|
||||
settings:
|
||||
branch: main
|
||||
remote:
|
||||
from_secret: REMOTE
|
||||
ssh_key:
|
||||
from_secret: SSH_KEY
|
||||
path:
|
||||
force: false
|
||||
commit: true
|
||||
commit_message: "Update From Drone"
|
31
CICD/Drone/YML/.drone-scp.yml
Normal file
31
CICD/Drone/YML/.drone-scp.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Scp File
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
steps:
|
||||
- name: Scp File
|
||||
image: appleboy/drone-scp
|
||||
# 仅当本地不存在该镜像时才拉取
|
||||
pull: if-not-exists
|
||||
settings:
|
||||
host:
|
||||
from_secret: HOST
|
||||
user:
|
||||
from_secret: USER
|
||||
password:
|
||||
from_secret: PASSWORD
|
||||
port:
|
||||
from_secret: PORT
|
||||
# 源文件路径
|
||||
source: File/*
|
||||
strip_components: 1
|
||||
# 目标路径
|
||||
target: /root/
|
||||
when:
|
||||
branch:
|
||||
- main
|
29
CICD/Drone/YML/.drone-ssh.yml
Normal file
29
CICD/Drone/YML/.drone-ssh.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Ssh Server
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
steps:
|
||||
- name: Ssh Server
|
||||
image: appleboy/drone-ssh
|
||||
# 仅当本地不存在该镜像时才拉取
|
||||
pull: if-not-exists
|
||||
settings:
|
||||
host:
|
||||
from_secret: HOST
|
||||
user:
|
||||
from_secret: USER
|
||||
password:
|
||||
from_secret: PASSWORD
|
||||
port:
|
||||
from_secret: PORT
|
||||
# 执行命令
|
||||
script:
|
||||
- ls
|
||||
when:
|
||||
branch:
|
||||
- main
|
44
CICD/Drone/YML/.drone.yml
Normal file
44
CICD/Drone/YML/.drone.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: Build Dockerfile
|
||||
|
||||
# 手动触发或接口触发
|
||||
trigger:
|
||||
event:
|
||||
- custom
|
||||
|
||||
# 指定架构,需在 runner 配置环境变量中指定 DRONE_RUNNER_ARCH,或自动获取
|
||||
# platform:
|
||||
# os: linux
|
||||
# arch: amd64
|
||||
|
||||
# 指定运行环境节点,需在 runner 配置环境变量中指定 DRONE_RUNNER_LABELS
|
||||
# node:
|
||||
# 标签:值
|
||||
|
||||
# 使用插件构建镜像
|
||||
steps:
|
||||
- name: Build Dockerfile
|
||||
image: plugins/docker
|
||||
# 仅当本地不存在该镜像时才拉取
|
||||
pull: if-not-exists
|
||||
settings:
|
||||
registry:
|
||||
from_secret: REGISTRY
|
||||
username:
|
||||
from_secret: DOCKER_USERNAME
|
||||
password:
|
||||
from_secret: DOCKER_PASSWORD
|
||||
repo:
|
||||
from_secret: REPO
|
||||
# 是否禁止推送镜像
|
||||
dry_run: false
|
||||
tags:
|
||||
- latest
|
||||
# 要使用的上下文路径,默认为 git 存储库的根目录
|
||||
context: ./
|
||||
# 要使用的 dockerfile 路径,默认为 git 存储库的根目录
|
||||
dockerfile: ./Dockerfile
|
||||
when:
|
||||
branch:
|
||||
- main
|
7
CICD/Github/.github/workflows/dependabot.yml
vendored
Normal file
7
CICD/Github/.github/workflows/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 20
|
31
CICD/Github/.github/workflows/images.yml
vendored
Normal file
31
CICD/Github/.github/workflows/images.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Build-Work
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types:
|
||||
- StartAction-Build-Images
|
||||
|
||||
jobs:
|
||||
Build-Images:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
-
|
||||
name: Build and push image
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: ./
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/demo:v1.0
|
5
CICD/Github/Dockerfile
Normal file
5
CICD/Github/Dockerfile
Normal file
@@ -0,0 +1,5 @@
|
||||
FROM busybox:latest
|
||||
|
||||
RUN echo "启动成功" > /file.txt
|
||||
|
||||
CMD ["tail","-f","/file.txt"]
|
189
CICD/Github/README.md
Normal file
189
CICD/Github/README.md
Normal file
@@ -0,0 +1,189 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# GithubAction学习
|
||||
|
||||
## 触发Action构建
|
||||
|
||||
```bash
|
||||
curl -X POST https://api.github.com/repos/$用户/$仓库名/dispatches -H "Accept: application/vnd.github.everest-preview+json" -H "Authorization: token $YOUR_API_TOKEN" --data '{"event_type": "StartAction"}'
|
||||
```
|
||||
|
||||
## GITHUB设置Secrets
|
||||
|
||||
网址为:`仓库地址/settings/secrets/actions`
|
||||
|
||||
## 构建示例
|
||||
|
||||
### 构建触发
|
||||
|
||||
```yaml
|
||||
#定时任务触发构建
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
#通过接口触发构建
|
||||
on:
|
||||
repository_dispatch:
|
||||
types:
|
||||
- StartAction
|
||||
|
||||
#通过 push 代码触发构建
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
# 当 push 到 master 分支,或者创建以 v 开头的 tag 时触发
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- v*
|
||||
```
|
||||
|
||||
### 本地执行命令类
|
||||
|
||||
```yaml
|
||||
name: Build
|
||||
|
||||
#本地执行命令类
|
||||
jobs:
|
||||
run-docker-command:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Run Docker Command
|
||||
run: |
|
||||
docker run --name mysql \
|
||||
-e MYSQL_ROOT_PASSWORD=${{ secrets.PASSWORD }} \
|
||||
${{ secrets.IMAGES }}
|
||||
```
|
||||
|
||||
### 构建Docker镜像
|
||||
|
||||
```yaml
|
||||
name: Build-Images
|
||||
|
||||
# Docker构建镜像并 push 到仓库内
|
||||
jobs:
|
||||
Build-Images-One:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
-
|
||||
name: Build and push image
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: ./
|
||||
file: ./Dockerfile
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_STASH }}:${{ secrets.TAG }}
|
||||
|
||||
Build--Images-Two:
|
||||
needs: Build-Images-One #等待 One 构建成功后开始执行
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Check Out
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
context: ./demo/
|
||||
file: ./demo/Dockerfile
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ secrets.DOCKER_HUB_STASH }}:${{ secrets.TAG }}
|
||||
```
|
||||
|
||||
### 构建多架构镜像
|
||||
|
||||
[官方Demo](https://docs.docker.com/build/ci/github-actions/multi-platform/)
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
#支持列表:https://github.com/docker-library/official-images#architectures-other-than-amd64
|
||||
#platforms: |
|
||||
#linux/arm64
|
||||
#linux/amd64
|
||||
#linux/arm/v5
|
||||
#linux/arm/v7
|
||||
#linux/386 #适用于 x86 32 位架构的 Docker 镜像
|
||||
#linux/mips64le #适用于 MIPS 64 位架构的 Docker 镜像
|
||||
#linux/ppc64le #适用于 IBM Power 架构的 Docker 镜像
|
||||
#linux/s390x #适用于 IBM Z 架构的 Docker 镜像
|
||||
push: true
|
||||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/demo:latest
|
||||
```
|
||||
|
||||
### Dependabot实现更新项目中的依赖项
|
||||
|
||||
当你在项目中使用很多第三方库(例如JavaScript项目中的npm包)时,这些库会不断更新,有时是为了添加新功能,有时是为了修复安全漏洞。手动跟踪和更新这些库可能既费时又容易出错。这就是Dependabot发挥作用的地方。
|
||||
|
||||
[官方文档](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)
|
||||
|
||||
```yaml
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 20
|
||||
```
|
||||
|
6
CICD/Jenkins/README.md
Normal file
6
CICD/Jenkins/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
*
|
||||
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Jenkins
|
||||
|
Reference in New Issue
Block a user